PyCharm не распознает модули, установленные в режиме разработки

У меня есть два чистых проекта python в PyCharm 3.4.1 Professional Edition. Первый, позвоните ему p (например, пакет), структурирован как пакет setuptools (т.е. С setup.py, все требования и т.д., Однако он не загружается в pypi или в любой другой онлайн-репозиторий). Второй, позвольте ему s (например, script), является всего лишь python script вместе с двумя модулями.

Проект 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. Однако, когда я запускаю script в s, все в порядке, единственная проблема заключается в том, что IDE PyCharm жалуется на невозможность найти модуль. Я могу жить с этим, но это очень раздражает...

Почему это происходит? Это вещь, связанная с 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, выбрав File → Settings → Project: → Project Interpreter, нажав зеленую кнопку +, найдя пакет и нажав кнопку Install Package. После установки пакет, установленный python3 setup.py develop, хорошо известен PyCharm. Очевидно, проблема заключалась в том, что PyCharm не синхронизировал кеш с реальностью.

Итак, новый вопрос: может ли PyCharm сказать обновить свои кеши относительно используемой среды python?

Ответ 1

Как и в случае с Pycharm 2016.1.4 (профессиональное издание), кажется, что открытие другого проекта (например, через Open Recent), а затем открытие оригинала делает Pycharm переиндексацией установленных пакетов и, следовательно, распознает пакеты с установленными пакетами.

Этого достаточно для меня.

Ответ 2

В области проекта каталог, который содержит p, должен быть помечен как источник. Доступно в: Щелкните правой кнопкой мыши → "Отметить каталог как" → "Корень источников".

Примечание. Этот параметр также добавит его в PYTHONPATH во время выполнения из меню запуска, если соответствующий флажок для опции отмечен в "Редактирование конфигураций" (по умолчанию).

Ответ 3

У меня есть дьявол времени, когда PyCharm распознает класс в модуле, который я только что написал.

Проблема заключается в том, что PyCharm по умолчанию не импортирует пути класса модуля, для чего требуется исправление отдельных двух.

Шаг 1

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

введите описание изображения здесь

Шаг 2

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

введите описание изображения здесь

Дополнительно для экспертов

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

Протестировано

  • Windows 10 x64.
  • PyCharm Community Edition 2017.2.3.

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

У меня только что установлен пакет с использованием Pycharm, тогда проблема решена.

Ответ 7

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

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