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 (¿predeterminado?). ¿Cómo agrego permanentemente un directorio a PYTHONPATH?Agregue permanentemente un directorio a PYTHONPATH
Respuesta
Es necesario añadir el nuevo directorio para la variable de entorno PYTHONPATH
, separados por dos puntos de contenidos anteriores de los mismos. En cualquier forma de Unix, puede hacer eso 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, de nuevo, depende del shell en cuestión; en Windows, puede hacerlo a través de la GUI del sistema para este fin.
superuser.com
puede ser un mejor lugar para pedir más, es decir, para obtener más detalles si necesita detalles sobre cómo enriquecer una variable de entorno en la plataforma y shell elegidos, ya que no es realmente una cuestión de programación per se.
Si está utilizando bash (en un Mac o GNU distro/Linux), agregar esto a su ~/.bashrc
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
Esto funcionó perfectamente para mí, pero asegúrese de que el directorio que señala tiene en el archivo __init__.py más arriba en su di estructura de la rectoría Esto no estaba perfectamente claro para mí al principio. Por ejemplo, intenté ** exportar PYTHONPATH = $ PYTHONPATH:/Users/joey/repos ** pero no funcionó porque mi directorio de repos no tenía \ __ init__.py. Bajando un directorio más: **/Users/joey/repos/specificRepo ** hizo el truco. ¡Ahora Python puede atravesar cualquier directorio hacia abajo conectado al directorio específicoRepo que contiene un __init__.py! –
esto funcionó para mí, pero ¿podría explicarnos dónde se encuentra esta variable PYTHONPATH? y ¿cómo sabe "exportar PYTHONPATH" para localizar ese archivo exacto? – appleLover
recuerda después de editar '' ~/.bashrc'' luego ejecuta '' source ~/.bashrc'' ver http://stackoverflow.com/questions/2518127/how-do-i-reload-bashrc-without-logging -out-and-back-in –
Puede agregar la ruta a través de su archivo pythonrc, que por defecto es ~/.pythonrc en Linux. es decir.
import sys
sys.path.append('/path/to/dir')
También puede establecer la variable de entorno PYTHONPATH
, en un fichero rc mundial, tales ~/.profile
en Mac o Linux, o a través del Panel de control -> Sistema -> pestaña Opciones avanzadas -> Variables de entorno en Windows.
sys.path.append ('/ path/to/dir ') no agrega permanentemente la entrada. – jeremyjjbrown
Sólo para añadir en la respuesta de awesomo, también se puede añadir esa línea en su ~/.bash_profile
o ~/.profile
Agregar a '.bash_profile' si usa el shell de inicio de sesión, de lo contrario use' .profile' – smac89
En lugar de manipular PYTHONPATH
también se puede crear un path configuration file. En primer lugar averiguar en qué búsquedas de directorio de Python para obtener esta información:
python -m site --user-site
Por alguna razón esto no parece funcionar en Python 2.7. Allí se puede utilizar:
python -c 'import site; site._script()' --user-site
A continuación, cree un archivo .pth
en ese directorio que contiene la ruta que desea agregar (crear el directorio si no existe).
Por ejemplo:
# find directory
SITEDIR=$(python -m site --user-site)
# create if it doesn't exist
mkdir -p "$SITEDIR"
# create new .pth file with our path
echo "$HOME/foo/bar" > "$SITEDIR/somelib.pth"
Lo intenté usando Python 2.6 y no parece funcionar para mí –
Acabo de vincular este directorio a mi propio directorio y almacén de biblioteca todos mis guiones allí. Funcionó bien. – firesofmay
¡Se resolvió intentarlo de nuevo después de encontrar este tema nuevamente y se las arregló para hacerlo funcionar como antes! Disculpas vivas y arrepentidas :) –
En caso de que alguien está siendo confundido - si usted está en un Mac, haga lo siguiente:
- abre una Terminal
- Tipo
open .bash_profile
- En el archivo de texto que aparece, agregue esta línea al final:
export PYTHONPATH=$PYTHONPATH:foo/bar
- guardar el archivo, reinicie el terminal, y ya está
En Linux se puede crear un enlace simbólico desde el paquete a un directorio del PYTHONPATH sin tener que lidiar con las variables de entorno.Algo como:
ln -s /your/path /usr/lib/pymodules/python2.7/
Para mí funcionó cuando cambié el archivo .bash_profile
. Solo cambiando el archivo .bashrc
funcionó solo hasta que reinicié el shell.
para Python 2.7 que debe ser similar:
export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python"
al final del archivo .bash_profile
.
Esto funciona en Windows
- En Windows, con Python 2.7 vaya a la carpeta de instalación de Python.
- Abra Lib/site-packages.
- Agregue un archivo example.pth vacío a esta carpeta.
- Agregue la ruta requerida al archivo, una por cada línea.
Luego podrá ver todos los módulos dentro de esas rutas desde sus scripts.
IMO, esta es la mejor solución, ya que no depende de la elección de la carcasa o el entorno de trabajo. También funciona en Linux, donde la ruta predeterminada de Python es "/usr/local/lib/pythonX.Y/site-packages". Si eso no funciona, intente poner su archivo .pth en el directorio dist-packages. – matus
para dar un poco más explicación, Python construirá automáticamente sus trayectorias de búsqueda (como se ha mencionado above y here) usando la secuencia de comandos site.py
(típicamente situado en sys.prefix + lib/python<version>/site-packages
así como lib/site-python
). Se puede obtener el valor de sys.prefix:
python -c 'import sys; print(sys.prefix)'
El guión site.py continuación, añade 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 búsquedas estos caminos para <package>.pth
archivos de configuración que contienen rutas de búsqueda adicionales específicas. Por ejemplo, fácil de instalar mantiene su colección de paquetes instalados que se agregan a un archivo específico del sistema, por ejemplo, en Ubuntu es /usr/local/lib/python2.7/dist-packages/easy-install.pth
. En un sistema típico, hay un montón de estos archivos .pth alrededor del cual pueden explicar algunos caminos inesperados en sys.path:
python -c 'import sys; print(sys.path)'
Así que uno puede crear un archivo de .pth y poner en cualquiera de estos directorios (incluyendo el sitedir como se menciona above). 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 OS X hay una ruta de búsqueda especial adicional añadido por site.py para 'marco se basa' (pero parece que funciona para el uso normal de 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 se deben instalar paquetes de terceros (vea el archivo README en ese directorio). Entonces, uno puede agregar un archivo de configuración de ruta que contenga rutas de búsqueda adicionales, p. cree 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.
Esta es la mejor respuesta de todas las soluciones que encontré. Por favor, levántate. –
He agregado permanentemente en Windows Vista, Python 3.5
Sistema> Panel de control> Configuración avanzada del sistema> Avanzado (tap) Variables de entorno> Variables del sistema> (si no ve PYTHONPATH en la columna Variable) (clic) Nuevo> Nombre de la variable: PYTHONPATH> Variable:
Escriba el directorio en el valor Variable. Es detalles de la respuesta de Blue Peppers.
Agregar export PYTHONPATH="${PYTHONPATH}:/my/other/path"
al ~/.bashrc podría no funcionar si PYTHONPATH
no existe actualmente (debido a :
).
export PYTHONPATH="/my/other/path1"
export PYTHONPATH="${PYTHONPATH}:/my/other/path2"
Adición de lo anterior a mi ~/.bashrc hizo el truco para mí en Ubuntu 16.04
En Python 3.6.4 puede persistir sys.path a través de sesiones de pitón de esta manera:
import sys
import os
print(str(sys.path))
dir_path = os.path.dirname(os.path.realpath(__file__))
print(f"current working dir: {dir_path}")
root_dir = dir_path.replace("/util", '', 1)
print(f"root dir: {root_dir}")
sys.path.insert(0, root_dir)
print(str(sys.path))
Le sugiero que use virtualenv y virtualenvwrapper, de lo contrario va a saturar su ruta
- 1. ¿Cómo agrego un directorio con dos puntos a PYTHONPATH?
- 2. Eliminar un directorio permanentemente de git
- 3. ¿Cómo agregar algo a PYTHONPATH?
- 4. ¿Cómo configuro un directorio de biblioteca local de python/PYTHONPATH?
- 5. Agregue un directorio fuente externo a una compilación de CMake
- 6. ¿Cómo agregar a pythonpath en Windows 7?
- 7. PYTHONPATH vs. sys.path
- 8. PYTHONPATH ignorado
- 9. Agregue más de un directorio de recursos al embarcadero
- 10. IronPython ScriptRuntime equivalente a CPython PYTHONPATH
- 11. Cómo importar múltiples ubicaciones a PYTHONPATH (bash)
- 12. Sublime Text 2 & PYTHONPATH
- 13. PYTHONPATH temporal en Windows
- 14. Django: agregue un campo a un modelo
- 15. jquery agregue un fundido a un .addClass
- 16. Navegador Repo en svn "Repositorio trasladado permanentemente a ... reubicar"
- 17. Ignorar permanentemente las advertencias
- 18. Cómo actualizar permanentemente iptables
- 19. Desactive permanentemente AutoEventWireup
- 20. mysql declaraciones preparadas permanentemente
- 21. Restablecer permanentemente el subdirectorio a estado pasado específico
- 22. Reemplazar permanentemente una función
- 23. Java agregue ceros a un número
- 24. Agregue un esquema XML a Visual Studio
- 25. Agregue un int a std :: string
- 26. Agregue un archivo .asmx a asp.net MVC?
- 27. Agregue argumento adicional a un NSPredicate existente
- 28. netbeans: agregar biblioteca permanentemente
- 29. Configuración de PYTHONPATH y PYTHONHOME
- 30. ¿Cómo hacer que maven "agregue entradas de directorio" al empaquetar?
Errata: separador en windows sería un punto y coma. Si necesita anular las rutas del sistema en Windows, la configuración a través de la GUI como variable de entorno de usuario puede no ser suficiente, ya que las variables de usuario se añaden a las variables del sistema. En estos casos, deberá recurrir a un script de inicio que realice los ajustes necesarios. –
@Nathan, tx para el recordatorio en punto y coma, pero (si es un administrador por supuesto) usted puede configurar ** system ** env.vars en Windows (además, el OP no está preguntando cómo ** anular ** la ruta, solo cómo ** anexar ** a ella, entonces, un usuario env .var también estará bien para eso! -). –
desafortunadamente no soy administrador en mi PC de trabajo, así que tengo que recurrir a tales medidas. :( –