ModuleNotFoundError: Kein Modul namens x

10

Dies ist das erste Mal, dass ich mich wirklich hingesetzt habe und Python 3 ausprobiert habe und scheinbar kläglich versagt habe. Ich habe die folgenden zwei Dateien:

  1. test.py
  2. config.py

config.py enthält einige Funktionen und einige Variablen. Ich habe es auf Folgendes reduziert:

Ich erhalte jedoch den folgenden Fehler:

%Vor%

Ich bin mir bewusst, dass die py3 Konvention absolute Importe verwenden soll:

%Vor%

Dies führt jedoch zu folgendem Fehler:

%Vor%

Ich bin also ratlos, was ich hier tun soll ... Jede Hilfe wird sehr geschätzt. :)

    
Ryan 02.05.2017, 00:40
quelle

6 Antworten

0

Wie in den Kommentaren zum ursprünglichen Post gesagt wurde, schien dies ein Problem mit dem Python-Interpreter zu sein, den ich aus irgendeinem Grund benutzte, und nicht mit den Python-Skripten. Ich wechselte vom WinPython Bundle zum offiziellen Python 3.6 von python.org und es funktionierte gut. Danke für die Hilfe alle:)

    
Ryan 12.05.2017, 13:30
quelle
20
___ qstnhdr ___ ModuleNotFoundError: Kein Modul namens x ___ qstntxt ___

Dies ist das erste Mal, dass ich mich wirklich hingesetzt habe und Python 3 ausprobiert habe und scheinbar kläglich versagt habe. Ich habe die folgenden zwei Dateien:

  1. test.py
  2. config.py

config.py enthält einige Funktionen und einige Variablen. Ich habe es auf Folgendes reduziert:

Ich erhalte jedoch den folgenden Fehler:

%Vor%

Ich bin mir bewusst, dass die py3 Konvention absolute Importe verwenden soll:

%Vor%

Dies führt jedoch zu folgendem Fehler:

%Vor%

Ich bin also ratlos, was ich hier tun soll ... Jede Hilfe wird sehr geschätzt. :)

    
___ answer45556023 ___

Ich habe es herausgefunden. Sehr frustrierend, vor allem von python2 kommend.

Sie müssen dem Modul ein __main__ hinzufügen, unabhängig davon, ob es relativ oder absolut ist.

Ich habe den Verzeichnisaufbau wie folgt erstellt.

%Vor%

modx.py

%Vor%

mody.py

%Vor%

main.py

%Vor%

wenn ich main ausführe, passiert das

%Vor%

Ich habe 2to3 ausgeführt, und die Kernausgabe war das

%Vor%

Ich musste die Import-Anweisung von mody.py modifizieren, um sie zu reparieren

%Vor%

Dann habe ich main.py erneut ausgeführt und die erwartete Ausgabe erhalten

%Vor%

Schließlich, nur um es aufzuräumen und es zwischen 2 und 3 tragbar zu machen.

%Vor%     
___ answer43938991 ___

Wie in den Kommentaren zum ursprünglichen Post gesagt wurde, schien dies ein Problem mit dem Python-Interpreter zu sein, den ich aus irgendeinem Grund benutzte, und nicht mit den Python-Skripten. Ich wechselte vom WinPython Bundle zum offiziellen Python 3.6 von python.org und es funktionierte gut. Danke für die Hilfe alle:)

    
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ answer43925828 ___

Dieses Beispiel funktioniert mit Python 3.6.

Ich empfehle, zu sys.path in PyCharm zu gehen, irgendwelche Einträge dort zu löschen und zu versuchen, den Code erneut durch PyCharm auszuführen.

Wenn das nicht funktioniert, überprüfen Sie Ihren Projekt-Interpreter (Einstellungen - & gt; Projekt-Interpreter) und führen Sie die Standardeinstellungen für die Konfiguration aus (Ausführen - & gt; Konfigurationen bearbeiten ...).

    
___ tag123python36 ___ Version der Programmiersprache Python, die im Dezember 2016 veröffentlicht wurde. Für Python 3.6-spezifische Probleme. Verwenden Sie möglichst generische [python] - und [python-3.x] -Tags. ___ answer48575891 ___

Das Einstellen von PYTHONPATH kann auch bei diesem Problem helfen.

Hier ist, wie es gemacht werden kann. Bitte beachten Sie die grün hinterlegte Zeile

    
___ answer43800218 ___

Versuch dein Beispiel

%Vor%
  

