2012-05-24 9 views
70

Estoy intentando agregar una ruta a la variable de entorno PYTHONPATH, que solo sería visible desde un entorno virtualenv particular.Cómo agrego una ruta a PYTHONPATH en virtualenv

Intenté SET PYTHONPATH=... bajo un símbolo del sistema virtualenv, pero eso establece la variable para todo el entorno.

¿Cómo lo consigo?

Respuesta

123

Por lo general, puede evitar tener que hacer algo con PYTHONPATH por using .pth files. Simplemente coloque un archivo con una extensión .pth (cualquier nombre de pila funciona) en la carpeta de paquetes de sitio de virtualenv, p. Ej. lib\python2.7\site-packages, con la ruta absoluta al directorio que contiene su paquete como su único contenido.

80

Si está utilizando virtualenv, probablemente debería también estar usando virtualenvwrapper, en cuyo caso se puede utilizar el comando add2virtualenv añadir rutas de acceso a la ruta de Python para la virtualenv actual:

add2virtualenv directory1 directory2 …

+0

¿de dónde viene esa utilidad provienen de estorbar? Intenté instalar virtualenvwrapper en pip y no lo conseguí. – AlanObject

+0

https://bitbucket.org/dhellmann/virtualenvwrapper – crimeminister

+2

¿Qué tal eliminar de virtualenv? – silverdagger

4

Usted También puedes intentar poner enlace simbólico a uno de tus virtualenv.

por ejemplo. 1) active su virtualenv 2) ejecute python 3) import sys y compruebe sys.path 4) encontrará allí la ruta de búsqueda de python. Elija uno de esos (por ejemplo, paquetes de sitio) 5) vaya allí y cree un enlace simbólico a su paquete como: ln -s vía-a-su-paquete nombre-con-lo-que-será-importando

De esta forma, podrá importarlo incluso sin activar su virtualenv. Simplemente intente: path-to-your-virtualenv-folder/bin/python e importe su paquete.

+0

Supongo que esto fue downvoted por usar enlaces simbólicos en lugar de archivos .pth. Sin embargo, funcionó para mí, así que, por qué. –

0

En Python 3.6.4

import sys 
import os 

print(str(sys.path)) 

dir_path = os.path.dirname(os.path.realpath(__file__)) 
print(f"current working dir: {dir_path}") 

sys.path.insert(0, dir_path) 

me sugieren fuertemente que utilice virtualenv y virtualenvwrapper para evitar camino

Cuestiones relacionadas