eric6: ImportError „No module named 'PySide'“

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
André
User
Beiträge: 7
Registriert: Sonntag 14. Juni 2015, 16:59

Hallo liebe Leute,

ich arbeite mich gerade ein wenig in Python und PySide ein. Leider erhalte ich, wenn ich Beispiele zur GUI-Programmierung in der IDE eric6 ausführe, folgende Fehlermeldung: ImportError „No module named 'PySide'“.

Wenn ich jedoch von der Kommandozeile ausführe (python Beispieldatei.py), dann laufen die Beispiele.

Zu meinen Umgebungen. Ich benutze Fedora Linux in der Version 22 mit GNOME 3.16.2. Ich habe PySide und eric über die Fedora-Repos bezogen:

Code: Alles auswählen

python-pyside.x86_64                       1.2.2-2.fc22
eric.noarch                                6.0.3-2.fc22
Ich habe bereits nach diesem Fehler gesucht, aber meistens liegt es daran, dass PySide nicht installiert ist.

Ich habe auch in den Einstellungen von eric6 gesucht, aber nichts gefunden, wo ich etwas zu PySide einstellen könnte.

Hat jemand eine Idee woran es liegen könnte bzw. was ich versuchen könnte? BTW: eric6 scheint eine wirklich gute IDE zu sein und ich fände es toll, sie zum Laufen zu bekommen!

Danke Euch und viele Grüße,
André
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Möglicherweise sind die Angaben, wo nach Modulen gesucht werden soll, fehlerhaft eingestellt. Vergleiche doch mal die Ausgabe von `sys.path` in Eric mit der Ausgabe von `sys.path` in einer "normalen" Python-Sitzung. Insbesondere solltest du darauf achten, ob der Pfad enthalten ist, der dir bei `PySide.__file__` ausgegeben wird.

Auch könnte es sein, dass dein Python-Interpreter, den du (vermutlich) aus der Shell aufrufst, gar nicht der selbe ist, der in Eric verwendet wird. Das eine könnte Version 2.7, das andere eine Version aus dem Python-3-Zweig sein. Dann wäre PySide möglicherweise gar nicht im Eric-eigenen Interpreter installiert worden.

Für den Fall, dass das zweite Szenario zutrifft (falscher Interpreter), dann solltest du am besten herausfinden, wie man den von Eric verwendeten Interpreter definieren kann. Diese Einstellung sollte dann auf den Interpreter mit installiertem PySide gesetzt werden. Oder alterntiv installiert man PySide nochmal in der anderen Interpreter-Version. Zumindest von Debian-basierten Systemen weiß ich, dass es bei den Paketen der Distribution oftmals eine "python"- und eine "python3"-Variante gibt. Möglicherweise musst du bloß die Eric-taugliche Variante nachinstallieren.

Die Interpreter-Version kann man sich übrigens mittels `sys.version_info` ausgeben lassen.
André
User
Beiträge: 7
Registriert: Sonntag 14. Juni 2015, 16:59

Ich habe versucht das herauszufinden, also die Tipps umzusetzen, aber ich erhalte keine korrekten Ausgaben. Ich dachte, ich kann die Befehle so in den Interpreter eingeben, aber das funktioniert nicht.

Code: Alles auswählen

>>> sys.version_info
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'sys' is not defined
Was muss ich stattdessen machen?
BlackJack

@André: Du musst das `sys`-Modul importieren bevor Du auf Attribute davon zugreifen kannst.
André
User
Beiträge: 7
Registriert: Sonntag 14. Juni 2015, 16:59

snafu hat geschrieben:Auch könnte es sein, dass dein Python-Interpreter, den du (vermutlich) aus der Shell aufrufst, gar nicht der selbe ist, der in Eric verwendet wird. Das eine könnte Version 2.7, das andere eine Version aus dem Python-3-Zweig sein.
Ja, das ist es. Aus der Shell habe ich Python 2.7 aufgerufen und in Eric wird Python 3 aufgerufen. Komischerweise erhalte ich in der Shell für beide Versionen folgende Ausgaben:

Code: Alles auswählen

