Я написал модуль (файл 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»
Это кажется странным для меня, потому что
А) в терминале (OS 10.10.2), в python, я могу импортировать модуль без проблем - в PYTHONPATH есть соответствующая запись в .bashrc
B) в PyCharm - Настройки - Project cur_proj - Project Interpreter - CogWheel рядом с интерпретатором python - подробнее - показать пути для иконки выбранного переводчика, пути из PYTHONPATH действительно появляются (как я думаю, они должны)
Следовательно, почему я получаю сообщение об ошибке при попытке запустить cool_script.py? - Чего мне не хватает?
Ноты:
- Я не объявляю другую / специальную версию Python в верхней части cool_script.py
- Я убедился , что путь к
my_module
правильно - Я помещаю
__init__.py
файлы (пустые файлы) как в, такmy_module
и вcur_proj
- Я не пользуюсь
virtualenv
Приложение 2015-Фев-25
Когда я захожу в PyCharm для запуска - Редактировать конфигурации, для моего текущего проекта есть две опции, которые выбираются с галочкой: « Добавить корни содержимого в PYTHONPATH » и « Добавить корни источника в PYTHONPATH ». Когда я снял оба флажка, я могу загрузить свой модуль.
Так что это работает сейчас - но почему ?
Возникли дополнительные вопросы:
- Что такое «корни контента» и что такое «корни источников»? И почему добавление чего-либо к PYTHONPATH делает его каким-то образом ломающимся?
- я должен снять все эти опции все время (также и в настройках по умолчанию, а не только в конкретных конфигурациях проекта (левая панель диалога Run / Debug Configurations)?
from foldername.mymodule import mymethod
. Еще одна вещь, которую я должен был сделать, это добавить пустую папку _init .py во все папки, которые вы будете использовать для доступа к вашему модулю, так что в случаеfrom parentfolder.childfolder.mymodule ...
необходимости вам понадобится init в двух папках. В зависимости от того, где расположены папки относительно друг друга, вам может понадобиться пакет верхнего уровня,sys.path
как описано в этом ответеEnable Django Support
в настройкахLanguages & Frameworks -> Django
в Pro версии PyCharm. Он открывал консоль django, что вызывало проблемы с импортом.Ответы:
Если ваш собственный модуль находится в том же пути, вы должны пометить путь как
Sources Root
. В проводнике проекта щелкните правой кнопкой мыши каталог, который вы хотите импортировать. Затем выберитеMark Directory As
и выберитеSources Root
.Надеюсь, это поможет.
источник
__init__.py
чтобы Python рассматривал каталоги как содержащие пакеты: stackoverflow.com/questions/448271/….
перед именем пакета, чтобы указать, что этот пакет является локальнымТак что если вы идете в
-> Настройка -> Проект: My_project -> Структура проекта,
Просто каталог, в котором доступен исходный код, и пометьте его как «Источники» (вы можете увидеть его в том же окне). Каталог с исходным кодом должен стать синим. Теперь вы можете импортировать модули, находящиеся в одном каталоге.
источник
Сообщество PyCharm / Professional 2018.2.1
У меня была эта проблема только сейчас, и я смог решить ее таким же образом, как указали @Beatriz Fonseca и @Julie.
Если вы перейдете на
File
->Settings
->Project: YourProjectName
->Project Structure
, у вас будет макет каталога проекта, в котором вы сейчас работаете. Вам нужно будет просмотреть ваши каталоги и пометить их какSource
каталог для всех ваших исходных файлов. или какResource
папка для файлов, предназначенных исключительно для импорта.Вы также захотите убедиться, что вы размещаете
__init__.py
файлы в каталогах ресурсов или в любом месте, куда вы хотите импортировать, и это будет работать отлично.Я надеюсь, что этот ответ кому-то поможет, и, надеюсь, JetBrains исправит эту досадную ошибку.
источник
Mark Directory as
в контекстном меню и выберитеSources Root
.Я попытался найти место, где находятся мои файлы.
например
E:\git_projects\My_project\__init__.py is my location.
Я пошел в Файл -> Настройка -> Проект: My_project -> Структура проекта и добавил корень контента в место упоминания.
E:\git_projects\My_project
это сработало для меня.
источник
/home/my_user/git_projects/this_git_project/this_pycharm_project/
. Я добавил в/home/my_user/git_projects/this_git_project/
качестве содержимого root и/home/my_user/git_projects/this_git_project/this_pycharm_project/
в качестве единственной исходной папки, и все окончательно сработало.my_module
это папка, а не модуль, и вы не можете импортировать папку, попробуйте перейтиmy_mod.py
в ту же папку, чтоcool_script.py
и затем, и сделайтеimport my_mod as mm
. Это потому, что python смотрит только в текущем каталоге иsys.path
, и поэтому не будет искать,my_mod.py
если он не находится в том же каталогеИли вы можете посмотреть здесь, чтобы узнать, как импортировать файлы из других каталогов.
Что касается других ваших вопросов, я не знаю, так как я не использую PyCharm.
источник
Я также получал сообщение об ошибке «Добавить корни источника в PYTHONPATH». Моя проблема заключалась в том , что у меня было две папки с таким же именем, как
project/subproject1/thing/src
иproject/subproject2/thing/src
я оба из них помечен как корень источника. Когда я переименовал одну из"thing"
папок в"thing1"
(любое уникальное имя), она работала.Возможно, если PyCharm автоматически добавляет выбранные исходные корни, он не использует полный путь и, следовательно, смешивает папки с одинаковыми именами.
источник
Это может быть вызвано тем, что интерпретатор Python не может найти ваш код. Вы должны явно указать Python, чтобы найти свой код в этом месте.
Для этого:
sys.path.extend(['your module location'])
в консоль Python.В твоем случае:
В начале напишите следующий код:
Как только вы написали это утверждение, вы можете выполнить следующую команду:
источник
Основной непонятный шаг, который необходимо сделать, - это воссоздать конфигурацию запуска для исходного файла, который вы пытаетесь выполнить, чтобы IDE выбрала новые пути.
У меня действительно получилось так, чтобы перейти в меню «Выполнить / редактировать конфигурации», выбрать конфигурацию для файла, который вы пытаетесь запустить с левой стороны, снять флажок «Добавить исходные корни в PYTHONPATH», сохранить, а затем вернитесь и установите флажок и сохраните. Тогда это будет работать.
источник
Invalidate Cache/Restart
дважды!Корни содержимого - это папки, содержащие код вашего проекта, в то время как исходные корни также определены как одинаковые. Единственное отличие, которое я понял, заключалось в том, что код в корнях исходного кода создается перед кодом в корне содержимого.
Отключение их не повлияет на время выполнения до тех пор, пока вы не создадите в своем пакете отдельные модули, которые вручную подключены к Django. Это означает, что если какие-либо из ваших файлов не содержат 'from django import ...' или какая-либо функция не вызывается через django, снятие отметки с этих двух параметров приведет к сбоям.
Обновление - проблема возникает только при использовании Virtual Environmanet и только при управлении проектом через предоставленный терминал. Потому что терминал все еще работает через системный pyhtonpath по умолчанию, а не через виртуальную среду. в то время как панель управления Python Django работает нормально.
источник
Решение этой проблемы без необходимости помечать каталог как исходный корень состоит в том, чтобы отредактировать конфигурации запуска и в разделе «Выполнение» выбрать параметр «Перенаправить ввод из» и выбрать сценарий, который вы хотите запустить. Это работает, потому что тогда он обрабатывается, как если бы скрипт был запущен в интерактивном режиме в этом каталоге. Однако Python по-прежнему помечает имя модуля с ошибкой «нет модуля с именем x»:
Когда интерпретатор выполняет инструкцию import, он ищет x.py в списке каталогов, собранных из следующих источников:
источник
Pycharm 2017.1.1
View->ToolBar
&View->Tool Buttons
Project
будет видно, щелкните правой кнопкой мыши на нем и нажмите,Autoscroll to source
а затем запустите свой код.Это сработало для меня.
источник
Ин-с. someProject
Если у вас есть someDirectory / someProjectDir и два файла, file1.py и file2.py, и file1.py пытается импортировать с этой строкой
из someProjectDir импортировать файл2
Он не будет работать, даже если вы определили someProjectDir в качестве исходного каталога, и даже если он отображается в настройках, проекте, меню структуры проекта в качестве корня контента. Единственный способ, которым он будет работать, - это связать проект, как показано выше (команда unix, работает на Mac, не уверен в использовании или синтаксисе для Windows). Кажется, существует механизм, в котором Pycharm делает это автоматически либо при извлечении из контроля версий, либо при добавлении в качестве корневого контекста, поскольку программная ссылка была создана Pycharm в зависимом проекте. Следовательно, просто копирование того же самого, хотя странная репликация каталога раздражает, и необходимость вызывает недоумение. Также в зависимости, где автоматически создается, он не отображается как новый каталог под управлением версиями. Возможно, сравнение файлов .idea покажет больше.
источник
Ответ, который работал для меня, был, действительно, то, что OP упоминает в своем обновлении 2015 года: снимите эти два флажка в вашей конфигурации запуска Python:
У меня уже был настроен запуск конфигурации для использования правильного venv, поэтому PyCharm делать дополнительную работу для добавления вещей в путь не было необходимости. Вместо этого это вызывало ошибки.
источник