Подтвердить что ты не робот

Ошибка PyCharm: "Нет модуля" при попытке импортировать собственный модуль (python script)

Я написал модуль (файл my_mod.py, находящийся в папке my_module). В настоящее время я работаю в файле cool_script.py, который находится в папке cur_proj. Я открыл папку в PyCharm, используя File - open (и я предполагаю, что это проект PyCharm).

В ProjectView (CMD-7) я вижу проект cur_proj (красным) и в разделе "Внешние библиотеки" я вижу my_module. В cool_script.py я могу написать

from my_module import my_mod as mm

и PyCharm даже делает предложение для my_mod. Пока все хорошо.

Однако, когда я пытаюсь запустить cool_script.py, PyCharm говорит мне "Нет модуля с именем my_module"

Мне это кажется странным, потому что

A) в терминале (OS 10.10.2), в python, я могу импортировать модуль без проблем - в PYTHONPATH есть соответствующая запись в .bashrc

B) в PyCharm - Настройки - Project cur_proj - Project Interpreter - CogWheel рядом с интерпретатором python - больше - показывает пути для выбранного значка интерпретатора, появляются пути от PYTHONPATH (как мне кажется, они должны)

Следовательно, почему я получаю ошибку при попытке запустить cool_script.py? - Что мне не хватает?

Примечания:

Добавление 2015-фев-25

Когда я иду в PyCharm для запуска - Edit Configurations, для моего текущего проекта есть два параметра, которые выбраны с помощью галочки: "Добавить корни контента в PYTHONPATH" и "Добавить корни источника в PYTHONPATH". Когда у меня есть оба флажка, я могу загрузить свой модуль.

Итак, теперь это работает - , но почему?

