使用相对路径导入模块可能会在使用 Python 包结构时带来挑战。其中一个问题是尝试跨包目录导入模块时遇到的“尝试在非包中相对导入”错误,尽管存在 __init__.py 文件。
要了解根本原因,掌握这一点至关重要Python 的导入机制如何运行。导入通常是相对于当前文件的 name 执行的。但是,当直接执行文件时,它会采用“__main__”名称而不是通常的名称。这种特性会破坏相对导入,从而导致上述错误。
不要直接运行代码,请考虑使用 -m 选项,它允许您将模块视为脚本并为其分配适当的名称。例如,要使用此方法执行 core_test.py,请输入以下命令:
python -m pkg.tests.core_test
或者,您可以使用 package 属性在模块本身内指定包名称。即使文件直接作为脚本运行,此技术也可确保相对导入正常运行。有关此方法的更多详细信息,请参阅 Python 增强提案 366 (PEP-366)。
以上是如何修复 Python 中的'尝试在非包中进行相对导入”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!