entorno - python setup py egg_info failed with error 1
¿Cómo puedo hacer que apt-get se instale en mi virtualenv? (4)
Por qué querrías hacer esto? El objetivo es evitar hacer cosas así ...
virtualenv whatever
cd whatever
bin/pip install dbus-python
También puede optar por especificar --no-site-packages
para virtualenv
para mantenerlo aislado adicionalmente.
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?
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 compilación de su virtualenv e instálelo de forma no pythonic.
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:
- sudo apt update # Actualizar primero
- sudo apt install python3-matplotlib # Instalar globalmente
- sudo pip3 install -U virtualenv # Instale virtualenv para Python 3 usando pip3
- virtualenv --system-site-packages -p python3 ./venv #la opción de sistema-sitio-paquetes permite que venv vea todos los paquetes globales, incluido matplotlib
- source ./venv/bin/activate #activate el venv para usar matplotlib dentro del virtualenv
- desactivar # no salir hasta que haya terminado de usar el virtualenv
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 ya que 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, luego 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.