2010-05-04 8 views
16

Normalmente preferiría crear virtualenvs con la opción --no-site-packages para un mayor aislamiento, y también porque los paquetes globales predeterminados de python incluyen bastantes paquetes, y generalmente la mayoría de ellos no son necesarios. Sin embargo, todavía quisiera mantener algunos paquetes seleccionados en global, como PIL o psycopg2. ¿Hay una buena manera de incluirlos en el virtualenv, que también se puede automatizar fácilmente?Incluyendo paquete global en un virtualenv que se ha creado con --no-site-packages

+0

Relacionados: [Instalar ciertos paquetes usando virtualenv] (http://stackoverflow.com/questions/434407/) –

Respuesta

11

Si está usando virtualenvwrapper y es posible que pueda usar la secuencia de comandos postmkvirtualenv para crear automáticamente enlaces simbólicos en el nuevo directorio de paquetes de sitios de virtualenv.

#!/bin/sh 
cdsitepackages 
ln -s /path/to/system/site-packages/package-name 
cdvirtualenv 
+0

Olvidé esta pregunta, pero terminé haciendo exactamente esto. –

0

No he intentado esto con esos paquetes específicos, pero supongo que un simple enlace simbólico de los paquetes de sitio globales en los paquetes de sitio de virtualenv podría funcionar, y esto es fácilmente secuenciable.

8

Si está utilizando virtualenvwrapper, el comando shell add2virtualenv debe estar presente en una virtualenv activo. Uso:

add2virtualenv /path/to/package 

para añadir una entrada al archivo de PTH _virtualenv_path_extensions.pth en sus virtualenv site-packages.

La ventaja de utilizar add2virtualenv en lugar de crear enlaces simbólicos usted mismo, es que puede eliminar el paquete de ser importable al comentar su línea en el archivo PTH. Esto facilita la verificación de la validez de su código contra varias versiones de una biblioteca de la que depende.

+0

Sí, estoy de acuerdo, esta es ahora la mejor manera. Sin embargo, estoy bastante seguro de que no estaba disponible hace un par de años. –

+0

Probablemente no estaba disponible. Ciertamente soy un gran admirador de virtualenvwrapper por cosas tan útiles como esa. Por supuesto, también podría hacerlo manualmente, escribiendo su propio archivo PTH. – pcurry

Cuestiones relacionadas