为什么我的单元测试不能在Python中运行?

Hoa*_*Hoa 0 python

我有

myapp/
    __init__.py
    lib.py
    tests/
        lib_test.py
Run Code Online (Sandbox Code Playgroud)

在lib_test.py我有:

import lib
Run Code Online (Sandbox Code Playgroud)

从myapp运行时:

python tests/lib_test.py
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

ImportError: No module named lib
Run Code Online (Sandbox Code Playgroud)

毫无疑问,这是某种初学者错误.但是我无法弄清楚出了什么问题.

Jef*_*ner 5

当你尝试import lib像上面那样做时,Python会尝试从你所在的目录开始查找导入(例如,如果你在myapp目录中,它会找到lib.py并且能够import lib).但是,当在包中导入(基本上,任何东西__init__.py)时,你应该使用显式包导入(如from myapp import lib),以便python解释器知道在哪里看.这也具有避免命名空间冲突的优点lib(即,如果您在其中的不同文件夹lib.py中).

底线:替换import libfrom myapp import lib,你会很好.