更改python中的主包名称

更改python中的主包名称,python,package,Python,Package,在我的项目中,我想更改主包名称 我有这样一个dir结构: hallo/sub hallo/foo hallo/bar 我想将主名称改为“再见”: goodbye/sub goodbye/foo goodbye/bar 但是新名字总是被拒绝!例如,如果我导入 将debye.sub.utils导入为utils 它返回错误 ImportError: No module named sub.utils 很明显,旧名字不起作用。 文件uuu init_uuuu.py被写入所有子目录 我试图删除所有*

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

我有这样一个dir结构:

hallo/sub
hallo/foo
hallo/bar
我想将主名称改为“再见”:

goodbye/sub
goodbye/foo
goodbye/bar
但是新名字总是被拒绝!例如,如果我导入

将debye.sub.utils导入为utils

它返回错误

ImportError: No module named sub.utils
很明显,旧名字不起作用。 文件uuu init_uuuu.py被写入所有子目录

我试图删除所有*.pyc文件和缓存目录,我试图在另一个目录中重新克隆项目,但什么都没有,新名称总是被拒绝

我在*nix下使用python2,我从未在windows下移动过

有什么想法吗

编辑: 旧名称非常适用:

import hallo.sub.utils as utils

始终没有出现任何错误,问题在于名称更改。

对于从外部导入的内容,请检查uuu init uuuuuuupy.py的内容,以查找可能会抛出错误的变量,如uuu all uuuuuuuuuuuuuuuuuuuuuu

另外,典型的习语是:

from hallo.sub import utils      #tyically this
import hallo.sub.utils as utils  #instead of this
我无法想象这会有什么不同,但是python偶尔会有一些愚蠢的bug

对于从包内导入,可以改为使用。在hallo软件包中,您可以更改以下内容:

import hallo.sub as sub
import hallo.sub.utils as utils
对此

from . import sub
from .sub import utils

那么外部包的名称就无关紧要了。

听起来好像您有另一个名为“再见”的模块。添加一个导入窗口;打印再见。_文件____________________________________。看我的。你是对的,我对软件包的命名有点混淆。这不是OP的问题。不是在包内使用旧名称,而是从包外导入新名称失败。好的,这是一个可能的解决方案。但是全局导入使用的是“你好”,而不是“再见”。我不认为python偶尔会有愚蠢的bug是真的。使用it的人通常不完全了解他们在做什么,例如相对进口/循环进口等。。显然存在bug,但对于复杂的软件来说这是不可避免的。