
Soy nuevo en el uso del shell y quería crear un directorio donde $HOME
pueda colocar todos mis scripts de Python, establecer una ruta a ese directorio, para poder ir a cualquier carpeta de mi Mac y ejecutar esos scripts en ciertos archivos. sin que el script tenga que estar contenido dentro del mismo directorio que el archivo que serviría como entrada para esos scripts.
Leí y agregué esto a mi .zshrc
archivo:
export PATH="$HOME/python_functions/bin:$PATH"
Luego agregué un script llamado sleep_plotter.py
a python_functions/bin
, que es donde planeo colocar todos mis scripts futuros también.
Sin embargo, cuando navego a la carpeta que contiene el archivo de texto que quiero usar como entrada para ese script y escribo python sleep_plotter.py 113testCtM113.txt
, siendo el último argumento la entrada del archivo de texto para mi script, aparece el siguiente mensaje de error:
python: can't open file 'sleep_plotter.py': [Errno 2] No such file or directory
Pero cuando llamo a la ruta usando echo $PATH
, veo esto:
/Users/myname/python_functions/bin:
De esto, deduje que Python busca en ese directorio cuando ejecuto un comando de Python, por lo que debería poder ejecutarse sleep_plotter.py
incluso cuando estoy en una carpeta diferente que no contiene este archivo.
Estoy usando Mac OSX 10.11.2, zsh y Anaconda 2.3.0.
Respuesta1
PATH
La variable define los directorios en los que se buscan al ejecutar comandos. Sin embargo, cuando ejecuta python sleep_plotter.py 113testCtM113.txt
, sleep_plotter.py
es un argumento para el python
programa (comando). Shell utiliza PATH
para encontrar python
, pero no sus argumentos.
Puede agregar un atributo ejecutable a su script:
$ chmod +x /Users/myname/python_functions/bin/sleep_plotter.py
Agrega unel asuntosecuencia hasta la parte superior (primera línea) de su secuencia de comandos Python:
#!/usr/bin/env python
Y ejecute el script directamente como un comando:
$ sleep_plotter.py 113testCtM113.txt
Respuesta2
Si desea extender Python para buscar en directorios adicionales, debe hacer dos cosas: configurar la variable PYTHONPATH y usar la -m
opción en Python.
En ~/.zshrc
(tenga en cuenta que no hay $PATH
allí):
export PYTHONPATH="$HOME/python_functions/bin"
Y en el terminal uso:
python -m sleep_plotter 113testCtM113.txt
que escribe tanto como antes, porque debe omitir la .py
extensión en el archivo de Python.