Ответ 1
Вместо:
import test.py
просто напишите:
import test
Это предполагает, что test.py находится в том же каталоге, что и файл, который импортирует его.
Я новичок в Python, так что медведь со мной:)
Я создал файл test.py с содержимым следующим образом:
test.py
import sys
print sys.platform
print 2 ** 100
Затем я запустил файл import test.py
в интерпретаторе, чтобы следовать примеру моей книги.
Когда я это сделаю, я получаю вывод с ошибкой импорта в конце.
win32
1267650600228229401496703205376
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named py
Почему я получаю эту ошибку и как ее исправить? Спасибо!
Вместо:
import test.py
просто напишите:
import test
Это предполагает, что test.py находится в том же каталоге, что и файл, который импортирует его.
Эта странно выглядящая ошибка является результатом того, как Python импортирует модули.
Python видит:
import test.py
Python думает (упрощенный бит):
тест модуля импорта.
- найдите test.py в пути поиска модуля
- выполнить test.py(где вы получите свой результат)
- импортировать 'test' как имя в текущее пространство имен
import test.py
- поиск файла test/py.py
- throw ImportError (нет модуля с именем 'py').
Поскольку python допускает имена точечных модулей, он просто думает, что у вас есть подмодуль с именем py
в модуле test
и попытался найти его. Он не подозревает, что вы пытаетесь импортировать файл.
Вы не указываете расширение при импорте. Просто выполните:
import test
Как уже упоминалось, вам не нужно помещать расширение файла в оператор импорта. Рекомендуемое чтение - это Раздел модулей в учебнике Python.
Для получения дополнительной информации об ошибке интерпретатор считает, что вы пытаетесь импортировать модуль с именем py
из пакета test
, поскольку точка указывает на инкапсуляцию. Поскольку такой модуль не существует (и test не является даже пакетом!), Он вызывает эту ошибку.
Как указано в более подробной документации по инструкции импорта, он все еще выполняет все инструкции в модуле test
перед попыткой для импорта модуля py
, поэтому вы получаете распечатанные значения.