相对导入和 ModuleNotFoundError:没有名为 x 的模块
尝试在 Python 3 中利用相对导入时,程序员偶尔会遇到“ModuleNotFoundError:没有名为 x 的模块”错误。此错误表示解释器在运行时无法找到具有该特定名称的模块。
要理解此问题,区分绝对导入和相对导入至关重要。绝对导入用于导入 sys.path 上可用的模块,而相对导入用于导入相对于当前模块的模块。然而,相对导入需要当前模块属于一个包。
提供的代码片段由两个文件组成:test.py 和 config.py。 config.py 包含函数和变量,而 test.py 导入配置并访问其“debug”参数。尽管存在 __init__.py 文件,但仍会出现“ModuleNotFoundError: No module named 'config'”错误。
此错误源于正在执行的文件 (test.py) 未包含在一个包结构。因此,它无法执行相对导入。使用绝对导入可以解决这个问题,如下面修改后的代码片段所示:
<code class="python"># test.py import ryan.config # Replace config with ryan.config for absolute import print(ryan.config.debug)</code>
或者,创建一个包结构并将 test.py 放置在其中将允许相对导入。目录结构可能如下所示:
. ├── __init__.py └── ryan ├── __init__.py ├── config.py └── test.py
总之,仅当当前模块属于包时才允许相对导入。如果正在执行的文件缺少包结构,则应使用绝对导入以避免“ModuleNotFoundError”异常。
以上是在 Python 3 中使用相对导入时,为什么我会收到'ModuleNotFoundError:没有名为 x 的模块”?的详细内容。更多信息请关注PHP中文网其他相关文章!