PyCharm не распознает модули, установленные в режиме разработки
у меня есть два чистых проекта python в PyCharm 3.4.1 Professional Edition. Первый, назовем его p
(как пакет), структурирован как пакет setuptools (т. е. с setup.py, все требования etc., однако он не загружается в pypi или любой другой онлайн-репозиторий). Второй, назовем его s
(как и скрипт), это просто скрипт python вместе с двумя модулями.
проект s
(в PyCharm) настроен на использование выделенного virtualenv, назовем его venv
.
проблема у меня следующая: когда я устанавливаю проект (пакет) p
на venv
такой:
$ source /path/to/venv/bin/activate
(venv)$ cd /path/to/p
(venv)$ python3 setup.py develop
в PyCharm в проекте s
, import p
заявления ошибочны с сообщением нет модуля с именем p. Однако, когда я запускаю скрипт в s
, все в порядке, единственная проблема заключается в том, что PyCharm IDE жалуется на невозможность найти модуль. Я могу жить с этим, но это очень раздражающий...
почему это происходит? Это вещь PyCharm или связанная с упаковкой вещь? посмотреть новости ниже.
проект / пакет p
имеет следующую структуру:
p/
|
+- p/
| |
| +- __init__.py
| +- other subpackages, modules, etc.
+- setup.py
+- README, DESCRIPTION, setup.cfg, etc.
когда я настраиваю проект PyCharm p
жить в своем собственном virtualenv и установить его там в режиме разработки, все работает нормально.
новости
эта проблема все еще присутствует в PyCharm 5.0.4. Тем не менее, мне удалось ее решить.
по некоторым причинам мне пришлось установить другой пакет из pypi. Я сделал это через PyCharm, перейдя в Файл - > Настройки - > проект: - > интерпретатор проекта, там нажав на зеленый +
, поиск пакета и нажатие кнопки Установить пакет. После установки пакет устанавливается с помощью python3 setup.py develop
хорошо признан PyCharm. Очевидно, проблема заключалась в том, что у PyCharm не было кеша в синхронизация с реальностью.
Итак, новый вопрос: Можно ли сказать PyCharm обновить свои кэши относительно используемой среды python?
8 ответов
начиная с Pycharm 2016.1.4 (professional edition), кажется, что открытие другого проекта (например, через Open Recent), а затем открытие оригинального делает Pycharm reindex установленных пакетов и, следовательно, распознает установленные пакеты разработки.
этого для меня достаточно.
в области проекта каталог, содержащий p, должен быть помечен как источник. Доступно в разделе: щелкните правой кнопкой мыши - > "отметить каталог как" - > "источник Root".
Примечание: этот параметр также добавит его в PYTHONPATH во время выполнения из меню "Выполнить", если соответствующий флажок для параметра установлен в "Редактировать конфигурации" (по умолчанию).
У меня было чертовски много времени, чтобы заставить PyCharm распознать класс в модуле, который я только что написал.
проблема в том, что PyCharm по умолчанию не импортирует пути к классам модулей, что требует два отдельные исправления для исправления.
Шаг 1
щелкните правой кнопкой мыши имя модуля и отметьте его как "источник":
Шаг 2
по какой-то причине, по умолчанию в PyCharm, это фактически не добавляет каталоги, помеченные как "исходный корень", в путь Python. Исправьте это, включив это.
дополнительное для специалистов
обратите внимание на "запуск сценария" на изображении выше. Я предполагаю, что ручное добавление этих строк в ваш скрипт Python также достигнет того же результата.
Проверено На
- Windows 10 для 64-разрядных.
- Издание Сообщества PyCharm 2017.2.3.
решение
- на настройки->переводчик проекта.
- нажмите кнопку колесо обрамлено (значок Настройки передач).
в выпадающем списке, нажмите кнопку "Показать все".... Доступные переводчики отображаются в диалоговом окне переводчики проекта.
выберите нужный интерпретатор.
на панели инструментов диалогового окна интерпретаторы проектов щелкните значок кнопки показать пути (последний пункт). Существующие пути выбранного интерпретатора отображаются в диалоговом окне пути интерпретатора.
- добавьте путь вашего пакета (пакет, который вы разработали pip) здесь.ex / home/../ repo-name
вуаля!! вы можете идти.
объяснение
Каждый проект относится к интерпретатору, который вы можете найти в настройки->переводчик проекта. Теперь этот переводчик использует кучу путей для поиска библиотеки. По умолчанию он имеет site-packages и кучу других путей.
Теперь, когда вы использовали pip develop-e или python setup.py развивать создается динамическая ссылка, указывающая на репозиторий вашего пакета вместо установки пакета в каталоге site-packages. Таким образом, исходный путь нашего пакета не здесь, что нам нужно сделать, это добавить наш исходный путь к переводчика сделать это работа
Ref:
У меня была такая же проблема, как и у тебя.
кажется, pycharm не может распознать модуль, установленный непосредственно setup.py, но может распознать модуль, установленный pip. Наконец, я использую pip установить src_path, но я должен pip install это каждый раз, когда я изменяю исходный код.
своего рода обходной путь, который работал для меня:
откройте оба проекта в PyCharm в одном окне (рабочая область). Теперь откройте окно настроек, и в разделе "Project - > Project Depencies" вы можете выбрать этот проект s
зависит от проекта p
. Импорт и автозаполнение теперь будут работать нормально.
проблема может быть вашим путем интерпретатора. Проверьте, куда указывает переводчик. В большинстве случаев это ~ / PycharmProjects/trials/venv/bin / python, и это может указывать на ванну python, установленную как часть Pycharm
измените softlink python на ваш путь/usr/bin / python, и все должно работать нормально