小编典典

相对路径即使使用__init__.py也无法使用

python

我知道栈上有很多类似的问题。但是常见的答案似乎并不适合我。

我有这样的文件结构

  proj/
       lib/
          __init__.py
          aa.py
          bb.py
          test/
               __init__.py
               aa_test.py

我发现如果我在test.py中包含代码

import lib.aa

要么

from lib import aa

我将能够引用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是否正确配置了文件,或查看我的程序包层次结构?


阅读 153

收藏
2020-12-20

共1个答案

小编典典

您需要更新sys.path,这是python在其中查找模块的位置,而不是当前环境os.environ["PATH"]中所指的系统路径。

例:

import os, sys
sys.path.insert(0, os.path.abspath(".."))
import aa

完成此操作后,您可以aa像下面这样使用函数:aa.myfunc()

还有在一些更多的信息接受的答案为python:从目录导入模块

2020-12-20