Como posso fazer uso do PYTHONPATH? Quando tento executar um script no caminho, o arquivo não é encontrado. Quando eu cd para o diretório que contém o script, o script é executado. Então, o que é bom o PITONONA?
$ 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'
Após o cd no diretório do arquivo, ele é executado.
$ python gbmx.py -h
usage: gbmx.py [-h] [-b]
Por que não posso fazer uso do PYTHONPATH?
PYTHONPATH
.PYTHONPATH
Respostas:
Eu acho que você está um pouco confuso. PYTHONPATH define o caminho de pesquisa para importar módulos python, não para executá-los como você está tentando.
http://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH
O que você está procurando é PATH.
No entanto, para executar seu script python como um programa, você também precisa definir um shebang para Python na primeira linha. Algo assim deve funcionar:
E conceda privilégios de execução a ele:
Então você poderá simplesmente executar
gmbx.py
de qualquer lugar.fonte
export PATH=$PATH:/home/etc
Você está confundindo PATH e PYTHONPATH. Você precisa fazer isso:
PYTHONPATH é usado pelo interpretador python para determinar quais módulos carregar.
PATH é usado pelo shell para determinar quais executáveis executar.
fonte
PYTHONPATH
afeta apenasimport
instruções, não a pesquisa de arquivos python do intérprete Python de nível superior fornecida como argumentos.Precisando
PYTHONPATH
ser definido não é uma ótima idéia - como em qualquer coisa dependente de variáveis de ambiente, é complicado replicar as coisas de maneira consistente em diferentes máquinas. Melhor é usar 'pacotes' do Python que podem ser instalados (usando 'pip' ou distutils) em caminhos dependentes do sistema que o Python já conhece.Leia https://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/ - 'O Guia do Mochileiro das Embalagens' e também http://docs.python.org/3/tutorial /modules.html - o que explica PYTHONPATH e pacotes em um nível inferior.
fonte
PYTHONPATH
. Não conto mais quantas vezes tive que lidar com um programa Python rudimentar que insistia napip install
coisa em que eu era um usuário comum em um host, não apenas sem acesso root (sei que o pip pode fazer a instalação local), mas também sem pip. Aqui está um conselho para todos que distribuem o software Python - tente instalar seu próprio software em um host Linux baunilha, onde você não tem acesso root e somente a distribuição principal do Python sem pip, primeiro.Eu acho que você está confuso entre PATH e PYTHONPATH. Tudo o que você precisa fazer para executar um 'script' é ter o diretório parental anexado à sua variável PATH. Você pode testar isso executando
Além disso, se
myscripy.py
depender de módulos personalizados, seus diretórios parentais também deverão ser adicionados à variável PYTHONPATH. Infelizmente, como os projetistas de python usavam claramente as drogas, testar suas importações na substituição com o seguinte não garante que seu PYTHONPATH esteja configurado corretamente para uso em um script. Essa parte da programação em python é mágica e não pode ser respondida adequadamente no stackoverflow.fonte
Com PYTHONPATH definido como no seu exemplo, você poderá fazer
-m
A opção fará com que o Python pesquise seu módulo em caminhos. O Python geralmente pesquisa módulos, incluindo o que você adicionou ao PYTHONPATH. Quando você executa um interpretadorpython gmbx.py
, ele procura um arquivo específico e o PYTHONPATH não se aplica.fonte