相关疑难解决方法(0)

如何将软件包添加到sys路径进行测试

python指南中的指示将这个项目添加到sys路径中以便在测试中使用时,会出现此问题,除非我误解了这些指示,否则该指示似乎不起作用

我有一个像这样的python项目的目录结构

sample/a.py
sample/b.py
sample/c.py
sample/__init__.py
test/context.py
test/test_something.py
test/__init__.py
docs
Run Code Online (Sandbox Code Playgroud)

根据python指南,我应该创建一个test / context.py文件并添加它

import os
import sys
sys.path.insert(0, os.path.abspath('..'))

import sample
Run Code Online (Sandbox Code Playgroud)

然后,在我的test/test_something.py文件中说我可以做到这一点

from .context import sample
Run Code Online (Sandbox Code Playgroud)

该指南说:“这将始终按预期进行”。

但是,当我cd测试并运行时

python -m unittest test_something
Run Code Online (Sandbox Code Playgroud)

我得到一个错误

ValueError: Attempted relative import in non-package
Run Code Online (Sandbox Code Playgroud)

错误消息专门针对此: from .context import sample

问题:如何将示例程序包正确添加到sys路径?

回答时,您还可以澄清该解决方案是否可以处理示例包中的绝对导入。例如,我的s​​ample.a导入sample.b等。当我以不同的方式构造测试时,我进行了绝对导入sample.a,但是由于它的相对导入为from .b import Boo,因此产生了类似的错误

更新资料

`File "/usr/local/lib/python2.7/runpy.py", line 162 in _run_module_as_main "__main__", fname, loader, pkg_name)
File  "/usr/local/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals
File …
Run Code Online (Sandbox Code Playgroud)

python

6
推荐指数
1
解决办法
4341
查看次数

标签 统计

python ×1