我开发了一个具有以下结构的解决方案:
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_class
、from .. my_package import my_class
和其他组合来解决问题,但出现此异常:
ValueError: Attempted relative import in non-package
有什么帮助吗?
最佳答案
我假设开发结构位于 /dev
下,分发结构位于 /install
下。
请注意,默认情况下,sys.path将脚本目录作为其第一个条目。因此,如果 test.py
有一个 import my_package
语句并且您运行 /dev/test.py
,它应该找到 my_package
,即使您的 $PYTHONPATH
为空。如果 /install
是 $PYTHONPATH
中的第一个条目,则运行 /install/tests/test.py
应该找到 /install/my_package
用于导入 my_package
。
摘要:您是否尝试过在 test.py
中使用 import my_package
并在 $PYTHONPATH
中包含 /install
>?
关于python - 导入相关包进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10497060/