Python модуль с точкой входа (такой же, как здесь ). Файл __main__
импортирует другой файл:
from myfile import MyClass
myfile.py
- это файл в той же папке, mymodule
. Он содержит класс под названием MyClass
. Это работает под обычным Python, если я запускаю python3 __main__.py
.
Теперь я установил mymodule
как модуль с sudo pip3 install .
на MacOS X (EDIT: та же ошибка на Linux) , Когда я запускаю mymodule
из командной строки, я получаю ModuleNotFoundError
для моего файла:
Traceback (most recent call last):
File "/Users/valekseyev/.pyenv/versions/3.7.3/bin/mymodule", line 11, in <module>
load_entry_point('mymodule==0.50', 'gui_scripts', 'mymodule')()
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2793, in load_entry_point
return ep.load()
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2411, in load
return self.resolve()
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pkg_resources/__init__.py", line 2417, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/mymodule/__main__.py", line 5, in <module>
from myfile import MyClass
ModuleNotFoundError: No module named 'myfile'
Файл myfile.py
присутствует вместе с __main__.py
в /Users/valekseyev/.pyenv/versions/3.7.3/lib/python3.7/site-packages/mymodule/
, я проверил. В папке тоже есть __init__.py
, она пустая. Папка указана в packages
в setup.py
.
Что происходит, пожалуйста?
РЕДАКТИРОВАТЬ: глядя на Python модули там, они импортируют другие файлы из той же папки с следующий синтаксис:
from .myfile import MyClass
Если я попробую это сделать, обычный Python выполнит перерыв:
ImportError: попытка относительного импорта без известного родительского пакета
Может, как-нибудь обойтись?