导入从Python 3.6中的其他目录导入其他模块的模块

时间:2019-09-20 16:20:17

标签: python import module

我有一个工作目录,如下所示:

project
  src
    data
      +secrets.py
      +data.py
    +format.py

我在secrets.py中有名为userpw的变量。

我将变量data.py导入到数据库中,如下所示:

from secrets import user, pw

这可行,但是现在我希望能够在format.py中运行它:

from data.data import <function_name>

我得到一个Import Error: cannot import name 'user' from 'secrets'

由于format.pydata.py不在同一目录中,因此导入被中断,因为它找不到secrets.py。如果我要更新data.py

from data.secrets import user, pw

我可以成功运行format.py。但这会破坏data.py

我觉得我只是在完全错误地构造我的项目。有更好的方法可以做到这一点,还是可以解决导入错误?

我尝试将相对导入与..一起使用,并显式使用src.data.secrets,但这仍然会破坏data.py

2 个答案:

答案 0 :(得分:0)

尝试from .secrets import user, pw。我试过了,行得通。点号表示您正在从当前目录导入模块

答案 1 :(得分:0)

这应该有效。

from importlib import import_module

format = import_module("../format.py")

您可能必须使用,并且可能应该根据文档进行操作。

from importlib import import_module

format = exec_module(create_module(find_spec("../format.py)))