Появились дополнительные вопросы:

  • Что такое "корни контента" и что такое "исходные корни"? И почему добавление чего-то к PYTHONPATH заставляет его как-то сломаться?
  • Должен ли я все раз отмечать обе эти опции (так же, как и в настройках по умолчанию, а не только для конкретных конфигураций проекта (левая панель диалогового окна "Запуск/отладка конфигурации" )?
4b9b3361

Ответ 1

Если ваш собственный модуль находится в одном и том же пути, вам нужно отметить путь как Sources Root. В проводнике проекта щелкните правой кнопкой мыши каталог, который вы хотите импортировать. Затем выберите Mark Directory As и выберите Sources Root.

Надеюсь, это поможет.

Ответ 2

Сообщество PyCharm/Профессиональное 2018.2.1

У меня была эта проблема только сейчас, и я смог решить ее так же, как @Beatriz Fonseca и @Julie.

Если вы перейдете в меню " File → " Settings → " Project: YourProjectName → " Project Structure, у вас будет макет каталога проекта, в котором вы сейчас работаете. Вам придется пройти через ваши каталоги и назовите их как Source каталог для всех исходных файлов или в качестве папки Resource для файлов, которые предназначены исключительно для импорта.

Вы также захотите убедиться, что вы поместите файлы __init__.py в свои каталоги ресурсов или действительно в любом месте, из которого вы хотите импортировать, и это будет отлично работать.

Я надеюсь, что этот ответ поможет кому-то, и, надеюсь, JetBrains исправит эту неприятную ошибку.

Ответ 3

Я попытался указать местоположение, где находятся мои файлы.

например. E:\git_projects\My_project\__init__.py is my location.

Я отправился в File → Setting → Project: My_project → Project Structure и добавил корневой каталог контента, чтобы упомянуть место E:\git_projects\My_project

это сработало для меня.

Ответ 4

my_module - это папка, а не модуль, и вы не можете импортировать папку, попробуйте переместить my_mod.py в ту же папку, что и cool_script.py, а затем выполните import my_mod as mm. Это связано с тем, что python работает только в текущем каталоге и sys.path, и поэтому не найдет my_mod.py, если он не находится в том же каталоге

Или вы можете посмотреть здесь для ответа, рассказывающего вам, как импортировать из других каталогов.

Что касается других вопросов, я не знаю, поскольку я не использую PyCharm.

Ответ 5

Это может быть вызвано, когда интерпретатор Python не может найти ваш код. Вы должны явно указать Python, чтобы найти свой код в этом месте.

Для этого:

  • Перейдите на консоль python.
  • Добавить sys.path.extend(['your module location']) в консоль Python.

В вашем случае:

  • Перейдите на консоль python,
  • В начале напишите следующий код:

    import sys
    sys.path.extend([my module URI location])
    
  • После того, как вы написали это выражение, вы можете выполнить следующую команду:

    from mymodule import functions
    

Ответ 6

Я получал сообщение об ошибке "Добавить исходные корни в PYTHONPATH". Моя проблема заключалась в том, что у меня было две папки с тем же именем, такие как project/subproject1/thing/src и project/subproject2/thing/src и оба они были отмечены как исходный корень. Когда я переименовал одну из "thing" папки для "thing1" (любое уникальное имя), он работал.

Возможно, если PyCharm автоматически добавляет выбранные исходные корни, он не использует полный путь и, следовательно, смешивает папки с тем же именем.

Ответ 7

Ключевым путающим шагом, который необходимо сделать, является воссоздание конфигурации запуска для исходного файла, который вы пытаетесь выполнить, чтобы IDE собирала новые пути.

То, что на самом деле сработало для меня, это перейти к Run/Edit Configurations..., выберите конфигурацию файла, который вы пытаетесь запустить с левой стороны, снимите флажок "Добавить корни источника в PYTHONPATH", сохраните, а затем вернитесь и установите флажок и сохраните. Тогда он будет работать.

Ответ 8

ТАК если вы идете в

→ Настройка → Проект: My_project → Структура проекта,

Просто каталог, в котором доступен исходный код, и пометьте его как "Sources" (вы можете увидеть его в том же окне). Каталог с исходным кодом должен стать синим. Теперь вы можете импортировать в модули, находящиеся в том же каталоге.

Ответ 9

Корни содержимого - это папки, содержащие код проекта, а исходные корни также определены. Единственное различие, которое я понял, заключалось в том, что код исходных корней создается до кода в корне содержимого.

Отмена их не повлияет на время выполнения до того момента, когда вы не создадите отдельные модули в своем пакете, которые вручную подключены к Django. Это означает, что если какой-либо из ваших файлов не удерживает "от импорта django...", или любая из функций не вызывается через django, снятие этих двух параметров приведет к сбою.

Обновление - проблема возникает только при использовании Virtual Environmanet и только при управлении проектом через предоставленный терминал. Причина, по которой терминал по-прежнему работает по умолчанию по умолчанию, а не по виртуальному env. в то время как панель управления python django работает нормально.

Ответ 10

Pycharm 2017.1.1

  1. Нажмите View->ToolBar и View->Tool Buttons
  2. На левой панели будет видна Project, щелкните ее правой кнопкой мыши и нажмите Autoscroll to source а затем запустите свой код.

Это сработало для меня.

Ответ 11

Решение этой проблемы без указания Mark Directory в качестве исходного корня - это Edit Run Configurations и в Execution выберите опцию "Redirect input from" и выберите скрипт, который вы хотите запустить. Это работает, потому что затем обрабатывается так, как если бы скрипт выполнялся интерактивно в этом каталоге. Однако Python по-прежнему будет отмечать имя модуля с ошибкой "без модуля с именем x":

Redirect input from:

Когда интерпретатор выполняет оператор импорта, он ищет x.py в списке каталогов, собранных из следующих источников:

  1. Каталог, из которого был запущен входной скрипт, или текущий каталог, если интерпретатор запускается в интерактивном режиме
  2. Список каталогов, содержащихся в переменной среды PYTHONPATH, если он установлен.
  3. Инсталляционный список каталогов, настроенных в то время, когда Python установлен, в моем случае usr/lib/python3.6 на Ubuntu.

Ответ 12

В -s. someProject

Если у вас есть someDirectory/someProjectDir и два файла, file1.py и file2.py, и file1.py пытается импортировать с этой строкой

из someProjectDir импортировать файл2

Он не будет работать, даже если вы определили someProjectDir в качестве исходного каталога, и даже если он отображается в настройках, проекте, меню структуры проекта в качестве корня контента. Единственный способ, которым он будет работать, - это связать проект, как показано выше (команда unix, работает в Mac, не уверен в использовании или синтаксисе для Windows). Похоже, существует механизм, в котором Pycharm делает это автоматически либо при извлечении из управления версиями, либо при добавлении в качестве корневого контекста, поскольку программная ссылка была создана Pycharm в зависимом проекте. Следовательно, просто копирование того же самого, хотя странная репликация каталога раздражает, и необходимость вызывает недоумение. Также в зависимости, где автоматически создается, он не отображается как новый каталог под управлением версиями. Возможно, сравнение файлов .idea покажет больше.

Ответ 13

Ответ, который сработал для меня, был, действительно, то, что OP упоминает в своем обновлении 2015 года: снимите эти два флажка в вашей конфигурации запуска Python:

  • "Добавить корни контента в PYTHONPATH"
  • "Добавить исходные корни в PYTHONPATH"

У меня уже был настроен запуск конфигурации для использования правильного venv, поэтому PyCharm делать дополнительную работу для добавления вещей в путь не было необходимости. Вместо этого это вызывало ошибки.

Ответ 14

Я получил эту ошибку, когда рабочий каталог не был установлен правильно. Это было очень странно, так как это была новая установка, и я не могу придумать причину, по которой PyCharm будет использовать какой-то случайный каталог в качестве рабочего каталога для проекта вместо корневого каталога.