it-swarm.com.de

Python 3 kann keine Pakete von Drittanbietern importieren

Ich habe Python Version 3.5.2 und ich habe pip3, also habe ich

Sudo pip3 install pyqt5

Das wurde in /usr/local/lib/python3.5/dist-packages installiert

Wenn ich jedoch meinen python 3-Interpreter eingebe und tippe

import PyQt5

es gibt mir einen Fehler, dass es das Modul namens PyQt5 nicht finden kann.

Also habe ich versucht, den Pfad /usr/local/lib/python3.5/dist-packages zu PYTHONPATH hinzuzufügen

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.5/dist-packages

aber das hat nichts behoben. Wie kann ich dafür sorgen, dass Python 3.5.2 PyQt5 erkennt?

2
Shadowfax

Dank George kam ich langsam zur Antwort. Die Wurzel des Problems liegt darin, dass ich meine Python 3.5.2-Version von einer Quelle anstatt vom Ubuntu aptitude-Paketmanager installiert habe.

Wenn Python von einer Quelle installiert wird, verwendet es /usr/local/lib/python3.5/site-packages, um nach Paketen von Drittanbietern zu suchen. Wenn es jedoch mit apt installiert wurde, dann Python schaut in /usr/local/lib/python3.5/dist-packages. Dies soll sicherstellen, dass sich die verschiedenen Python Versionen nicht verheddern. Hier ist eine andere Frage, die erklärt: Was ist der Unterschied zwischen dist-Paketen und site-Paketen? .

Lösung:

Meine Python3-Installation untersuchte Site-Pakete und ignorierte dist-Pakete. Deshalb habe ich eine Pfaddatei hinzugefügt, damit sie auch in dist-Paketen angezeigt wird.

cd /usr/local/lib/python3.5/site-packages
Sudo vim dist-packages.pth
(Press i to go into insert mode inside Vim)
../dist-packages
:x (and Press Enter/Return)

Wenn nun Python in /site-packages schaut, findet es dist-packages.pth, wodurch es in /dist-packages übergeht.

Andere Lösung:

Jemand anderes hatte genau das Gegenteil von meinem Problem, bei dem die Python -Installation nur in /dist-packages angezeigt wurde, sodass sie genau die gleiche Methode wie oben verwendeten, außer dass sie es machten In einer dist-packages.pth -Datei (die ../dist-packages enthält) in /site-packages wurde eine site-packages.pth -Datei (die ../site-packages in /dist-packages enthält) erstellt.

Überprüfen Sie, ob es funktioniert hat:

Die einfache Möglichkeit, zu überprüfen, ob dies funktioniert hat, besteht darin, in Ihren Python -Interpreter zu gehen und sys.path zu drucken. Es sollte nun beide Paketpfade enthalten:

[email protected]:/usr/local/lib/python3.5/site-packages$ python3
Python 3.5.2 (default, Nov 19 2016, 02:36:25) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys; print(sys.path)
['', '/usr/local/lib/python35.Zip', '/usr/local/lib/python3.5',     '/usr/local/lib/python3.5/plat-linux', '/usr/local/lib/python3.5/lib-dynload', 
'/usr/local/lib/python3.5/site-packages', '/usr/local/lib/python3.5/dist-packages']

Ich hoffe das hilft jemandem eines Tages ...

3
Shadowfax