Я знаю, что этот вопрос задавался много раз здесь, и я, вероятно, прочитал большинство ответов (в том числе this и который), а также документацию на python, но по-прежнему не может найти ответ на мою очень простую проблему с импортом. Это так просто, что я должен пропустить что-то глупое, но пока этого не вижу. Я установил следующую структуру:
myproject
myscript.py
MyPackage
__init.py__
mymodule.py
Я просто хочу загрузить mymodule.p
y из myscript.py
(или интерпретатор командной строки python, который должен быть тем же).
myscript.py
содержит:
#!/usr/bin/python
import MyPackage
__init.py__
содержит:
from . import mymodule
mymodule.py
содержит
#!/usr/bin/python
def myfunction():
print "mymessage"
Моя цель - вызвать myfunction
из myscript.py
, но если я попытаюсь вызвать модуль, я получаю
$python myscript.py
Traceback (most recent call last):
File "myscript.py", line 2, in <module>
import MyPackage
ImportError: No module named MyPackage
Что я уже пробовал:
- Я попробовал все под OSX и Ubuntu Linux, чтобы уменьшить вероятность неисправной установки python.
- Я установил переменную среды
PYTHONPATH
в каталогmyproject
, а также в.
и для обоих. - Я оставил
__init.py__
blank - Я попробовал инструкции импорта также из интерпретатора python, запущенного из каталога
myproject
-
Я попробовал следующие операторы импорта:
from MyPackage import mymodule import MyPackage.mymodule import MyPackage.mymodule as module
все без успеха (одно и то же сообщение об ошибке).
Если я помещаю mymodule.py
в каталог проекта без использования пакета, импорт работает нормально. Но я не понимаю, почему импорт из подпакетов не работает.
Любая идея, как я могу заставить это работать?
Спасибо за помощь!