PyCharm-Fehler: 'Kein Modul' beim Versuch, eigenes Modul zu importieren (Python-Skript)

Ich habe ein Modul geschrieben (eine Datei my_mod.py Datei, die sich im Ordner my_module ). Zurzeit arbeite ich in der Datei cool_script.py , die sich im Ordner cur_proj . Ich habe den Ordner in PyCharm mit File – open geöffnet (und ich nehme an, es ist also ein PyCharm – Projekt).

In ProjectView (CMD-7) sehe ich mein Projekt cur_proj (in rot) und unter "Externe Bibliotheken" sehe ich my_module . In cool_script.py kann ich schreiben

 from my_module import my_mod as mm 

Und PyCharm macht sogar einen Vorschlag für my_mod. So weit, ist es gut.

Allerdings, wenn ich versuche, cool_script.py laufen, sagt PyCharm mir "Kein Modul namens my_module"

Das ist mir seltsam, weil

A) im Terminal (OS 10.10.2), in Python, kann ich das Modul kein Problem importieren – da ist ein entsprechender Eintrag im PYTHONPATH in .bashrc

B) in PyCharm – Einstellungen – Projekt cur_proj – Projekt-Interpreter – CogWheel neben Python-Interpreter – mehr – zeigen Pfade für ausgewählte Interpreter-Ikone, die Pfade von PYTHONPATH erscheinen (wie ich glaube, sie sollten)

Warum bekomme ich dann den Fehler, wenn ich versuche, cool_script.py auszuführen? – Was fehlt mir?

Notizen:

  • Ich erkläre nicht eine andere / spezielle Python-Version an der Spitze von cool_script.py
  • Ich habe dafür gesorgt, dass der Weg zu my_module richtig ist
  • Ich stelle __init__.py Dateien (leere Dateien) sowohl in my_module und in cur_proj
  • Ich verwende nicht virtualenv

Addendum 2015-Feb-25

Wenn ich in PyCharm zu Run – Edit Configurations gehe, gibt es für mein aktuelles Projekt zwei Optionen, die mit einem Häkchen markiert sind: " Add Content roots zu PYTHONPATH " und " Source Wurzeln zu PYTHONPATH hinzufügen ". Wenn ich beide unkontrolliert habe, kann ich mein Modul laden.

So funktioniert es jetzt – aber warum ?

Weitere Fragen:

  • Was sind "Content Wurzeln" und was sind "Quellwurzeln"? Und warum macht das Hinzufügen von etwas zum PYTHONPATH es irgendwie zu brechen?
  • Soll ich diese beiden Optionen immer deaktivieren (also auch in den Vorgaben, nicht nur die projektspezifischen Konfigurationen (linke Seite des Dialogs Run / Debug Configurations)?

6 Solutions collect form web for “PyCharm-Fehler: 'Kein Modul' beim Versuch, eigenes Modul zu importieren (Python-Skript)”

Wenn dein eigenes Modul auf dem gleichen Pfad ist, musst du den Pfad als Sources Root markieren. Klicken Sie im Projekt-Explorer mit der rechten Maustaste auf das Verzeichnis, das Sie importieren möchten. Wählen Sie dann Mark Directory As und wählen Sie Sources Root .

Ich hoffe das hilft.

my_module ist ein Ordner nicht ein Modul und man kann keinen Ordner importieren, versuchen Sie, my_mod.py in denselben Ordner wie die cool_script.py und dann import my_mod as mm . Dies ist, weil python nur in das aktuelle Verzeichnis und sys.path , und so wird nicht finden, my_mod.py sei denn, es ist in dem gleichen Verzeichnis

Oder du kannst hier nach einer Antwort Ausschau halten, wie du aus anderen Verzeichnissen importierst.

Wie bei deinen anderen Fragen weiß ich nicht, wie ich PyCharm nicht benutze.

Ich bekam den Fehler mit "Add Source Wurzeln zu PYTHONPATH" auch. Mein Problem war, dass ich zwei Ordner mit dem gleichen Namen hatte, wie Projekt / subproject1 / thing / src und project / subproject2 / thing / src und ich hatte beide als Quellwurzel markiert. Als ich einen der "Ding" Ordner auf "thing1" (irgendeinen eindeutigen Namen) umbenannte, funktionierte es.

Vielleicht, wenn PyCharm automatisch ausgewählte Quellwurzeln hinzufügt, verwendet er nicht den vollständigen Pfad und mischt daher Ordner mit demselben Namen.

Der wichtigste verwirrende Schritt, der getan werden muss, besteht darin, die Laufkonfiguration für die Quelldatei neu zu erstellen, die Sie ausführen möchten, damit die IDE die neuen Pfade aufnimmt.

Die Art und Weise, die eigentlich für mich gearbeitet hat, war, zu Run / Edit Configurations zu gehen …, wähle die Konfiguration für die Datei aus, die du auf der linken Seite ausführen willst. Deaktivieren Sie das Feld "Quellwurzeln zum PYTHONPATH hinzufügen" Und dann zurück und check the box und speichern. DANN würde es funktionieren.

Content-Wurzeln sind Ordner, die Ihren Projektcode halten, während Quellwurzeln als selben definiert sind. Der einzige Unterschied, den ich verstanden habe, war, dass der Code in Quellwurzeln vor dem Code im Content Root gebaut wurde.

Wenn du sie nicht korrigierst, würde ich die Laufzeit nicht beeinträchtigen, bis du keine separaten Module in deinem Paket machst, die manuell mit Django verbunden ist. Das bedeutet, wenn irgendwelche Ihrer Dateien nicht die 'von django importieren …' oder eine der Funktion nicht über Django aufgerufen wird, deaktivieren diese 2 Optionen wird zu einer Störung führen.

Update – das Problem entsteht nur bei der Verwendung von Virtual Environmanet und nur bei der Steuerung des Projekts über das mitgelieferte Terminal. Denn das Terminal funktioniert immer noch über das Standard-System pyhtonpath und nicht das virtuelle env. Während die python django steuerplatte funktioniert gut.

Dies kann verursacht werden, wenn Python-Interpreter Ihren Code nicht finden kann. Sie müssen explizit zu Python erwähnen, um Ihren Code an dieser Stelle zu finden.

Um dies zu tun:

  • Gehen Sie zu Ihrer Python-Konsole
  • Fügen Sie sys.path.extend(['your module location']) zur Python-Konsole hinzu.

In Ihrem Fall:

  • Gehen Sie zu Ihrer Python-Konsole,
  • Schreiben Sie am Anfang den folgenden Code:

     import sys sys.path.extend([my module URI location]) 
  • Sobald Sie diese Anweisung geschrieben haben, können Sie folgenden Befehl ausführen:

     from mymodule import functions 
  • Wie man das Python-Modul neu lädt, das mit `from module import *` importiert wurde
  • Wie ändere ich einen Python-Modulnamen?
  • Wie man benutzerdefinierte Python-Paket nach Namen importieren
  • Installiere gmpy auf Mac OS X Mountain Lion
  • Wie lade ich kompilierte pythonmodule aus dem Speicher?
  • Laden von Umgebungsmodulen innerhalb eines Python-Skripts
  • Py2exe - "Die folgenden Module fehlen"
  • Mit __init__.py
  • Überprüfen Sie, ob das Modul vorhanden ist, wenn es nicht in Python installiert ist
  • Aufrufbare Module
  • In Python kann ich das Haupt- () eines importierten Moduls anrufen?
  • Python ist die beste Programmiersprache der Welt.