variable the create python windows save pythonpath sys

the - set pythonpath



AƱadir permanentemente un directorio a PYTHONPATH (14)

Siempre que use sys.path.append , se sys.path.append el nuevo directorio. Sin embargo, una vez que cierre Python, la lista volverá a los valores anteriores (¿predeterminados?). ¿Cómo agrego permanentemente un directorio a PYTHONPATH?


Agregar export PYTHONPATH="${PYTHONPATH}:/my/other/path" a ~ / .bashrc podría no funcionar si PYTHONPATH no existe actualmente (debido a PYTHONPATH .

export PYTHONPATH="/my/other/path1" export PYTHONPATH="${PYTHONPATH}:/my/other/path2"

Agregar lo anterior a mi ~ / .bashrc hizo el truco por mí en Ubuntu 16.04


Agregué permanentemente en Windows Vista, Python 3.5

Sistema> Panel de control> Configuración avanzada del sistema> Variables de entorno avanzadas (toque)> Variables del sistema> (si no ve PYTHONPATH en la columna de variables) (haga clic en Nuevo)> Nombre de variable: PYTHONPATH> Valor de variable:

Por favor, escriba el directorio en el valor Variable. Es detalles de la respuesta de Blue Peppers.


Debe agregar su nuevo directorio a la variable de entorno PYTHONPATH , separada por dos puntos de su contenido anterior. 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, nuevamente, depende del shell en cuestión; En Windows, puede hacerlo a través de la GUI del sistema para este propósito.

superuser.com puede ser un lugar mejor para preguntar más, es decir, para obtener más detalles si necesita información específica sobre cómo enriquecer una variable de entorno en su plataforma y shell elegidos, ya que no es realmente una pregunta de programación en sí.


El siguiente script funciona en todas las plataformas, ya que es puro Python. Hace uso de la ruta Pathlib, documentada aquí https://docs.python.org/3/library/pathlib.html , para que funcione en varias plataformas. Lo ejecutas una vez, reinicias el kernel y eso es todo. Inspirado por https://medium.com/@arnaud.bertrand/modifying-python-s-search-path-with-pth-files-2a41a4143574 .

from pathlib import Path to_add=Path(path_of_directory_to_add) from sys import path if str(to_add) not in path: minLen=999999 for index,directory in enumerate(path): if ''site-packages'' in directory and len(directory)<=minLen: minLen=len(directory) stpi=index pathSitePckgs=Path(path[stpi]) with open(str(pathSitePckgs/''current_machine_paths.pth''),''w'') as pth_file: pth_file.write(str(to_add))


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:

ln -s /your/path /usr/lib/pymodules/python2.7/


En Python 3.6.4 puede persistir sys.path a través de sesiones de python como esta:

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))

Recomiendo encarecidamente que uses virtualenv y virtualenvwrapper, de lo contrario, saturarás tu ruta


En caso de que alguien todavía esté confundido, si está usando una Mac, haga lo siguiente:

  1. Abrir Terminal
  2. Escriba open .bash_profile
  3. En el archivo de texto que aparece, agregue esta línea al final: export PYTHONPATH=$PYTHONPATH:foo/bar
  4. Guarda el archivo, reinicia el terminal, y listo.

En lugar de manipular PYTHONPATH , también puede crear un archivo de configuración de ruta . Primero averigua en qué directorio Python busca esta información:

python -m site --user-site

Por alguna razón, esto no parece funcionar en Python 2.7. Allí puedes usar:

python -c ''import site; site._script()'' --user-site

Luego cree un archivo .pth en ese directorio que contenga la ruta que desea agregar (cree 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"


Esto funciona en Windows

  1. En Windows, con Python 2.7 vaya a la carpeta de configuración de Python.
  2. Abrir lib / paquetes de sitio.
  3. Agregue un ejemplo .pth archivo vacío a esta carpeta.
  4. Agregue la ruta requerida al archivo, una por cada línea.

Entonces podrás ver todos los módulos dentro de esas rutas desde tus scripts.


Para dar un poco más de explicación, Python construirá automáticamente sus rutas de búsqueda (como se mencionó above y here ) utilizando el script site.py (que normalmente se encuentra en sys.prefix + lib/python<version>/site-packages así como lib/site-python ). Uno puede obtener el valor de sys.prefix:

python -c ''import sys; print(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 los archivos de configuración de <package>.pth que contienen 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 es /usr/local/lib/python2.7/dist-packages/easy-install.pth . En un sistema típico hay un montón de estos archivos .pth en torno a los cuales se pueden explicar algunas rutas inesperadas en sys.path:

python -c ''import sys; print(sys.path)''

Entonces, uno puede crear un archivo .pth y colocarlo en cualquiera de estos directorios (incluido el sitedir como se mencionó 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 OSX hay una ruta de búsqueda adicional especial agregada por site.py para ''framework builds'' (pero parece funcionar para el uso normal de python en la línea de comandos): /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 los paquetes de terceros (consulte el archivo README en ese directorio). Así que uno puede agregar un archivo de configuración de ruta allí 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.


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 debería verse como:

export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python"

al final del archivo .bash_profile .


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 configurar la variable de entorno PYTHONPATH , en un archivo rc global, como ~/.profile en mac o linux, o mediante Panel de control -> Sistema -> pestaña Avanzado -> Variables de entorno en las ventanas.


Si está usando bash (en una distribución de Mac o GNU / Linux), agregue esto a su ~/.bashrc

export PYTHONPATH="${PYTHONPATH}:/my/other/path"


Solo para agregar la respuesta de awesomo, también puede agregar esa línea en su ~/.bash_profile o ~/.profile