1

我正在尝试使用 pytest/testinfra 构建测试系统,并且我使用 Python 的相对导入将设置从测试移动到单独的文件(settings.py__init__.py)中。所有测试看起来都相似:

from . import *


def test_port(host):
    assert host.socket(f"tcp://127.0.0.1:{ PORT }").is_listening

问题是,如果这个带有测试的目录(名称由应用程序名称决定)包含破折号(fe app-foo),python 会失败:

    from . import *
E   ImportError: attempted relative import with no known parent package

如果我将目录重命名app-fooapp_foo它可以工作。但我真的不想这样做,因为名称来自外部系统,重命名非常不受欢迎。

有什么办法可以说 python 为带有破折号的目录导入本地文件?

PS我尝试过使用from .settings import *,但它是一样的。我尝试使用from settings import *,但如果我使用../../tests路径运行测试它会失败。

4

0 回答 0