>>> import sys
>>> PySide.__file__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'PySide' is not defined
Komisch ist es deshalb, weil eine Python-Datei, in der ich PySide verwende, mit Python 2.7 die erstellte GUI korrekt anzeigt und mit Python 3 nicht?!
snafu hat geschrieben:Für den Fall, dass das zweite Szenario zutrifft (falscher Interpreter), dann solltest du am besten herausfinden, wie man den von Eric verwendeten Interpreter definieren kann. Diese Einstellung sollte dann auf den Interpreter mit installiertem PySide gesetzt werden.
Das heißt, ich müsste mit Python 2.7 programmieren. Da ich noch nicht so viel Erfahrung (mit Python) habe, wollte ich direkt in Python 3 einsteigen ...
snafu hat geschrieben:Oder alterntiv installiert man PySide nochmal in der anderen Interpreter-Version.
Die Paketverwaltung von Fedora lässt mir da keine Auswahl. Es gibt nur ein „allgemeines“ PySide-Paket:

Code: Alles auswählen

python-pyside.x86_64                  1.2.2-2.fc22                  Python bindings for Qt4
Kann ich das manuell für Python 3 nachinstallieren? Ich recherchiere mal ...

Danke!!
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Auch `PySide` musst du importieren bevor du es benutzen kannst.
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

André hat geschrieben:Komischerweise erhalte ich in der Shell für beide Versionen folgende Ausgaben:

Code: Alles auswählen

>>> import sys
>>> PySide.__file__
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'PySide' is not defined
Da fehlt ein ``import PySide``. Module müssen halt importiert werden, bevor auf sie zugegriffen werden kann. Dieses Vorgehen hat man übrigens in so ziemlich jeder Programmiersprache, wenn auch in jeweils anderer Form. Und es gehört auch zu den absoluten Grundlagen, welche du dir besser selbständig aneignen solltest. Es existiertieren reichlich Dokumentation und Tutorials zu dem Thema im Netz.

Übrigens ist die Frage auch ziemlich ähnlich zu der zuvor gestellten Frage bezüglich ``sys.version_info``, die dir ja bereits beantwortet wurde. Erkennst du den Zusammenhang...? ;)
André
User
Beiträge: 7
Registriert: Sonntag 14. Juni 2015, 16:59

snafu hat geschrieben:Und es gehört auch zu den absoluten Grundlagen, welche du dir besser selbständig aneignen solltest.
Danke, da gebe ich Dir recht! :wink:
snafu hat geschrieben:Übrigens ist die Frage auch ziemlich ähnlich zu der zuvor gestellten Frage bezüglich ``sys.version_info``, die dir ja bereits beantwortet wurde. Erkennst du den Zusammenhang...? ;)
Den Zusammenhang bezüglich import? Wenn es (nur) dieser ist, dann habe ich ihn erkannt. ;)
Was ich aber nun herausgefunden habe, - dank Eurer Hilfe - ist, dass PySide nur für Python 2 installiert ist:

Code: Alles auswählen

Python 2.7.10 (default, May 27 2015, 18:11:38) 
>>> import PySide
>>> PySide.__file__
'/usr/lib64/python2.7/site-packages/PySide/__init__.pyc'
Nicht jedoch für Python 3:

Code: Alles auswählen

Python 3.4.2 (default, Jan 12 2015, 12:13:20) 
>>> import PySide
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'PySide'
Da, wie ich schon zuvor erwähnt habe, die Paketverwaltung von Fedora nur ein „allgemeines“ PySide-Paket beinhaltet (was in Python 2 installiert wurde), muss ich mal schauen, wie ich das für Python3 installiert bekomme.

Herzlichen Dank für die Hilfe! :)
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wie gesagt: Oder gucken, ob man den von Eric verwendeten Interpreter irgendwo festlegen kann. Den würdest du dann auf den Python-2.7-Interpreter stellen.

Für die Installation von PySide in Python 3.x probier mal ein:

Code: Alles auswählen

pip3 install PySide
Falls er `pip3` nicht kennt, dann wirf mal einen Blick in die Paketquellen, ob es dort angeboten wird.

`pip` ist das Python-eigene Paketsystem. `pip3` ist unter vielen Distributionen für Python 3 und `pip` ist für Python 2.

Bedenke nur, dass du mit diesem Vorgehen an deiner Distribution vorbei installierst. Du wirst nicht automatisch angezeigt bekommen, ob z.B. ein wichtiges Sicherheitsupdate für PySide (unter Python 3) vorliegt. Darum muss man sich dann selber kümmern.
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Korrektur: `pip` kann man für PySide wohl nur unter Windows nutzen. Unter Linux muss man selbst kompilieren.
André
User
Beiträge: 7
Registriert: Sonntag 14. Juni 2015, 16:59

