Sou novo no uso do shell e queria criar um diretório onde $HOME
pudesse colocar todos os meus scripts python, definir um caminho para esse diretório, para que eu pudesse entrar em qualquer pasta do meu Mac e executar esses scripts em determinados arquivos, sem que o script precise estar contido no mesmo diretório do arquivo que serviria de entrada para esses scripts.
Eu li e adicionei isto ao meu .zshrc
arquivo:
export PATH="$HOME/python_functions/bin:$PATH"
Em seguida, adicionei um script chamado sleep_plotter.py
to python_functions/bin
, onde pretendo colocar todos os meus scripts futuros também.
No entanto, quando navego até a pasta que contém o arquivo de texto que desejo usar como entrada para esse script e digito python sleep_plotter.py 113testCtM113.txt
, sendo o último argumento a entrada do arquivo de texto para meu script, recebo a seguinte mensagem de erro:
python: can't open file 'sleep_plotter.py': [Errno 2] No such file or directory
Mas quando chamo o caminho usando echo $PATH
, vejo isto:
/Users/myname/python_functions/bin:
A partir disso, concluí que o python está procurando nesse diretório quando executo um comando Python, portanto, ele deve poder ser executado sleep_plotter.py
mesmo quando estou em uma pasta diferente que não contém esse arquivo.
Estou usando Mac OSX 10.11.2, zsh e Anaconda 2.3.0.
Responder1
PATH
variável define os diretórios que são pesquisados ao executar comandos. Porém quando você executa python sleep_plotter.py 113testCtM113.txt
, sleep_plotter.py
é um argumento para o python
programa (comando). Shell usa PATH
para find python
, mas não seus argumentos.
Você pode adicionar um atributo executável ao seu script:
$ chmod +x /Users/myname/python_functions/bin/sleep_plotter.py
Adicione umShebangsequência no topo (primeira linha) do seu script Python:
#!/usr/bin/env python
E execute o script diretamente como um comando:
$ sleep_plotter.py 113testCtM113.txt
Responder2
Se você deseja estender o python para pesquisar diretórios adicionais, você precisa fazer duas coisas: definir a variável PYTHONPATH e usar a -m
opção no Python.
Em ~/.zshrc
(observe que não há $PATH
lá):
export PYTHONPATH="$HOME/python_functions/bin"
E no terminal use:
python -m sleep_plotter 113testCtM113.txt
que digitou tanto quanto você fez antes, porque você tem que deixar de fora a .py
extensão no arquivo python.