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

щелкните правой кнопкой мыши имя модуля и отметьте его как "источник":

enter image description here

Шаг 2

по какой-то причине, по умолчанию в PyCharm, это фактически не добавляет каталоги, помеченные как "исходный корень", в путь Python. Исправьте это, включив это.

enter image description here

дополнительное для специалистов

обратите внимание на "запуск сценария" на изображении выше. Я предполагаю, что ручное добавление этих строк в ваш скрипт Python также достигнет того же результата.

Проверено На

  • Windows 10 для 64-разрядных.
  • Издание Сообщества PyCharm 2017.2.3.

решение

  • на настройки->переводчик проекта.
  • нажмите кнопку колесо обрамлено (значок Настройки передач).
  • в выпадающем списке, нажмите кнопку "Показать все".... Доступные переводчики отображаются в диалоговом окне переводчики проекта.

  • выберите нужный интерпретатор.

  • на панели инструментов диалогового окна интерпретаторы проектов щелкните значок кнопки показать пути (последний пункт). Существующие пути выбранного интерпретатора отображаются в диалоговом окне пути интерпретатора.

  • добавьте путь вашего пакета (пакет, который вы разработали pip) здесь.ex / home/../ repo-name

вуаля!! вы можете идти.

объяснение
Каждый проект относится к интерпретатору, который вы можете найти в настройки->переводчик проекта. Теперь этот переводчик использует кучу путей для поиска библиотеки. По умолчанию он имеет site-packages и кучу других путей.
Теперь, когда вы использовали pip develop-e или python setup.py развивать создается динамическая ссылка, указывающая на репозиторий вашего пакета вместо установки пакета в каталоге site-packages. Таким образом, исходный путь нашего пакета не здесь, что нам нужно сделать, это добавить наш исходный путь к переводчика сделать это работа

Ref:

  1. https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000019690-PyCharm-not-recognize-development-library-
  2. https://www.jetbrains.com/help/pycharm/installing-uninstalling-and-reloading-interpreter-paths.html

У меня была такая же проблема, как и у тебя.

кажется, pycharm не может распознать модуль, установленный непосредственно setup.py, но может распознать модуль, установленный pip. Наконец, я использую pip установить src_path, но я должен pip install это каждый раз, когда я изменяю исходный код.


своего рода обходной путь, который работал для меня:

откройте оба проекта в PyCharm в одном окне (рабочая область). Теперь откройте окно настроек, и в разделе "Project - > Project Depencies" вы можете выбрать этот проект s зависит от проекта p. Импорт и автозаполнение теперь будут работать нормально.


Я только что установил пакет с помощью Pycharm, а затем проблема решена.


проблема может быть вашим путем интерпретатора. Проверьте, куда указывает переводчик. В большинстве случаев это ~ / PycharmProjects/trials/venv/bin / python, и это может указывать на ванну python, установленную как часть Pycharm

измените softlink python на ваш путь/usr/bin / python, и все должно работать нормально