gpt4 book ai didi

Python - 相对导入

转载 作者:太空宇宙 更新时间:2023-11-03 15:20:09 24 4
gpt4 key购买 nike

我正在开发一个 Python 程序,它管理和运行模块(.py python 文件),用户可以添加这些模块并使用导入功能将其导入到主程序(foo.py)中。这是目录结构

Foo/
foo.py #Main script. Imports ouput.py, core.py and bar.py when needed.
src/
__init__.py
output.py #Output functions required by bar.py and foo.py
core.py
modules/
__init__.py
bar.py #Needs output.py

我可以使用

导入 foo.py
from src.output import *

但我面临的问题是,当我尝试使用

从 bar.py 导入 o​​utput.py 时
from ..src.output import *

我得到了错误

ValueError: Attempted relative import beyond toplevel package

我将文件放在不同的目录中,因为它使不同的程序员更容易分别编码,我肯定需要一个文件夹“模块”或可以添加 .py 模块文件并在 bar 中使用其功能的文件夹。 py

如果我做错了,请告诉我。并随时提出更好的方法。

谢谢。

最佳答案

问题是因为 Foo 没有 __init__.py,所以它不被认为是一个包。

相对导入中的每个句点都是指一个包。当你这样做的时候

from ..src.output import *

bar.py中,第一个句点指的是当前包modules。第二个句点指的是上面的包,Foo。因为 Foo 实际上不是一个包,所以你会得到一个错误。

附言通配符导入是不受欢迎的。特别是当您从像这样的远距离相关包导入时,我会尝试将其重构为显式导入。

关于Python - 相对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16254773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com