我有
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)
毫无疑问,这是某种初学者错误.但是我无法弄清楚出了什么问题.
当你尝试import lib像上面那样做时,Python会尝试从你所在的目录开始查找导入(例如,如果你在myapp目录中,它会找到lib.py并且能够import lib).但是,当在包中导入(基本上,任何东西__init__.py)时,你应该使用显式包导入(如from myapp import lib),以便python解释器知道在哪里看.这也具有避免命名空间冲突的优点lib(即,如果您在其中的不同文件夹lib.py中).
底线:替换import lib为from myapp import lib,你会很好.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |