En Debian, ¿cómo agrego un paquete Python en dist-packages a un virtualenv?

En Debian, ¿cómo agrego un paquete Python en dist-packages a un virtualenv?

Dado algún paquete de Python en /usr/share/pyshared/o /usr/lib/pythonX.Y/dist-packages/(tome python-numpyo, python-scipypor 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.pyetc.) para instalar, o tener uno propio?

Básicamente, quiero poder agregar fácilmente paquetes de Python, que tienen extensiones C que son complejas ( ,,, numpyetc. ) , a un entorno virtual.scipypyQt/pysidepygtk

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.inidel archivo depsse ve así:

deps =
    pytest
    ruamel.venvgtk

y para cualquier virtualenv creado pipinstalará ruamel.venvgtky 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_ENVo 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.

información relacionada