Grundsätzlich gibt es eine Datei mit dem Namen 8puzzle.py
und ich möchte die Datei in eine andere Datei importieren (im selben Ordner und ich kann den Dateinamen nicht ändern, wenn die Datei bereitgestellt wird). Gibt es überhaupt eine Möglichkeit, dies in Python zu tun? Ich habe es wie gewohnt versucht from 8puzzle import *
, es gibt mir einen Fehler.
Fehler ist:
>>> import 8puzzle
File "<input>", line 1
import 8puzzle
^
SyntaxError: invalid syntax
>>>
8puzzle.py
inpuzzle8.py
und verwendenimport puzzle8
.Antworten:
Du könntest es tun
puzzle = __import__('8puzzle')
Sehr interessantes Problem. Ich werde daran denken, nichts mit einer Nummer zu benennen.
Wenn Sie möchten,
import *
sollten Sie diese Frage und Antwort prüfen .quelle
Die obigen Antworten sind korrekt, aber im Moment wird empfohlen, die
import_module
Funktion zu verwenden :__import__
wird jetzt nicht empfohlen.quelle
an_imported_file = importlib.import_module('13_file')
, kann ich es nicht tunfrom an_imported_file import var_x
. Gibt es etwas, das getan werden kann, um dies zu erreichen?/usr/local/bin/python3.7 "/Users/constan/Desktop/2_COData/1_PYTHON /CODEX/13_Spacy/children.py" Traceback (most recent call last): File "/Users/constan/Desktop/2_COData/1_PYTHON /CODEX/13_Spacy/children.py", line 7, in <module> from an_imported_file import var_x ModuleNotFoundError: No module named 'an_imported_file'
Verwenden Sie die
.py
Erweiterung nicht für Ihre Importe.Funktioniert
from 8puzzle import *
?Für das, was es wert ist,
from x import *
ist es kein bevorzugtes Python-Muster, da es den Namespace dieses Moduls in Ihren aktuellen Kontext einfügt.Versuchen Sie im Allgemeinen, die gewünschten Elemente aus diesem Modul zu importieren. Jedes globale aus dem anderen Modul kann importiert werden.
zB wenn du hast
8puzzle.foo
kannst du `aus 8puzzle importierenBearbeiten:
Obwohl meine
.py
Nachricht korrekt ist, reicht sie nicht aus.Der
__import__('8puzzle')
Vorschlag des anderen Posters ist richtig. Ich empfehle jedoch dringend, dieses Muster zu vermeiden .Zum einen ist eine interne, private Python-Methode reserviert. Sie brechen im Grunde die grundlegenden Annahmen darüber, was es bedeutet, ein Modul importieren zu können. Wenn Sie die Datei einfach in etwas anderes umbenennen
puzzle8
, wird dies behoben.Dies wird die Hölle von erfahrenen Python-Programmierern frustrieren, die erwarten, zu wissen, was Ihre Importe an der Spitze sind, und erwarten, dass der Code PEP8 entspricht (versucht) .
quelle
from 8puzzle import *
meine ursprüngliche Frage bearbeitet. Und es funktioniert nicht, wie Mvanveen sagte.