¿Cómo puedo hacer uso de PYTHONPATH? Cuando intento ejecutar un script en la ruta, no se encuentra el archivo. Cuando cd al directorio que contiene el script, el script se ejecuta. Entonces, ¿de qué sirve el 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'
Después de cd al directorio de archivos se ejecuta.
$ python gbmx.py -h
usage: gbmx.py [-h] [-b]
¿Por qué no puedo usar PYTHONPATH?
PYTHONPATH
.PYTHONPATH
Respuestas:
Creo que estás un poco confundido. PYTHONPATH establece la ruta de búsqueda para importar módulos de Python, no para ejecutarlos como lo está intentando.
http://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH
Lo que estás buscando es RUTA.
Sin embargo, para ejecutar su script de Python como un programa, también debe establecer un shebang para Python en la primera línea. Algo como esto debería funcionar:
Y dale privilegios de ejecución:
Entonces deberías poder simplemente correr
gmbx.py
desde cualquier lugar.fuente
export PATH=$PATH:/home/etc
Estás confundiendo PATH y PYTHONPATH. Usted necesita hacer ésto:
PYTHONPATH es utilizado por el intérprete de python para determinar qué módulos cargar.
El shell utiliza PATH para determinar qué ejecutables ejecutar.
fuente
PYTHONPATH
solo afecta a lasimport
declaraciones, no a la búsqueda de intérpretes de Python de nivel superior de archivos de python dados como argumentos.La necesidad
PYTHONPATH
de configurar no es una gran idea, ya que con cualquier cosa que dependa de las variables de entorno, replicar las cosas de manera consistente en diferentes máquinas se vuelve complicado. Mejor es usar 'paquetes' de Python que se pueden instalar (usando 'pip' o distutils) en rutas dependientes del sistema que Python ya conoce.Eche un vistazo a https://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/ - 'The Hitchhiker's Guide to Packaging', y también http://docs.python.org/3/tutorial /modules.html : que explica PYTHONPATH y paquetes en un nivel inferior.
fuente
PYTHONPATH
. Ya no cuento cuántas veces he tenido que lidiar con un programa rudimentario de Python que insistía enpip install
lo que era un usuario habitual en un host no solo sin acceso a la raíz (sé que pip puede hacer una instalación local) sino También sin pepita. Aquí hay un consejo para todos los que distribuyen el software Python: primero intente instalar su propio software en un host Linux vanilla donde no tenga acceso de root y solo la distribución central de Python sin pip.Creo que estás confundido entre PATH y PYTHONPATH. Todo lo que tiene que hacer para ejecutar un 'script' es agregar su directorio parental a su variable PATH. Puedes probar esto ejecutando
Además, si
myscripy.py
depende de módulos personalizados, sus directorios parentales también deben agregarse a la variable PYTHONPATH. Desafortunadamente, debido a que los diseñadores de Python estaban claramente en las drogas, probar sus importaciones en la respuesta con lo siguiente no garantizará que su PYTHONPATH esté configurado correctamente para su uso en un script. Esta parte de la programación de Python es mágica y no se puede responder adecuadamente en stackoverflow.fuente
Con PYTHONPATH configurado como en su ejemplo, debería poder hacer
-m
la opción hará que Python busque su módulo en las rutas en las que Python generalmente busca módulos, incluido lo que agregó a PYTHONPATH. Cuando ejecuta un intérprete comopython gmbx.py
, busca un archivo en particular y PYTHONPATH no se aplica.fuente