¿Cómo verificar si virtualenv fue creado con ‘–no-site-packages’?

A veces recibo errores que sospecho son el resultado de mi aplicación Django que usa módulos Python / aplicaciones Django instalados globalmente en lugar de los que están dentro de su virtualenv.

¿Hay alguna forma de verificar si el virtualenv de mi aplicación se creó con ‘–no-site-packages’ sin tener que eliminarlo, y luego volver a crearlo de la siguiente manera?

deactivate rmvirtualenv my_env mkvirtualenv my_env --no-site-packages workon my_env pip install -r requirements.txt 

Seguramente debe haber una mejor manera! Gracias.

Hay un archivo en /lib/pythonX.X/ llamado no-global-site-packages.txt cuando crea un entorno virtual con --no-site-packages .

Acabo de probar esto con virtualenv 1.7:

 % virtualenv --no-site-packages env.without % virtualenv --system-site-packages env.with % find env.without | sed 's/env.without//' > files.without % find env.with | sed 's/env.with//' > files.with % diff files.with* 230a231 > /lib/python3.2/no-global-site-packages.txt 

Una forma sencilla es abrir el shell interactivo de Python y ejecutar un import somemodule; print somemodule import somemodule; print somemodule y luego verifique la ruta desde donde se importó ese módulo.

 >>> import flask; print flask  

contra

 >>> import flask; print flask  

La solución de @ Rob es válida para versiones más nuevas, he buscado en el código :).

Si tiene uno antiguo (como mi 1.4.5), puede verificar la ruta de acceso de python. Si tiene el directorio predeterminado “sitios-paquetes” en la ruta (por ejemplo, / usr / lib / python / sitio-paquetes), entonces su virtualenv fue creado con los paquetes del sitio.

Puedes comprobarlo en algo como:

 for p in sys.path: if p.find("site-packages") >= 0: print p 

Si tuvieras –no-sitio-paquetes , todas tus rutas serían como:

 /home/user/virtualenv/myenv/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg /home/user/virtualenv/myenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg /home/user/virtualenv/myenv/lib/python2.6/site-packages 

De lo contrario, tendrás algo como:

 /home/user/virtualenv/myenv/lib/python2.6/site-packages/distribute-0.6.10-py2.6.egg /home/user/virtualenv/myenv/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg /home/user/virtualenv/myenv/lib/python2.6/site-packages /usr/local/lib/python2.6/site-packages