python - entorno - Virtualenv en Ubuntu sin paquetes de sitio
virtualenv python 3 tutorial (5)
Encuentro que en esta situación, los enlaces simbólicos, o incluso la copia de archivos específicos (paquetes, módulos, extensiones) funciona muy bien.
Permite que el programa emule ejecutarse en el entorno de destino, en lugar de cambiar la aplicación para adaptarla al entorno de desarrollo.
El mismo trato para algo como App Engine.
He estado usando virtualenv últimamente mientras desarrollo en python. Me gusta la idea de un entorno de desarrollo segregado utilizando la opción --no-site-packages, pero hacer esto mientras se desarrolla una aplicación PyGTK puede ser un poco complicado. Los módulos PyGTK están instalados en Ubuntu por defecto, y me gustaría hacer un virtualenv (con --no-site-packages) consciente de los módulos específicos que se encuentran en otras partes del sistema.
¿Cuál es la mejor manera de hacer esto? ¿O debería simplemente aspirar y soltar la opción --no-site-packages?
Mira el script de gancho postmkvirtualenv aquí:
https://.com/a/9716100/60247
En ese caso, lo está usando para importar PyQt y SIP después de crear un nuevo Virtualenv, pero puede agregar los paquetes que necesita a LIBS.
Y vote ese script porque es fantástico :)
Si desea incluir los enlaces a python gtk-2.0 del sistema relevante en el virtualenv, puede usar pip para instalar ruamel.venvgtk :
pip install ruamel.venvgtk No tiene nada importado, los enlaces se configuran durante la instalación.
Esto es especialmente útil si usa tox
, en ese caso solo necesita incluir la dependencia (para tox):
deps:
pytest
ruamel.venvgtk
y un nuevo entorno de configuración python2.7 tendrá los enlaces relevantes incluidos antes de ejecutar las pruebas.
Se puede encontrar información más detallada sobre cómo se configuran los enlaces en esta respuesta
Una forma es agregar las rutas a su código usando sys.path.
import sys
sys.path.append(somepath)
Otra forma es usar site, que procesa archivos .pth además de agregar a sys.path.
import site
site.addsitedir(sitedir, known_paths=None)
https://docs.python.org/library/site.html
Pero probablemente no desee agregar esto a todo su código relacionado.
He visto mencionar que sitecustomize.py se usa para realizar algo como esto, pero después de algunas pruebas no pude hacerlo funcionar como podría esperarse.
Aquí se menciona que la importación automática de sitecustomize.py terminó en 2.5, si no está en 2.5, pruébela. (simplemente agregue uno de los métodos de agregar ruta al archivo y colóquelo en el directorio en el que se ejecuta su programa). Se menciona un método alternativo en la publicación para usuarios de 2.5 en adelante.
$ virtualenv --no-site-packages --python=/usr/bin/python2.6 myvirtualenv
$ cd myvirtualenv
$ source bin/activate
$ cd lib/python2.6/
$ ln -s /usr/lib/pymodules/python2.6/gtk-2.0/
$ ln -s /usr/lib/pymodules/python2.6/pygtk.pth
$ ln -s /usr/lib/pymodules/python2.6/pygtk.py
$ ln -s /usr/lib/pymodules/python2.6/cairo/
$ python
>>> import pygtk
>>> import gtk