hat folgenden Systemfehler:
  /usr/bin/python3.4 test.py
  Traceback (letzter Aufruf zuletzt):
    Datei "test.py", Zeile 1, in
      von . import config
SystemError: Übergeordnetes Modul '' nicht geladen, kann keinen relativen Import durchführen

Das wird für mich funktionieren:

%Vor%

Getestet mit Python: 3.4.2 - PyCharm 2016.3.2

Außerdem bietet PyCharm Ihnen Diesen Namen importieren .
Sie müssen auf main.py klicken und ein Hilfesymbol erscheint.

    
___ antwort43859946 ___

TL; DR: Sie können keine relativen Importe von der Datei ausführen, die Sie ausführen , da __main__ module nicht Teil eines Pakets ist.

Absolute Importe - Importieren Sie etwas verfügbares in import config

Relative Importe - importieren Sie etwas relativ zum aktuellen Modul, muss ein Teil eines Pakets sein

Wenn Sie beide Varianten auf genau dieselbe Weise ausführen, sollte einer von ihnen funktionieren. Wie auch immer, hier ist ein Beispiel, das Ihnen helfen soll, zu verstehen, was vor sich geht, fügen wir eine weitere ryan -Datei mit der gesamten Verzeichnisstruktur wie folgt hinzu:

%Vor%

Und lasst uns test.py aktualisieren, um zu sehen, was passiert:

%Vor%

Lassen Sie uns zuerst test.py ausführen:

%Vor%

Hier ist "test" das Modul import config und weiß nichts über die Zugehörigkeit zu einem Paket. % Co_de% sollte jedoch funktionieren, da der Ordner __init__.py zu sys.path hinzugefügt wird.

Lassen Sie uns stattdessen main.py ausführen:

%Vor%

Und hier ist Test innerhalb des "Ryan" -Pakets und kann relative Importe durchführen. %code% schlägt fehl, da implizite relative Importe in Python 3 nicht erlaubt sind.

Ich hoffe, das hat geholfen.

P.S .: Wenn Sie bei Python 3 bleiben, brauchen Sie nicht mehr in %code% Dateien.

    
___
Igonato 09.05.2017 02:12
quelle
6

Ich habe es herausgefunden. Sehr frustrierend, vor allem von python2 kommend.

Sie müssen dem Modul ein . hinzufügen, unabhängig davon, ob es relativ oder absolut ist.

Ich habe den Verzeichnisaufbau wie folgt erstellt.

%Vor%

modx.py

%Vor%

mody.py

%Vor%

main.py

%Vor%

wenn ich main ausführe, passiert das

%Vor%

Ich habe 2to3 ausgeführt, und die Kernausgabe war das

%Vor%

Ich musste die Import-Anweisung von mody.py modifizieren, um sie zu reparieren

%Vor%

Dann habe ich main.py erneut ausgeführt und die erwartete Ausgabe erhalten

%Vor%

Schließlich, nur um es aufzuräumen und es zwischen 2 und 3 tragbar zu machen.

%Vor%     
jargonjunkie 07.08.2017 21:32
quelle
2

Versuch dein Beispiel

%Vor%
  

hat folgenden Systemfehler:
  /usr/bin/python3.4 test.py
  Traceback (letzter Aufruf zuletzt):
    Datei "test.py", Zeile 1, in
      von . import config
SystemError: Übergeordnetes Modul '' nicht geladen, kann keinen relativen Import durchführen

Das wird für mich funktionieren:

%Vor%

Getestet mit Python: 3.4.2 - PyCharm 2016.3.2

Außerdem bietet PyCharm Ihnen Diesen Namen importieren .
Sie müssen auf config klicken und ein Hilfesymbol erscheint.

    
stovfl 05.05.2017 08:35
quelle
0

Dieses Beispiel funktioniert mit Python 3.6.

Ich empfehle, zu Run -> Edit Configurations in PyCharm zu gehen, irgendwelche Einträge dort zu löschen und zu versuchen, den Code erneut durch PyCharm auszuführen.

Wenn das nicht funktioniert, überprüfen Sie Ihren Projekt-Interpreter (Einstellungen - & gt; Projekt-Interpreter) und führen Sie die Standardeinstellungen für die Konfiguration aus (Ausführen - & gt; Konfigurationen bearbeiten ...).

    
Carson Crane 11.05.2017 21:27
quelle
0

Das Einstellen von PYTHONPATH kann auch bei diesem Problem helfen.

Hier ist, wie es gemacht werden kann. Bitte beachten Sie die grün hinterlegte Zeile

    
Santosh Pillai 02.02.2018 04:51
quelle

Tags und Links