7 votes

ImportError : Aucun module nommé dbus

J'essayais de mettre à jour mon Python et j'ai foutu en l'air tout mon système.

Je suis maintenant en mesure de lancer mon centre logiciel. J'ai essayé de trouver plusieurs solutions sur Google, mais rien n'y fait. Mon Centre logiciel ne peut pas démarrer.

Lorsque j'essaie de le démarrer, cette erreur s'affiche :

astephen@localhost:/usr/bin$ ./software-centerGtk-Message: Failed to load module "gtk-vector-screenshot"
Traceback (most recent call last):
File "./software-center", line 36, in <module>
from softwarecenter.utils import (
File "/usr/share/software-center/softwarecenter/utils.py", line 19, in <module>
import dbus
ImportError: No module named dbus

J'ai essayé de réinstaller dbus en utilisant :

apt-get install --reinstall dbus

Mais cela n'a pas aidé.

astephen@localhost:/usr/bin$ sudo apt-get install --reinstall dbusReading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not      upgraded.
Need to get 0 B/231 kB of archives.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 676272 files and directories currently installed.)
Preparing to unpack .../dbus_1.6.18-0ubuntu4.3_amd64.deb ...
Unpacking dbus (1.6.18-0ubuntu4.3) over (1.6.18-0ubuntu4.3) ...
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up dbus (1.6.18-0ubuntu4.3) ...

4voto

David Foerster Points 34353

Une recherche rapide révèle que le nom du paquet Debian pour le module Python DBUS s'appelle python-dbus (ou python3-dbus ). Pourquoi il n'est pas disponible alors qu'il s'agit d'une dépendance explicite de l'application software-center Je n'arrive pas à comprendre le paquet. Vous devriez réinstaller les deux paquets au cas où ils auraient été corrompus :

sudo apt-get install --reinstall software-center python-dbus

4voto

Koshensky Points 51

Bon, cela fait deux ans que cette question a été posée, mais cela ne m'a pas empêché de perdre mon temps sur le même problème.

pip3 install dbus-python

m'a juste fait rencontrer quelques problèmes comme :

... 
checking python extra linking flags... -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
  checking consistency of all components of python development environment... no
  configure: error: in `/tmp/pip-build-407jqhld/dbus-python/build/temp.linux-x86_64-3.7':
  configure: error:
    Could not link test program to Python. Maybe the main Python library has been
    installed in some non-standard library path. If so, pass it to configure,
    via the LIBS environment variable.
    Example: ./configure LIBS="-L/usr/non-standard-path/python/lib"
    ============================================================================
     ERROR!
     You probably have to install the development version of the Python package
     for your distribution.  The exact name of this package varies among them.
    ============================================================================

  See `config.log' for more details
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/tmp/pip-build-407jqhld/dbus-python/setup.py", line 111, in <module>
      tests_require=['tap.py'],
    File "/home/schwaigeradm/.local/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup
      return distutils.core.setup(**attrs)
    File "/usr/lib/python3.7/distutils/core.py", line 148, in setup
      dist.run_commands()
    File "/usr/lib/python3.7/distutils/dist.py", line 966, in run_commands
      self.run_command(cmd)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/home/schwaigeradm/.local/lib/python3.7/site-packages/wheel/bdist_wheel.py", line 192, in run
      self.run_command('build')
    File "/usr/lib/python3.7/distutils/cmd.py", line 313, in run_command
      self.distribution.run_command(command)
    File "/usr/lib/python3.7/distutils/dist.py", line 985, in run_command
      cmd_obj.run()
    File "/tmp/pip-build-407jqhld/dbus-python/setup.py", line 64, in run
      cwd=builddir)
    File "/usr/lib/python3.7/subprocess.py", line 347, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['/tmp/pip-build-407jqhld/dbus-python/configure', '--disable-maintainer-mode', 'PYTHON=/usr/bin/python3', '--prefix=/tmp/pip-build-407jqhld/dbus-python/build/temp.linux-x86_64-3.7/prefix']' returned non-zero exit status 1.

  ----------------------------------------
  Failed building wheel for dbus-python
  Running setup.py clean for dbus-python
Failed to build dbus-python

L'installation ou la réinstallation d'un de mes logiciels actuels n'a pas aidé. Mais j'ai réalisé que c'est un problème lié à python3.7 :

Comme dans python2.7 il était possible d'ajouter import dbus, mais dans pyhon3.7 cela a échoué avec la même erreur :

Traceback (most recent call last):
    import dbus
  File "/usr/lib/python3/dist-packages/dbus/__init__.py", line 77, in <module>
    import dbus.types as types
  File "/usr/lib/python3/dist-packages/dbus/types.py", line 6, in <module>
    from _dbus_bindings import (
ModuleNotFoundError: No module named '_dbus_bindings'

La solution est assez simple :

sudo apt-get install python3.7-dev
pip3 install dbus-python

3voto

Benyamin Jafari Points 1687

Vous devez installer dbus-python en utilisant pip o pip3 :

pip3 install dbus-python

ou

pip install dbus-python

Vous pouvez avoir besoin sudo avant les commandes ci-dessus.

0voto

Stephan Bauer Points 3827

Adrian O'neil Stephen :

J'ai essayé d'exécuter sudo -h pip install dbus mais il a retourné : Could not find a version that satisfies the requirement dbus (from versions : ) No matching distribution found for dbus Any ideas ? :( -

Des informations supplémentaires sur ce que vous avez fait seraient utiles, cependant, mes pressentiments :

Considérer un problème de mise à jour de python3

Lors de la mise à jour vers python3, les modules changent parfois de nom / la procédure d'importation change ; avez-vous supprimé votre ancien environnement Python manuellement ou installé quelque chose depuis git ?

Essayez aptitude

Installez aptitude, il recommande des moyens de résoudre les dépendances. Soyez prudent, cependant, vérifiez toujours ce qu'il veut faire, quelles autres choses peuvent être affectées par ce changement, et écrivez ce que vous faites, et ce que l'aptitude fait pour que vous puissiez toujours réparer les erreurs éventuelles. .

Réinstaller votre système

Parfois, il est préférable de tout détruire (dans un problème d'erreur d'OS alambiqué, après avoir tout sauvegardé, en utilisant la fonction d'exportation des applications que vous voulez sauvegarder, de préférence. Cela rend les choses beaucoup plus faciles).

0voto

chrisrxth Points 363

Si votre module python3 ne trouve pas la bonne version des paquets, une astuce possible est de créer des liens symboliques vers les anciennes versions. Dans le cas de dbus, vous pouvez faire ce qui suit. (Disons que vous venez de mettre à jour python3.5 vers python3.6) $ cd /usr/lib/python3/dist-packages/ $ ln -s _dbus_glib_bindings.cpython-{35m,36m}-x86_64-linux-gnu.so

Si vous obtenez d'autres erreurs, essayez de lier tous les paquets.

a=$(find /usr/lib/python3/dist-packages -name '*35m*so')
b=$(echo $a | tr 35m 36m)
IFS=' ' read -r -a a <<< $a
IFS=' ' read -r -a b <<< $b

for ((i=0;i<${#a[@]};++i)); do
    ln -s "${a[i]}" "${b[i]}"
done

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X