【问题标题】:Import a script which imports another script gets ModuleNotFoundError导入另一个脚本的脚本会得到 ModuleNotFoundError
【发布时间】:2020-12-10 00:01:06
【问题描述】:

我在从导入的脚本进行相对导入时遇到问题。

我有一个这样的脚本结构:

script1.py
dirname1/
        dirname2/
                 src/
                     script2.py
                     __init__.py
                     util/
                          script3.py
                          __init__.py

我正在从命令行运行脚本 1。像这样:

python script1.py

我有这样的 script1 导入脚本 2:

import dirname1.dirname2.src.script2

当我尝试从 script2 导入 script3 时,我遇到了问题。

我像这样导入该脚本:

import util.script3

然后我得到这个模块未找到错误:

ModuleNotFoundError: No module named 'util'

我已经尝试过

import .util.script3

但是我得到一个语法错误...

当我导入与顶级脚本相关的所有内容时,它确实有效。但我宁愿能够相对于正在导入的文件进行导入。

【问题讨论】:

    标签: import python-3.7


    【解决方案1】:

    一种方法是在dirname1/dirname2/src/util/__init__.py 中放置以下内容:

    from .script3 import *
    

    然后在dirname1/dirname2/src/__init__.py放,

    from .util import *
    from .script2 import *
    

    然后您可以通过以下方式导入script1.py中的所有文件, 导入.util

    from dirname1.dirname2.src import *
    

    那么所有的命令都可以访问

    commandInScript3()
    

    编辑 或者可能在script1.py 你可以做

     from dirname1.dirname2.src import script2,util
     util.commandInScript3()
     script2.cmmandInScript2()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      相关资源
      最近更新 更多