Revierta la opción `--no-site-packages` con virtualenv

126

Creé un virtualenv usando la --no-site-packagesopción e instalé muchas bibliotecas. Ahora me gustaría revertir la --no-site-packagesopción y usar también los paquetes globales.

¿Puedo hacer eso sin recrear el virtualenv?

Más precisamente:

Me pregunto qué sucede exactamente al crear un virtualenv usando la --no-site-packagesopción en lugar de no usar esa opción.

Si sé lo que sucede, entonces puedo descubrir cómo deshacerlo.

Olivier Verdier
fuente
otra pregunta fue marcada como duplicada de esta, y recibió una respuesta que también podría ser interesante aquí.
mariotomo

Respuestas:

162

Intente eliminar (o renombrar) el archivo no-global-site-packages.txten su Libcarpeta en su entorno virtual.

Donde venv es el nombre de su entorno virtual y python3.4 corresponde a la versión de python involucrada, por ejemplo:

$ rm venv/lib/python3.4/no-global-site-packages.txt

Y si cambias de opinión y quieres volver a ponerlo:

$ touch venv/lib/python3.4/no-global-site-packages.txt

Nota: Si no ve el archivo anterior, entonces tiene una versión más nueva de virtualenv. Querrás seguir esta respuesta en su lugar

ars
fuente
18
Eso lo hará. La existencia (o inexistencia) de ese archivo es el único efecto directo de la marca de paquetes sin sitio. El site.py personalizado de Virtualenv busca ese archivo para decidir si agrega directorios globales de paquetes de sitio a sys.path.
Carl Meyer
¡Brillante! Eso lo hizo! Muchas gracias por esa respuesta, y gracias a Carl Meyer por el comentario adicional.
Olivier Verdier
1
eso está virtualenv/python2.7/no-global-site-packages.txten mi servidor ubuntu.
caesarsol
44
La versión de Windows de virtualenv contiene el virtualenv/pyenv.cfgarchivo. Hay una opción para los paquetes de sitio: include-system-site-packages = false cambie este valor y llame a Activate.ps1
georgik
@georgik: eso también funciona para la versión Linux de venvfor Python 3.4.
Tomasz Dzieniak
13

Al menos para Python 3.5.2, hay un pyvenv.cfgarchivo en la raíz del directorio virtualenv. Todo lo que necesita hacer es cambiar la include-system-site-packagesbandera de falsea true:

home = /usr/bin
include-system-site-packages = false  # <- change this to "true"
version = 3.5.2
kotrfa
fuente
12

Cuando use virtualenvwrapper para administrar virtualenvs, puede usar la función de shell toggleglobalsitepackagespara cambiar entre usar y no usar paquetes de sitio.

Adaephon
fuente
2

Intenta agregar un enlace simbólico entre /virtualenv_root/lib/y/path/to/desired/site-packages/

Tim McNamara
fuente
+1 Esto funciona en mi sistema (openSUSE Linux 12.3, Python 2.7.3, virtualenv 1.8.4); No tengo un en no-global-site-packages.txtningún lado.
Aaron Digulla
2

Vaya a su carpeta venv y ábralo pyvenv.cfg. (Por ejemplo, si se llama a su entorno virtual myenv, el archivo se ubicará en myenv\pyvenv.cfg)

Verás una configuración booleana llamada include-system-site-packages

Establezca esa configuración truepara usar paquetes globales

Si desea deshabilitar el uso de paquetes globales, simplemente establezca esa configuración en su falselugar.

Zain Rizvi
fuente