我有一个结构如下的项目:
project
|-setup.py
|-... some files (README, LICENSE, etc)
|-package_name
|-__init__.py
|-utility.py
|-m.py
在决定对其进行pypi设置之前,我使用了:
from utility import *
将utility
导入到m
中。但是,当我安装该软件包时,它无法导入utility
,因此我不得不将其更改为:
from package_name.utility import *
同样,当我要开发项目时,我不得不切换回第一个:
我写道:
try:
from package_name.utility import *
except:
from utility import *
但是我想知道是否有更好的解决方案?
答案 0 :(得分:1)
您可以使用相对导入:
from .utility import *
要在开发过程中使用绝对导入(例如在安装软件包from package_name.utility import *
之后),可以以可编辑模式安装软件包:
pip install --editable .
python setup.py develop
这些命令将在您的环境中安装软件包,以便所有代码更改在您重新运行应用程序时立即生效,而无需重新安装软件包。