在python中更改主包名称

时间:2012-10-17 09:25:28

标签: python package

在我的项目中,我想更改主程序包名称。

我是这样的目录结构:

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

一直没有任何错误,问题是名称更改。

1 个答案:

答案 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

然后调用外包是什么并不重要。