在我的项目中,我想更改主程序包名称。
我是这样的目录结构:
hallo/sub
hallo/foo
hallo/bar
我想将主要名称更改为例如'再见':
goodbye/sub
goodbye/foo
goodbye/bar
但结果新名称总是被拒绝!例如,如果我导入
import goodbye.sub.utils as utils
它返回错误
ImportError: No module named sub.utils
显然,旧名称不起作用。
文件__init__.py
写在所有子目录中!
我试图删除所有* .pyc文件和缓存目录,我试图在另一个目录中重新克隆项目,但没有,新名称总是被拒绝!
我在* nix下使用python2而且我从未在windows下移动过。
有些想法?
编辑: 旧名称完美无缺:
import hallo.sub.utils as utils
一直没有任何错误,问题是名称更改。
答案 0 :(得分:0)
对于来自外部的导入,请检查__init__.py
的内容以查找可能会丢失内容的变量,例如__all__
。
此外,典型的习语是:
from hallo.sub import utils #tyically this
import hallo.sub.utils as utils #instead of this
我无法想象为什么会产生影响,但是python偶尔会有愚蠢的错误。
对于从包中导入的内容,您可以使用relative imports。在您的hallo
包中,您可以更改此内容:
import hallo.sub as sub
import hallo.sub.utils as utils
到这个
from . import sub
from .sub import utils
然后调用外包是什么并不重要。