我想发布一个Python 3项目。结构如下:
README.rst
setup.cfg
setup.py
projectname
├── __init__.py
├── __main__.py
├── file1.py
└── file2.py
在我的setup.py中,我有通常的信息(名称,描述等),两条相关的行是:
packages=find_packages(),
entry_points={
'console_scripts': [
'project-name=projectname.__main__:main',
],
},
在我的__main__.py
中,我执行以下导入:
from file1 import a
from file2 import b
我的项目在终端正常运行__main__.py
时工作正常:
python3 __main__.py
但是,运行setup.py后:
sudo python3 setup.py install
并且正在运行:
project-name
我收到以下错误:
ImportError: No module named 'file1'
奇怪的是,如果我做了明确的相对导入:
from .file1 import a
from .file2 import b
这适用于已安装的软件包,但在终端正常运行__main__.py
时不会出现以下错误:
SystemError: Parent module '' not loaded, cannot perform relative import
我完全迷失在这里,任何人都可以解雇一下吗?我一直在阅读Python 3中的导入,但还没有任何帮助。任何帮助将非常感激。如果需要补充信息,请告诉我。谢谢!