gpt4 book ai didi

python-3.x - 从同级目录导入 - Python 3.7

转载 作者:行者123 更新时间:2023-12-04 10:36:53 27 4
gpt4 key购买 nike

我已经阅读了一些关于 Python 中的模块和包的文章(包括他们自己的教程),但无法让它在我的项目中正常工作。我正在使用 Python 3.7.5

这是我的目录结构:

framework/
__init__.py
build/
classifiers/
extraction/
extractionFile.py
quality/
utils/
utilsFile.py

在 extractFile.py 我有这一行:
from ..utils.utilsFile import functionName

但是当我从提取目录运行extractionFile.py 时,出现以下错误:
Traceback (most recent call last):
File "extractionFile.py", line 25, in <module>
from ..utils.utilsFile import functionName
ImportError: attempted relative import with no known parent package

如果我从框架目录运行extractionFile.py,使用:
from utils.utilsFile import functionName

它工作正常。

那么如何仅将 utils 目录转换为一个包,以便从兄弟目录中导入其中的任何文件?

注:我只需要在这个项目上使用这个包。

注:我正在尝试获得永久解决方案,因此 sys.path.insert() 似乎不是一个选择。

编辑:标记为正确的答案有效,但我最终得到了不同的解决方案。从框架目录简单运行(我使用的是 Linux):
DIR=$(pwd) && export PYTHONPATH="${PYTHONPATH}:$DIR"

这会将框架目录放在 Python 的 sys.path 变量上。使其成为 Python 查找包和模块的途径。

我猜你只是使用更适合你的情况的那个。

最佳答案

相对导入仅适用于每个库路径的根目录,您不能使用相对导入来访问库路径根目录的父级。在从您自己的项目中导入模块的情况下,库的根路径是运行解释器的位置,因此为了导入 utils/utilsFile.py你必须运行 extractionFile.py来自 framework而不是 extraction .

如果您确实希望能够运行 extractionFile.py来自 extraction ,但是,一个简单的解决方案是添加 ..通过将其附加到 sys.path 到库路径列表,使extraction的父目录将是库路径之一,因此您可以从 utils.utilsFile 导入直接地:

import sys
sys.path.append('..')
from utils.utilsFile import functionName

关于python-3.x - 从同级目录导入 - Python 3.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60133094/

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