首页 >后端开发 >Python教程 >如何处理 Python 包外部的相对导入?

如何处理 Python 包外部的相对导入?

Linda Hamilton
Linda Hamilton原创
2024-12-12 22:24:17893浏览

How to Handle Relative Imports Outside of Python Packages?

处理非包上下文中的相对导入

尝试使用 Python 外部目录结构中的相对路径导入模块时包裹,如:

pkg/
  __init__.py
  components/
    core.py
    __init__.py
  tests/
    core_test.py
    __init__.py

您可能会遇到错误:

ValueError: Attempted relative import in non-package

了解 Python 导入机制

Python 导入机制依赖于当前文件的 name 属性来确定要导入的适当模块。直接执行文件时,它会被分配“__main__”的名称,从而无法进行相对导入。

可能的解决方案

解决此问题问题,您可以使用以下方法之一:

1.使用 -m 选项

您可以使用 -m 选项执行该文件,这会将文件作为模块添加到 sys.path:

python -m pkg.tests.core_test

2 。指定 package 属性

如果您的包的一部分专门设计为作为脚本运行,则可以分配 package 属性来指定其包中所需的名称

import sys

if __name__ == "__main__":
    sys.__package__ = "pkg.tests"

    from ..components.core import GameLoopEvents

参考:

更多信息,请参阅 PEP 366:https://www.python.org/dev/peps/pep -0366/

以上是如何处理 Python 包外部的相对导入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn