Beste Antwort
Ohne Code zu sehen, ist es schwierig, eine endgültige Antwort zu finden, aber Ich denke, das Problem ist, dass der Code, den Sie importieren, ungefähr so aussieht:
Sie haben ein Modul namens fluff
und in diesem Modul haben Sie eine Klasse fluff;
In der Fluff-Klasse gibt es eine Methode namens check\_output
Ihr Code sieht folgendermaßen aus:
import fluff
cfg = fluff.check\_output(stuff) # You want the fluff class here
Das Problem ist, dass all das import fluff
importiert das Fluff-Modul. Die benötigte Fluff-Klasse heißt tatsächlich fluff.fluff.
Es gibt zwei Lösungen:
1:
import fluff
cfg = fluff.fluff.check\_output(stuff) # You want the fluff class here
2:
from fluff import fluff # this imports the fluff class.
cfg = fluff.check\_output(stuff) # You want the fluff class here
Dies ist einer der Gründe, warum die Namenskonvention so wichtig ist – wenn die Module und Klassen folgen den PEP8-Namenskonventionen. Der Code lautet
from fluff import Fluff # this imports the fluff class.
cfg = Fluff.check\_output(stuff) # You want the fluff class here
Dieses Großbuchstaben F könnte ausreichen, um Fehler zu vermeiden – oder Sie zumindest auf potenzielle Probleme hinzuweisen.
–
Die andere mögliche Antwort lautet: Das Modul, das Sie importieren, wird von einer anderen Datei beschattet (mit anderen Worten, es gibt eine Datei mit demselben Namen, die Python früher bei der Suche nach dem zu importierenden Element gefunden hat). Die häufigste Ursache für Anfänger ist, dass Sie Ihr Skript genauso benennen wie das Modul, das Sie importieren möchten. Da Python IMMER die aktuelle Verzeichnisdatei durchsucht, wenn Sie ein Skript mit dem Namen foo.py haben und es ein import foo ausführt, importiert dieser Import das Skript mit dem Namen foo.py – wahrscheinlich nicht das, was Sie wollen.
Der beste Weg, um dieses Problem zu diagnostizieren, besteht darin, die interaktive Konsole im selben Verzeichnis zu öffnen und Folgendes einzugeben:
>>> import
>>>
wobei
Antwort
Ohne hinzuschauen Bei Ihrem Code könnte es eines von zwei Problemen sein (aber nicht auf diese beiden beschränkt), an die ich sofort denken könnte:
- Modul ist nicht richtig installiert. Überprüfen Sie Ihren Site-Packages-Ordner auf das Modul. Wenn es da ist, könnte es Problem Nr. 2:
- Wird nicht mit einer geeigneten Version von Python ausgeführt, d. H. Es werden Module installiert, die für Python2 bestimmt sind, aber mit Python3-Import aufgerufen. Verwenden Sie pip, um das Modul zu deinstallieren, und versuchen Sie dann, es erneut mit pip3 zu installieren, um die entsprechende Version zu erhalten. Ich weiß nicht warum, aber einige Computer wie mein Raspberry Pi Zero W v1.1 verwenden standardmäßig den Befehl pip anstelle von 3. Die Neuinstallation mit pip3 hat bei mir funktioniert, da ich meinen Code mit der
python3
Befehl anstelle des üblichenpython
.
Ich könnte eine vorübergehende „schmutzige“ Lösung vorschlagen, die darin besteht, die Modulquelle in Ihre zu kopieren Arbeitsverzeichnis, dh nehmen Sie den Ordner „module“ und legen Sie ihn im selben Ordner ab wie die Quelldatei, die Sie ausführen. Es kann auch sein, dass Sie ein Git-Repository geklont oder aus einem ZIP-Ordner extrahiert haben, in dem sich die Datei module.py in einem anderen Ordner befindet, der sich in einem anderen Ordner mit demselben Namen befindet. In diesem Fall kann es hilfreich sein, module.module als Modul zu importieren, anstatt das Modul einfach sofort zu importieren:
import module.module as module
anstelle von
import module
, wodurch die Anzahl der Änderungen in Ihrem Code verringert wird. Viel Glück!