requests - Instalar Python-Dbus en virtualenv
requests html python (7)
Estoy ejecutando una aplicación en un entorno virtual que necesita acceso a DBus (para interactuar con Network Manager, principalmente).
Intenté instalar Dbus-Python con easyinstall y pip, pero ambos fallaron.
Cuando trato de hacer esto:
(myvirtualenv)borrajax@borrajax-computer:~/Documents/Projects/VirtualEnvs/current_env$ bin/pip install dbus-python
Pip me grita con:
Downloading/unpacking dbus-python
Downloading dbus-python-1.1.1.tar.gz (596kB): 596kB downloaded
Running setup.py egg_info for package dbus-python
Traceback (most recent call last):
File "<string>", line 16, in <module>
IOError: [Errno 2] No such file or directory: ''/home/borrajax/Documents/Projects/VirtualEnvs/current_env/build/dbus-python/setup.py''
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 16, in <module>
IOError: [Errno 2] No such file or directory: ''/home/borrajax/Documents/Projects/VirtualEnvs/current_env/build/dbus-python/setup.py''
----------------------------------------
Command python setup.py egg_info failed with error code 1 in /home/borrajax/Documents/Projects/VirtualEnvs/current_env/build/dbus-python
Storing complete log in /home/borrajax/.pip/pip.log
He tenido algunos problemas con los enlaces de dbus de Python y su "accesibilidad" de mis módulos de Python en el pasado, así que no sé cuál puede ser la mejor forma de configurar Dbus-Python en un entorno virtual. ¿Alguien ha logrado con éxito esto? ¿O alguien tiene una idea de cómo hacer esto?
Gracias de antemano.
@TheMeaningfulEngineer muchas gracias, he tenido algunos problemas para instalar dbus a través de pip y eso era lo que necesitaba. Espero que tenga un buen día donde sea que esté;)
para comprobar si hay en local - sudo apt list --installed | grep pakage-name
sudo apt list --installed | grep pakage-name
sudo apt-get install libdbus-glib-1-dev libdbus-1-dev
y después de esta línea networkmanager
dbus
y networkmanager
sin errores
esto es exactamente lo que hice, y antes de eso revisé toda mi versión de dbus y networkmanager después de hacer lo que dijo @TheMeaningfulEngineer que está funcionando, si estoy haciendo algo mal en este comentario, intente explicarme qué o por qué, y lo siento por mi Inglés.
Cuando pip
intenta instalar un paquete, busca setup.py
, que dbus-python
no tiene, por lo que tendrá que descargar la fuente y compilarla manualmente. No debería ser demasiado difícil:
PYTHON=python3.3 ./configure --prefix=/tmp/dbus-python
make
make install
entonces puede mover los archivos compilados a su virtualenv.
edición: a partir de dbus-python-1.2.2 (publicado 2016-02-22) dbus-python tiene un setup.py
, por lo que pip debería poder instalarlo
El OP parece haber abierto un ticket en freedesktop.org para esto, que permanece abierto; sin embargo, hay un parche adjunto a ese ticket que podría aplicarse a la mayoría de las versiones de python-dbus y luego volver a empaquetarse como un nuevo archivo comprimido.
Mi sugerencia es instalar el paquete del sistema para los enlaces DBUS de Python y luego crear el virtualenv con la opción de línea de comandos --system-site-packages
para permitir el acceso a los paquetes de Python de todo el sistema (incluido el paquete dbus
) desde el virtualenv activado. . Por ejemplo, en Debian / Ubuntu (o una distribución derivada):
$ sudo apt-get install python-dbus
$ virtualenv --system-site-packages dbus-venv
Para usar el módulo construido en Python 3 venv
lugar de virtualenv
:
$ sudo apt-get install python-dbus
$ sudo apt-get install python3-venv
$ python3 -m venv --system-site-packages my_venv
Otra solución es simplemente copiar manualmente los archivos / bibliotecas de dbus
directamente a su virtualenv:
cp -r /usr/lib/pythonX.X/{site or dist}-packages/dbus myvirtenv/usr/lib/pythonX.X/site-packages/
cp -r /usr/lib/pythonX.X/{site or dist}-packages/_dbus_*.so myvirtenv/usr/lib/pythonX.X/site-packages/
Para Python, dado que dbus-python ahora está obsoleto, debería usar pydbus :
pip install pydbus
Esto me ha funcionado.
Ve a tu Venv sigue estos 2 pasos:
1)sudo apt-get install libdbus-glib-1-dev libdbus-1-dev
2)pip install dbus-python
verificar con:
3) pip freeze
si está instalado correctamente verá: dbus-python == 1.2.8