В основном существует файл с именем, 8puzzle.py
и я хочу импортировать файл в другой файл (в той же папке, и я не могу изменить имя файла, поскольку файл предоставлен). Есть ли способ сделать это в Python? Пробовал обычным способом from 8puzzle import *
, выдает ошибку.
Ошибка:
>>> import 8puzzle
File "<input>", line 1
import 8puzzle
^
SyntaxError: invalid syntax
>>>
8puzzle.py
вpuzzle8.py
и использованиеimport puzzle8
.Ответы:
Ты мог бы сделать
puzzle = __import__('8puzzle')
Очень интересная проблема. Я не забуду не называть ничего цифрой.
Если хотите
import *
- прочтите этот вопрос и ответьте .источник
Приведенные выше ответы верны, но на данный момент рекомендуется использовать
import_module
функцию:__import__
сейчас не рекомендуется.источник
an_imported_file = importlib.import_module('13_file')
тогда я не смогуfrom an_imported_file import var_x
. Что можно сделать для этого?/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'
Не используйте
.py
расширение при импорте.Работает
from 8puzzle import *
?Как бы то ни было,
from x import *
он не является предпочтительным шаблоном Python, поскольку он вводит пространство имен этого модуля в ваш текущий контекст.В общем, попробуйте импортировать именно то, что вам нужно, из этого модуля. Любой глобал из другого модуля может быть импортирован.
например, если у вас есть,
8puzzle.foo
вы можете сделать `from 8puzzle importРедактировать:
Хотя мое
.py
сообщение верное, этого недостаточно.Предложение другого автора
__import__('8puzzle')
верно. Однако я настоятельно рекомендую избегать этого шаблона .Во-первых, он зарезервировал внутренний частный метод Python. По сути, вы нарушаете фундаментальные предположения о том, что значит иметь возможность импортировать модуль. Простое переименование файла во что-нибудь другое, например
puzzle8
, исправит это.Это ужасно расстроит опытных программистов Python, которые ожидают, что они будут знать, что ваш импорт находится на вершине, и ожидают, что код (попытается) соответствовать PEP8 .
источник
from 8puzzle import *
и отредактировал свой первоначальный вопрос. И это не работает, как сказал Мванвин.