Я знаю, что этот вопрос задавался много раз здесь, и я, вероятно, прочитал большинство ответов (в том числе 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 в каталог проекта без использования пакета, импорт работает нормально. Но я не понимаю, почему импорт из подпакетов не работает.
Любая идея, как я могу заставить это работать?
Спасибо за помощь!