Jump to content

Recommended Posts

Posted

Hallo,

 

nachdem ich vor einiger Zeit auf Arch Linux umgestiegen bin, wollte ich den Brick Viewer dort wieder installieren. Da dort die Debian Pakete natürlich nicht funktionieren wollte ich die Installation deshalb wie unter http://www.tinkerforge.com/en/doc/Software/Brickv_Install_Linux.html#from-source beschrieben durchführen. Dies schlägt allerdings fehl mit dem Fehler:

Traceback (most recent call last):
  File "build_serviceproviders.py", line 30, in <module>
    import urllib2
ImportError: No module named 'urllib2'

Ein wenig Recherche brachte zu Tage, dass urllib2 nur unter Python2 verfügbar ist. Arch verwendet jedoch standardmäßig mit dem Befehl python die Version 3.x. Auch ein expliziter Start mit python2 brachte nicht den gewünschten Erfolg und es trat wieder die selbe Fehlermeldung auf.

 

Im Source fand ich dann die zahlreichen system Aufrufe, die z.B. in der build_ui.py in Zeile 79 stehen:

system("python build_serviceproviders.py")

 

Das Problem ist nun aber, dass Arch an dieser Stelle die Datei natürlich wieder mit Python 3 ausführt, da die Version 2 an dieser Stelle nicht explizit übergeben wird. In der Datei build_serviceproviders.py wird nun aber zum ersten Mal eine Bibliothek eingebunden, die nicht unter Python 3 verfügbar ist. Somit stürzt der Build Vorgang ab.

Ich schlage daher vor den Code so anzupassen, dass Python über den Befehl python2 aufgerufen wird. Auf Debian funktioniert das so weit ich weiß auch und unter anderen Linux Distribution (z.B. Arch) können so Probleme vermieden werden.

 

Der Workaround sieht zurzeit wie folgt aus:

[*]Den Symlink zu Python3 löschen: rm /usr/bin/python

[*]Den Symlink zu Python2 erstellen: ln -s python2 /usr/bin/python

 

Da ich aber nicht weiß, wo auf meinem System möglicherweise erwartet wird, dass der Befehl python die Version 3.x aufruft habe ich diese Änderung nach dem Build wieder rückgangig gemacht.

 

Robin

Posted

Das geht leider nicht so einfach. Das muss auch unter Windows und Mac OS X funktionieren und dort wird diese python2/python3 Namenskonvention nicht verwendet. Ich fürchte da gibt es keine einfache Lösung für.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...