Я хочу вернуться к вопросу, как указано в PYTHONPATH vs. sys.path. В основном это связано с разработкой пакета, например:
Project
setup.py
package
__init__.py
lib.py
script.py
Предполагая, что script.py
делает from package.lib import foo
, он работает при вызове:
python -m package.script
из каталога, где сидит setup.py
, но не при вызове (на windows, CPython 2.7):
.\package\script.py
ImportError: No module named package
В первом случае при печати sys.path
первая запись будет ''
, а во втором случае первая запись будет абсолютным путем к тому месту, где сидит script.py
. И, конечно же, в этом случае он ничего не знает о package
, и импорт невозможен. Это также будет иметь место при двойном щелчке в проводнике.
В исходном вопросе о стеке overflow рекомендуется установка пакета setup.py develop
. Однако в текущей версии setuptools 3.5 (мне известно + запутано переименование distutils/setuptools) этот вариант даже не задокументирован (у меня setuptools 3.4.x, но не пробовал).
Может ли кто-нибудь указать мне, что рекомендуется ("... единственный очевидный способ сделать это...") в Windows (для CPython 2.7, но также с учетом Python 3) для двойного щелчка по файлу и его работы. Относительный импорт?