我有
myapp/
__init__.py
lib.py
tests/
lib_test.py
在lib_test.py中我有:
import lib
从myapp运行时:
python tests/lib_test.py
我收到错误
ImportError: No module named lib
毫无疑问,这是某种初学者错误。但是我无法弄清楚出了什么问题。
答案 0 :(得分:5)
当您尝试像上面那样执行import lib
时,Python会尝试从您所在的目录开始查找导入(例如,如果您在myapp
目录中,那么,它会找到lib.py
并能够import lib
)。但是,在包中导入时(基本上是__init__.py
的任何内容),您应该使用显式包导入(如from myapp import lib
),以便python解释器知道在哪里查找。这还有一个优点,即避免与lib
发生命名空间冲突(即,如果您位于其中包含lib.py
的其他文件夹中)。
底线:将import lib
替换为from myapp import lib
,您就会很好。
答案 1 :(得分:1)
您应该在__init__.py
目录中添加tests/
文件。