snafu hat geschrieben:Wie gesagt: Oder gucken, ob man den von Eric verwendeten Interpreter irgendwo festlegen kann. Den würdest du dann auf den Python-2.7-Interpreter stellen.
Ich habe die Einstellungen von Eric akribisch durchsucht, konnte aber keine solche finden.
snafu hat geschrieben:Korrektur: `pip` kann man für PySide wohl nur unter Windows nutzen. Unter Linux muss man selbst kompilieren.
Dazu habe ich folgende Anleitung gefunden: http://pyside.readthedocs.org/en/latest ... linux.html

Die ist für Ubuntu und ich habe versucht, sie so gut wie möglich für Fedora anzupassen. Beispielsweise erhalte ich für

Code: Alles auswählen

python3.4 setup.py bdist_wheel --qmake=/usr/bin/qmake-qt4 --version=1.2.2
die Ausgabe

Code: Alles auswählen

error: Failed to find qmake. Please specify the path to qmake with --qmake parameter.
Also nach qmake gesucht und Befehl angepasst:

Code: Alles auswählen

python3.4 setup.py bdist_wheel --qmake=/usr/lib64/qt5/bin/qmake-qt5 --version=1.2.2
Erhalte ich die Fehlermeldung:

Code: Alles auswählen

error: Failed to locate the Python library with /usr/lib64/libpython3.4m.so, /usr/lib64/libpython3.4m.so.1, /usr/lib64/libpython3.4m.a
Wieder gesucht finde ich (nur) /usr/lib64/libpython3.4m.so.1.0

Weiter komme ich nicht. Aufgeben?
André
User
Beiträge: 7
Registriert: Sonntag 14. Juni 2015, 16:59

André hat geschrieben:Weiter komme ich nicht.
Nachtrag: Ich habe noch die Datei dependencies.fedora.sh auf GitHub entdeckt.

Damit konnte ich den Vorgang abschließen. Es hat recht lange gedauert und reichlich Systemleistung geschluckt. Allerdings hänge ich nun an dem letzten Punkt fest.

Code: Alles auswählen

[root@localhost pyside-setup] # sudo pip3.4 install PySide-1.2.2-cp34-cp34m-linux_x86_64.whl
Requirement 'PySide-1.2.2-cp34-cp34m-linux_x86_64.whl' looks like a filename, but the file does not exist
Processing ./PySide-1.2.2-cp34-cp34m-linux_x86_64.whl
Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.4/site-packages/pip/basecommand.py", line 223, in main
    status = self.run(options, args)
  File "/usr/lib/python3.4/site-packages/pip/commands/install.py", line 291, in run
    wb.build(autobuilding=True)
  File "/usr/lib/python3.4/site-packages/pip/wheel.py", line 705, in build
    self.requirement_set.prepare_files(self.finder)
  File "/usr/lib/python3.4/site-packages/pip/req/req_set.py", line 317, in prepare_files
    functools.partial(self._prepare_file, finder))
  File "/usr/lib/python3.4/site-packages/pip/req/req_set.py", line 304, in _walk_req_to_install
    more_reqs = handler(req_to_install)
  File "/usr/lib/python3.4/site-packages/pip/req/req_set.py", line 469, in _prepare_file
    session=self.session)
  File "/usr/lib/python3.4/site-packages/pip/download.py", line 814, in unpack_url
    unpack_file_url(link, location, download_dir)
  File "/usr/lib/python3.4/site-packages/pip/download.py", line 723, in unpack_file_url
    unpack_file(from_path, location, content_type, link)
  File "/usr/lib/python3.4/site-packages/pip/utils/__init__.py", line 644, in unpack_file
    flatten=not filename.endswith('.whl')
  File "/usr/lib/python3.4/site-packages/pip/utils/__init__.py", line 528, in unzip_file
    zipfp = open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '/home/andre/Daten/Downloads/installpyside2/pyside-setup/PySide-1.2.2-cp34-cp34m-linux_x86_64.whl'
Da fällt mir dann wirklich nichts mehr zu ein. Aber vielleicht soll es nicht sein ... :K
Benutzeravatar
snafu
User
Beiträge: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ich denke, du hast dich entweder vertippt, oder du hast den falschen Pfad gewählt. Sicher, dass die Datei tatsächlich im aktuellen Verzeichnis existiert? Die Fehlermeldung sagt halt was anderes...
André
User
Beiträge: 7
Registriert: Sonntag 14. Juni 2015, 16:59

Tatsache, der Pfad war falsch ... oh man -- aber ich habe mich ja schon als wenig kompetent geoutet. :?

Danke jedenfalls! Wer glaubt es, PySide für Python 3 läuft! Da steht meinem Programm nichts mehr im Wege! 8)

Viele Grüße,
André
Antworten