1

我开发了一个具有以下结构的解决方案:

my_package/
my_test_data/
test.py

test.py我可以很容易地导入 my_package ( from my_package import my_class)。这在我选择的 IDE 中非常有用,我可以在其中编写测试用例、执行它们并最终在需要测试的代码中设置断点。

准备分发的精细结构更改为:

my_package/
tests/
    my_test_data/
    test.py

如果有人想测试安装的东西是否正常工作,这没关系。测试引用已安装的 my_package 版本。问题是在开发过程中我需要my_package从开发文件夹中引用,以便我可以测试我正在开发的实时版本并最终进入它以进行调试。我试图用相对导入和其他组合来解决问题,from .my_package import my_classfrom .. my_package import my_class我得到了这个异常:

ValueError: Attempted relative import in non-package

有什么帮助吗?

4

2 回答 2

1

我假设开发结构在下面/dev,分布结构在/install.

请注意,默认情况下,sys.path将脚本目录作为其第一个条目。所以,如果test.py有一个import my_package语句并且你运行/dev/test.py,它应该找到my_package,即使你$PYTHONPATH是空的。如果/install是 中的第一个条目$PYTHONPATH,则运行/install/tests/test.py应该找到/install/my_packagefor import my_package

摘要:您是否尝试过使用import my_packageintest.py并包含/install在您的$PYTHONPATH?

于 2012-05-08T15:31:13.190 回答
0

相对导入只允许在包内明智地使用。您不能将目录引用与包处理混淆。

类似问题提出的解决方案。

于 2012-05-08T10:56:41.470 回答