我知道栈上有很多类似的问题。但是常见的答案似乎并不适合我。
我有这样的文件结构
proj/ lib/ __init__.py aa.py bb.py test/ __init__.py aa_test.py
我发现如果我在test.py中包含代码
import lib.aa
要么
from lib import aa
我将能够引用lib/目录中的模块。但这没有用。
lib/
所以我尝试添加到路径,它正确添加了它:
os.environ["PATH"] += ":%s" % os.path.abspath(os.path.join("..","")) print os.environ["PATH"]
但是即使是现在,当我尝试上述导入语句时,我仍然收到错误消息
ImportError: No module named aa
ImportError: Importing from non-package <Something...>
有什么明显的我想念的吗?
有没有办法检查我__init__.py是否正确配置了文件,或查看我的程序包层次结构?
__init__.py
您需要更新sys.path,这是python在其中查找模块的位置,而不是当前环境os.environ["PATH"]中所指的系统路径。
sys.path
os.environ["PATH"]
例:
import os, sys sys.path.insert(0, os.path.abspath("..")) import aa
完成此操作后,您可以aa像下面这样使用函数:aa.myfunc()
aa
aa.myfunc()
还有在一些更多的信息接受的答案为python:从目录导入模块