Zasadniczo istnieje plik o nazwie 8puzzle.py
i chcę zaimportować plik do innego pliku (w tym samym folderze i nie mogę zmienić nazwy pliku, ponieważ plik jest dostarczony). Czy w ogóle można to zrobić w Pythonie? Próbowałem jak zwykle from 8puzzle import *
, daje mi to błąd.
Błąd:
>>> import 8puzzle
File "<input>", line 1
import 8puzzle
^
SyntaxError: invalid syntax
>>>
8puzzle.py
napuzzle8.py
i użyjimport puzzle8
.Odpowiedzi:
Mógłbyś
puzzle = __import__('8puzzle')
Bardzo ciekawy problem. Będę pamiętał, żeby niczego nie nazwać numerem.
Jeśli chcesz
import *
- zapoznaj się z tym pytaniem i odpowiedzią .źródło
Powyższe odpowiedzi są poprawne, ale na razie zalecanym sposobem jest użycie
import_module
funkcji:__import__
nie jest teraz zalecane.źródło
an_imported_file = importlib.import_module('13_file')
to nie mogęfrom an_imported_file import var_x
. Czy jest coś, co można zrobić, aby to osiągnąć?/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'
Nie używaj
.py
rozszerzenia w imporcie.Robi
from 8puzzle import *
?Tyle ile jest warte,
from x import *
nie jest preferowanym wzorcem Pythona, ponieważ upuszcza przestrzeń nazw tego modułu do bieżącego kontekstu.Ogólnie rzecz biorąc, spróbuj zaimportować wybrane rzeczy z tego modułu. Można zaimportować dowolny globalny z innego modułu.
np. jeśli masz
8puzzle.foo
możesz zrobić `from 8puzzle importEdytować:
Podczas gdy mój
.py
wiadomość jest poprawna, nie wystarczy.__import__('8puzzle')
Sugestia drugiego autora jest poprawna. Jednak bardzo polecam unikanie tego schematu .Po pierwsze, jest to zarezerwowana wewnętrzna, prywatna metoda Pythona. Zasadniczo łamiesz podstawowe założenia dotyczące możliwości zaimportowania modułu. Po prostu zmień nazwę pliku na inną, na przykład
puzzle8
, rozwiązuje ten problem.Spowoduje to cholerną frustrację doświadczonych programistów Pythona, którzy oczekują, że będą wiedzieć, jakie importowane pliki znajdują się na szczycie i oczekują, że kod (spróbuje) być zgodny z PEP8 .
źródło
from 8puzzle import *
i zredagowałem moje oryginalne pytanie. I nie działa tak, jak powiedział mvanveen.