Как я могу использовать PYTHONPATH? Когда я пытаюсь запустить скрипт в пути, файл не найден. Когда я перехожу в каталог, содержащий скрипт, скрипт запускается. Так что хорошего в PYTHONPATH?
$ echo $PYTHONPATH
:/home/randy/lib/python
$ tree -L 1 '/home/randy/lib/python'
/home/randy/lib/python
├── gbmx_html.py
├── gbmx.py
├── __init__.py
├── __pycache__
├── scripts
└── yesno.py
$ python gbmx.py -h
python: can't open file 'gbmx.py': [Errno 2] No such file or directory
$ cd '/home/randy/lib/python'
После того, как CD к каталогу файлов, он запускается ..
$ python gbmx.py -h
usage: gbmx.py [-h] [-b]
Почему я не могу использовать PYTHONPATH?
PYTHONPATH
.PYTHONPATH
Ответы:
Я думаю, что вы немного смущены. PYTHONPATH устанавливает путь поиска для импорта модулей Python, а не для их выполнения, как вы пытаетесь.
http://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH
То, что вы ищете, это ПУТЬ.
Однако, чтобы запустить ваш скрипт на Python как программу, вам также нужно установить шебанг для Python в первой строке. Примерно так должно работать:
И дать ему права на исполнение:
Тогда вы сможете просто бежать
gmbx.py
из любого места.источник
export PATH=$PATH:/home/etc
Ты путаешь PATH и PYTHONPATH. Вам нужно сделать это:
PYTHONPATH используется интерпретатором python для определения, какие модули загружать.
PATH используется оболочкой, чтобы определить, какие исполняемые файлы запустить.
источник
PYTHONPATH
влияет только наimport
операторы, а не на поиск интерпретатора Python файлов верхнего уровня, заданных в качестве аргументов.Необходимость
PYTHONPATH
установки не является хорошей идеей - так как с чем-либо, зависящим от переменных среды, репликация вещей на разных машинах становится сложной. Лучше использовать Python «пакеты», которые можно установить (используя «pip» или distutils) по системно-зависимым путям, о которых Python уже знает.Прочитайте https://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/ - «Руководство по упаковке для автостопщика», а также http://docs.python.org/3/tutorial. /modules.html - объясняет PYTHONPATH и пакеты более низкого уровня.
источник
PYTHONPATH
. Я уже не считаю, сколько раз мне приходилось иметь дело с зачаточной программой на Python, которая настаивала на том,pip install
что я являюсь обычным пользователем на хосте не только без root-доступа (я знаю, что pip может выполнять локальную установку), но и также без пипа. Вот совет всем, кто распространяет программное обеспечение Python - сначала попытайтесь установить свое собственное программное обеспечение на хосте Linux, где у вас нет root-доступа и только основной дистрибутив Python без pip.Я думаю, что вы перепутали между PATH и PYTHONPATH. Все, что вам нужно сделать, чтобы запустить «скрипт», - это добавить родительский каталог в переменную PATH. Вы можете проверить это, запустив
Также, если это
myscripy.py
зависит от пользовательских модулей, их родительские каталоги также должны быть добавлены в переменную PYTHONPATH. К сожалению, поскольку разработчики python явно принимали наркотики, тестирование импорта в repl с помощью следующего не гарантирует правильной установки PYTHONPATH для использования в сценарии. Эта часть программирования на Python волшебна и не может ответить соответствующим образом в stackoverflow.источник
С PYTHONPATH, установленным как в вашем примере, вы сможете
-m
опция заставит Python искать ваш модуль по путям, в которых Python обычно ищет модули, включая то, что вы добавили в PYTHONPATH. Когда вы запускаете интерпретатор какpython gmbx.py
, он ищет определенный файл и PYTHONPATH не применяется.источник