sam*_*med 14 python import package python-import importerror
我知道堆栈溢出有很多类似的问题.但是,共同的答案对我来说似乎并不适用.
我有这样的文件结构
proj/
lib/
__init__.py
aa.py
bb.py
test/
__init__.py
aa_test.py
Run Code Online (Sandbox Code Playgroud)
我想如果我在test.py中包含代码
import lib.aa
Run Code Online (Sandbox Code Playgroud)
要么
from lib import aa
Run Code Online (Sandbox Code Playgroud)
我将能够引用lib/
目录中的模块.但那没用.
所以我尝试添加到路径,并正确添加它:
os.environ["PATH"] += ":%s" % os.path.abspath(os.path.join("..",""))
print os.environ["PATH"]
Run Code Online (Sandbox Code Playgroud)
但即使是现在,当我尝试上面的导入语句时......我不断收到错误
ImportError: No module named aa
Run Code Online (Sandbox Code Playgroud)
要么
ImportError: Importing from non-package <Something...>
Run Code Online (Sandbox Code Playgroud)
有什么明显的东西我不见了吗?
有没有办法检查我__init__.py
是否正确配置了我的文件,或者查看我的包层次结构?
Cas*_*par 19
您需要更新您的sys.path
,这是python查找模块的位置,而不是您当前环境中系统的路径,这os.environ["PATH"]
就是所指的.
例:
import os, sys
sys.path.insert(0, os.path.abspath(".."))
import aa
Run Code Online (Sandbox Code Playgroud)
完成此操作后,您可以aa
像这样使用您的函数:aa.myfunc()
还有在一些更多的信息接受的答案为蟒蛇:从目录导入模块