
Dado algún paquete de Python en /usr/share/pyshared/
o /usr/lib/pythonX.Y/dist-packages/
(tome python-numpy
o, python-scipy
por ejemplo), ¿cómo agrego ese paquete a un virtualenv?
Al agregar el paquete a virtualenv, ¿se requiere que utilice el método de instalación "normal" de Python ( setpy.py
etc.) para instalar, o tener uno propio?
Básicamente, quiero poder agregar fácilmente paquetes de Python, que tienen extensiones C que son complejas ( ,,, numpy
etc. ) , a un entorno virtual.scipy
pyQt/pyside
pygtk
Respuesta1
Como indicó, lo mejor suele ser hacer una rueda, especialmente si la reinstale con regularidad.
Para los enlaces gtk de Python, esto no funcionó para mí y necesitaba alguna forma de probar el código usando tox
(que crea los entornos virtuales para usted con --no-site-packages). Para fines de prueba, sería suficiente (para mí) vincular las versiones relevantes instaladas en el sistema, pero no todo desde site-packages
/ dist-packages
.
Para esto creé un paquete instalable (ruamel.venvgtk
), que configura los enlaces adecuados para Python2.7 y Python3.4 en sistemas basados en Debian (Ubuntu, Linux Mint). Lo hace durante la configuración del programa, por lo que no es necesario cambiarlo. La sección tox.ini
del archivo deps
se ve así:
deps =
pytest
ruamel.venvgtk
y para cualquier virtualenv creado pip
instalará ruamel.venvgtk
y creará los enlaces relevantes.
Respuesta2
Sí, cuando su virtualenv está activo, necesita instalar el paquete requerido usando distutils, el método de instalación "normal" de Python ( python setup.py install
), o con una herramienta compatible con virtualenv (por ejemplo pip install package
).
La versión del paquete que instale será la versión del paquete activo para virtualenv. No importa si creas el virtualenv usando virtualenv MY_ENV
o virtualenv --no-site-packages MY_ENV
. En el primer caso, todos los paquetes instalados en su sistema Python estarán disponibles en virtualenv, pero cualquier paquete que instale en virtualenv enmascarará la versión en su sistema Python mientras virtualenv esté activo. En el segundo caso, tendrá un entorno Python aislado en virtualenv, con solo los paquetes de biblioteca estándar y todo lo que instale allí disponible.
Tenga en cuenta que paquetes como Numpy y Scipy no proporcionan archivos binarios prediseñados en Linux, por lo que deberá sentirse cómodo creándolos usted mismo si no desea utilizar las versiones disponibles a través de su administrador de paquetes.
Respuesta3
Supongo que dado que esta pregunta no ha tenido actividad durante más de un año (a partir de marzo de 2014), nadie tiene una respuesta, así que escribiré cómo resolví el problema.
Para paquetes cuyo método de instalación fuente respeta los entornos virtuales (numpy/scipy, pyside), use ruedas para evitar tener que reconstruir en cada venv.
Para los paquetes que no lo hacen (GTK), depende de cómo se conectan a Python.