我有一个名为Util的Python包。它包括一堆文件。这里是其中一个文件顶部的include语句:
from config_util import ConfigUtil #ConfigUtil is a class inside the config_util module
import error_helper as eh
当我运行单元测试时,这个很好用。
但是当我在另一个包的虚拟环境中安装 Util 时,一切都崩溃了。我需要改变导入语句为
from Util.config_util import ConfigUtil
from Util import error_helper as eh
然后一切都像以前一样运作。那么使用第一种形式是否有意义,还是说总是使用第二种形式更好呢?
如果没有使用第一种形式的意义,为什么允许使用它呢?
python-3.x
,但是在使用隐式相对导入。这种方式在Python 3中已被删除。我猜测您正在运行[python Util/foo.py
]进行测试,而不是运行python -m Util.foo
。 - anthony sottile