not mkvirtualenv mac found entorno crear activate python django virtualenv pip virtualenvwrapper

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