python - mkvirtualenv - ¿Cómo verificar si virtualenv se creó con ''--no-site-packages''?
virtualenv ubuntu (3)
A veces recibo errores que sospecho son el resultado de mi aplicación Django utilizando módulos de Python instalados globalmente / aplicaciones de Django en lugar de aquellos dentro de su virtualidad.
¿Hay alguna manera de comprobar si la aplicación virtual de mi aplicación se creó con ''--no-site-packages'' sin tener que eliminarla, y luego volver a crearla 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 <env>/lib/pythonX.X/
llamado no-global-site-packages.txt
cuando se 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 manera fácil es abrir el shell de python interactivo y ejecutar import somemodule; print somemodule
import somemodule; print somemodule
y luego verifique la ruta desde donde se importó ese módulo.
>>> import flask; print flask
<module ''flask'' from ''/home/xxx/dev/xxx/env/lib/python2.7/site-packages/flask/__init__.pyc''>
vs.
>>> import flask; print flask
<module ''flask'' from ''/usr/lib64/python2.7/site-packages/flask/__init__.pyc''>
La solución de @ Rob es válida para las versiones más nuevas. He investigado el código :).
Si tiene uno antiguo (como mi 1.4.5), puede verificar el camino de Python. Si tiene el directorio predeterminado "site-packages" en la ruta (por ejemplo, / usr / lib / python / site-packages), entonces su virtualenv se creó con site-packages.
Puedes verlo de algo como:
for p in sys.path:
if p.find("site-packages") >= 0:
print p
Si tuviera --no-site-packages , todas sus 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