Как и почему PyCharm изменяет логику импорта Python? - PullRequest
12 голосов
/ 26 апреля 2011

У меня есть PyCharm 1.2.1 на Windows.Мне нужно отредактировать разные ветви одного и того же проекта - несколько тяжелых веток, потому что они находятся в разных папках на диске - скажем, это c:\apps\alpha и c:\apps\beta.Для каждой такой папки переменная PYTHONPATH должна быть настроена так, чтобы указывать на соответствующие библиотеки поставщиков, которые находятся где-то внутри корневой папки проекта (c:\alpha\vendor, ...).Мне удалось обойти эту проблему, запустив PyCharm из командного файла cmd, который устанавливает необходимое значение переменной PYTHONPATH перед запуском PyCharm (поэтому у меня есть PyCharm.cmd внутри alpha и PyCharm.cmd внутри beta каталогов).

Проблема: когда я открываю PyCharm для редактирования папки beta, оператор import импортирует модули из папки alpha !Когда я запускаю интерпретатор python.exe из командной строки, все работает, как и ожидалось - проблема, похоже, только с PyCharm .

Второе странное исследование: выполнение print sys.path кода из PyCharm и из внешнегоИнтерпретатор python.exe дает разные результаты - из PyCharm он не показывает мои модули PYTHONPATH.Я новичок в Python и PyCharm, но это поведение выглядит очень странным и непоследовательным.

Наконец-то я нашел некоторые настройки в PyCharm IDE, которые, по-видимому, позволят мне решить эту проблему - File -> Settings -> Python Interpreter.Там я нашел все пути для папок alpha и beta.Нет никакого способа очистить этот список путей, только отключить некоторые элементы.Но даже отключение работает несколько глупо - я должен отключать / включать их отдельно каждый раз, когда я редактирую alpha или beta "папок решений".

Итак, последний вопрос: как можно с помощью PyCharm редактировать отдельнопроекты (папки) и заставить PyCharm не импортировать модули из неправильных мест?

1 Ответ

13 голосов
/ 26 апреля 2011

Правильное решение состоит не в том, чтобы попытаться обойти логику PyCharm, а в том, чтобы использовать функции IDE в том виде, как они разработаны.Это означает:

  • Не использовать никакие сценарии .cmd для запуска PyCharm
  • Удалите все пути, относящиеся к «альфа» и «бета», из списка путей в Настройках |Интерпретаторы Python, если они там перечислены
  • Отметьте каталоги "alpha / vendor" и "beta / vendor" как корни исходного кода в проектах alpha и beta соответственно.

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

...