Heim  >  Fragen und Antworten  >  Hauptteil

So beheben Sie den Fehler „Es wurde ein relativer Importversuch von einem Nicht-Paket durchgeführt, obwohl __init__.py“ vorliegt

<p>Ich versuche PEP 328 zu folgen und verwende die folgende Verzeichnisstruktur: </p> <pre class="brush:php;toolbar:false;">pkg/ __init__.py Komponenten/ core.py __init__.py Tests/ core_test.py __init__.py</pre> <p>In <code>core_test.py</code> habe ich die folgende Importanweisung</p> <pre class="brush:php;toolbar:false;">from ..components.core import GameLoopEvents</pre> <p>Beim Ausführen erhalte ich jedoch die folgende Fehlermeldung: </p> <pre class="brush:php;toolbar:false;">tests$ python core_test.py Traceback (letzter Anruf zuletzt): Datei „core_test.py“, Zeile 3, in <module> aus ..components.core GameLoopEvents importieren ValueError: Versuchter relativer Import in Nicht-Paket</pre> <p>Ich habe bei meiner Suche die Meldungen „relativer Pfad funktioniert nicht auch mit __init__.py“ und „Modul aus relativem Pfad importieren“ gefunden, aber sie haben nicht geholfen. </p> <p>Gibt es etwas, das mir hier fehlt? </p>
P粉566048790P粉566048790397 Tage vor432

Antworte allen(2)Ich werde antworten

  • P粉827121558

    P粉8271215582023-08-22 14:11:27

    对于 Ignacio Vazquez-Abrams 的回答进行详细说明:

    Python的导入机制是相对于当前文件的__name__。当直接执行一个文件时,它的名称不是通常的名称,而是使用"__main__"作为名称。因此,相对导入不起作用。

    正如Ignacio建议的那样,你可以使用-m选项来执行它。如果你的包中有一部分是作为脚本运行的,你还可以使用__package__属性来告诉该文件在包层次结构中应该有什么名称。

    详细信息请参见http://www.python.org/dev/peps/pep-0366/

    Antwort
    0
  • P粉604507867

    P粉6045078672023-08-22 09:39:36

    是的。你没有将它作为一个包使用。

    python -m pkg.tests.core_test

    Antwort
    0
  • StornierenAntwort