¿Cómo puedo hacer que apt-get se instale en mi virtualenv?

Es posible, por supuesto.

Por ejemplo, puedo descargar python-dbus así: $ sudo apt-get descargar python-dbus

¿Pero qué debo hacer a continuación, con este paquete .deb en mi virtualenv actual?

Si realmente necesita hacerlo de esta manera, solo puede copiar los archivos que se instalan globalmente directamente en su virtualenv. Por ejemplo, no pude hacer funcionar Pycurl porque no se estaban instalando las bibliotecas requeridas, pero sí lo hizo apt-get install python-pycurl . Así que hice lo siguiente:

 sudo apt-get install python-pycurl cp /usr/lib/python2.7/dist-packages/pycurl* ~/.virtualenvs/myenv/lib/python2.7/site-packages/ 

La instalación dijo que lo estaba agregando a /usr/lib/python2.7. Así que busqué en ese directorio un paquete de sitios o paquetes dist con pycurl, después de mirar los archivos los copié en mi virtualenv. También deberías copiar cualquier archivo ejecutable de bin en el directorio bin de tu virtualenv.

Además, ejecutar un pip install -r requirements.txt Requirements.txt encontró pycurl allí y lo salté como si lo hubiera instalado a través de pip.

Por qué querrías hacer esto? El objective es evitar hacer cosas así …

 virtualenv whatever cd whatever bin/pip install dbus-python 

También puede elegir especificar --no-site-packages para virtualenv para mantenerlo aislado adicionalmente.

Primero instale las bibliotecas de desarrollo de dbus (es posible que necesite otras bibliotecas de desarrollo, pero esto es todo lo que necesito)

 sudo apt-get install libdbus-1-dev libdbus-glib-1-dev 

A continuación, con su virtualenv activado, ejecute lo siguiente. Fallará pero está bien.

 pip install dbus-python 

Finalmente, ingrese en el directorio de comstackción de su virtualenv e instálelo de una manera no pythónica.

 cd $VIRTUAL_ENV/build/dbus-python chmod +x configure ./configure --prefix=$VIRTUAL_ENV make make install 

Una solución alternativa es instalar globalmente, luego seguir permitiendo que virtualenv pueda verlo. Como ejemplo, digamos que queremos instalar matplotlib para Python 3:

  1. sudo apt update # Actualizar primero
  2. sudo apt install python3-matplotlib # Instalar globalmente
  3. sudo pip3 install -U virtualenv # Instale virtualenv para Python 3 usando pip3
  4. virtualenv –sistema-sitio-paquetes -p python3 ./venv #la opción de sistema-sitio-paquetes permite que venv vea todos los paquetes globales, incluyendo matplotlib
  5. source ./venv/bin/activate #activate el venv para usar matplotlib dentro del virtualenv
  6. desactivar # no salir hasta que haya terminado de usar el virtualenv