Cada vez que uso sys.path.append
, se agregará el nuevo directorio. Sin embargo, una vez que cierre Python, la lista volverá a los valores anteriores (¿predeterminados?). ¿Cómo agrego permanentemente un directorio PYTHONPATH
?
fuente
Cada vez que uso sys.path.append
, se agregará el nuevo directorio. Sin embargo, una vez que cierre Python, la lista volverá a los valores anteriores (¿predeterminados?). ¿Cómo agrego permanentemente un directorio PYTHONPATH
?
Debe agregar su nuevo directorio a la variable de entorno PYTHONPATH
, separado por dos puntos del contenido anterior del mismo. En cualquier forma de Unix, puede hacerlo en un script de inicio apropiado para cualquier shell que esté usando ( .profile
o lo que sea, dependiendo de su shell favorito) con un comando que, nuevamente, depende del shell en cuestión; en Windows, puede hacerlo a través de la GUI del sistema para tal fin.
superuser.com
puede ser un mejor lugar para preguntar más, es decir, para obtener más detalles si necesita detalles sobre cómo enriquecer una variable de entorno en su plataforma y shell elegidos, ya que no es realmente una pregunta de programación per se.
Si está utilizando bash (en una distribución Mac o GNU / Linux), agregue esto a su
~/.bashrc
fuente
~/.bashrc
luego ejecutesource ~/.bashrc
ver stackoverflow.com/questions/2518127/…sudo su
al comienzo de su archivo .bashrc. Esta publicación está de acuerdo conmigo. En mi sistema, al menos, ni siquiera es necesario.En lugar de manipular
PYTHONPATH
, también puede crear un archivo de configuración de ruta . Primero descubra en qué directorio Python busca esta información:Por alguna razón, esto no parece funcionar en Python 2.7. Allí puedes usar:
Luego cree un
.pth
archivo en ese directorio que contenga la ruta que desea agregar (cree el directorio si no existe).Por ejemplo:
fuente
python -m site --user-site
y(create the directory if it doesn't exist)
eran lo que me faltaba para que funcionara.somelib.pth
? Si no, ¿adivina por qué esto podría no funcionar?Esto funciona en Windows
Entonces podrá ver todos los módulos dentro de esas rutas desde sus scripts.
fuente
En caso de que alguien siga confundido, si está en una Mac, haga lo siguiente:
open .bash_profile
export PYTHONPATH=$PYTHONPATH:foo/bar
fuente
export
clave era lo que me faltaba !!!!, voté, muchas gracias!Puede agregar la ruta a través de su archivo pythonrc, que por defecto es ~ / .pythonrc en Linux. es decir.
También puede establecer la
PYTHONPATH
variable de entorno, en un archivo rc global, como~/.profile
en mac o linux, o mediante el Panel de control -> Sistema -> pestaña Avanzado -> Variables de entorno en windows.fuente
Para dar un poco más de explicación, Python construirá automáticamente sus rutas de búsqueda (como se mencionó anteriormente y aquí ) utilizando el
site.py
script (normalmente ubicado en sys.prefix +lib/python<version>/site-packages
y tambiénlib/site-python
). Se puede obtener el valor de sys.prefix:El script site.py luego agrega una serie de directorios, dependiendo de la plataforma, como
/usr/{lib,share}/python<version>/dist-packages
,/usr/local/lib/python<version>/dist-packages
a la ruta de búsqueda y también busca en estas rutas<package>.pth
archivos de configuración que contengan rutas de búsqueda adicionales específicas. Por ejemplo, easy-install mantiene su colección de paquetes instalados que se agregan a un archivo específico del sistema, por ejemplo, en Ubuntu/usr/local/lib/python2.7/dist-packages/easy-install.pth
. En un sistema típico, hay un montón de estos archivos .pth que pueden explicar algunas rutas inesperadas en sys.path:Por lo tanto, se puede crear un archivo .pth y colocarlo en cualquiera de estos directorios (incluido el sitio como se mencionó anteriormente ). Esta parece ser la forma en que la mayoría de los paquetes se agregan a sys.path en lugar de usar PYTHONPATH.
Nota: En OSX hay una ruta de búsqueda adicional especial agregada por site.py para 'compilaciones de framework' (pero parece funcionar para el uso normal de la línea de comandos de python):
/Library/Python/<version>/site-packages
(por ejemplo, para Python2.7:)/Library/Python/2.7/site-packages/
que es donde se supone que los paquetes de terceros para ser instalado (vea el archivo README en ese directorio). Por lo tanto, se puede agregar un archivo de configuración de ruta que contenga rutas de búsqueda adicionales, por ejemplo, crear un archivo llamado/Library/Python/2.7/site-packages/pip-usr-local.pth
que contiene/usr/local/lib/python2.7/site-packages/
y luego el sistema python agregará esa ruta de búsqueda.fuente
Para mí funcionó cuando cambié el
.bash_profile
archivo. Solo cambiar el.bashrc
archivo funcionó solo hasta que reinicié el shell.Para python 2.7 debería verse así:
al final del
.bash_profile
archivo.fuente
En Linux, puede crear un enlace simbólico desde su paquete a un directorio de PYTHONPATH sin tener que lidiar con las variables de entorno. Algo como:
fuente
Agregar
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
a ~ / .bashrc podría no funcionar siPYTHONPATH
no existe actualmente (debido a:
).Agregar lo anterior a mi ~ / .bashrc me ayudó en Ubuntu 16.04
fuente
echo PYTHONPATH
y no apareció nada! eso significa que este PYTHONPATH no se ha inicializado, por lo que solo pego esta líneaexport PYTHONPATH=$PYTHONPATH:<PATH_TO_TF>/TensorFlow/models/research/object_detection
en mi~/.bashrc
archivo ysource ~/.bashrc
esta. Más tarde, cuando `echo $ PYTHONPATH` me dio:<PATH_TO_TF>/TensorFlow/models/research/object_detection
, ¿Alguna sugerencia sobre si he hecho algo mal?export PYTHONPATH=<PATH_TO_TF>/TensorFlow/models/research/object_detection
, cuando está exportando PYTHONPATH por primera vez, debe hacerlo sin la${PYTHONPATH}:
parte:<PATH_TO_TF>/TensorFlow/models/research/object_detection
y elimina la segundaexport PYTHONPATH=$PYTHONPATH:/TensorFlow/models/research/slim
. alguna sugerencia sobre eso, ¿cómo solucionarlo?En MacOS, en lugar de dar ruta a una biblioteca específica. Dando la ruta completa a la carpeta del proyecto raíz en
me alegraron el día, por ejemplo:
después de esto hacer:
fuente
Sólo para poner sobre la respuesta de awesomo, también se puede añadir que en su línea
~/.bash_profile
o~/.profile
fuente
.bash_profile
si utiliza el shell de entrada, de lo contrario usar.profile
El agregar una nueva ruta a PYTHONPATH se realiza manualmente al:
agregando la ruta a su perfil ~ / .bashrc, en la terminal:
pegue lo siguiente en su perfil
luego, asegúrese de obtener su perfil bashrc cuando ejecute su código en la terminal:
Espero que esto ayude.
fuente
Agregué permanentemente en Windows Vista, Python 3.5
Sistema> Panel de control> Configuración avanzada del sistema> Avanzado (toque) Variables de entorno> Variables del sistema> (si no ve PYTHONPATH en la columna Variable) (haga clic) Nuevo> Nombre de la variable: PYTHONPATH> Valor de la variable:
Por favor, escriba el directorio en el valor Variable. Es detalles de la respuesta de Blue Peppers.
fuente
El siguiente script funciona en todas las plataformas, ya que es Python puro. Utiliza la ruta pathlib, documentada aquí https://docs.python.org/3/library/pathlib.html , para que funcione multiplataforma. Lo ejecutas una vez, reinicias el kernel y listo. Inspirado en https://medium.com/@arnaud.bertrand/modifying-python-s-search-path-with-pth-files-2a41a4143574 .
fuente
Esta es una actualización de este hilo que tiene algunas respuestas antiguas.
Para aquellos que usan MAC-OS Catalina o algunos más nuevos (> = 10.15), se introdujo un nuevo Terminal llamado
zsh
(un sustituto del anteriorbash
).He tenido algunos problemas con las respuestas anteriores debido a este cambio, y yo hice un poco de una solución mediante la creación del archivo
~/.zshrc
y pegar el directorio de archivos a la$PATH
e$PYTHONPATH
Entonces, primero hice:
Cuando se abrió el editor, pegué el siguiente contenido:
lo guardó y reinició la terminal.
IMPORTANTE: La ruta de arriba está configurada para la ruta de mi computadora, tendrías que adaptarla a tu python.
fuente
En Python 3.6.4 puede persistir sys.path en sesiones de Python como esta:
Te sugiero encarecidamente que uses virtualenv y virtualenvwrapper, de lo contrario, abarrotarás tu camino
fuente
La ruta más corta entre A <-> B es una línea recta;
fuente