gpt4 book ai didi

python从兄弟文件夹导入

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:51 26 4
gpt4 key购买 nike

我正在尝试从同级文件夹中的 python 文件导入模块。我在这里阅读了几个类似的问题,并尝试应用那里列出的解决方案,但我无法解决问题。

结构如下:

parentfolder/gfolder/codefolder/fileA.py
parentfolder/gfolder/utilfolder/util.py

gfoldercodefolderutilfolder 都有一个 __init__.py

我正在尝试在 fileA.py 中做:

import gfolder.utilfolder.util as util

我还尝试在导入语句之前添加:

sys.path.append(".../parentfolder/")

那也不管用:

import gfolder.utilfolder.util as util
ModuleNotFoundError: No module named 'gfolder'

a similar question 中的解决方案说要在我已有的目录中包含 __init.py__

编辑:现在 sys.appendsys.insert 都可以工作,问题是我在路径末尾添加了一个斜杠。当我取出它时,一切正常。

最佳答案

首先,让我向您描述Python 模块Python 包 之间的区别,这样我们就可以达成共识了。 ✌


模块是单个 .py 文件(或多个文件),它们在一次导入下被导入并使用。 ✔

导入模块名称
# 这里的 'aModuleName' 只是一个普通的 .py 文件。

而包是目录中的模块集合,这些目录给出了包层次结构。一个包包含一个不同的 __init__.py 文件。 ✔

从一个包名导入一个模块名
# 这里的 'aPackageName` 是一个包含 `__init__.py` 文件的文件夹
# 和“aModuleName”,它只是一个普通的 .py 文件。


因此,当我们有一个名为proj-dir的项目目录时,结构如下⤵

项目目录
--|--__init__.py
--包1
--|--__init__.py
--|--模块1.py
--包2
--|--__init__.py
--|--module2.py

🔎 Notice that I've also added an empty __init__.py into the proj-dir itself which makes it a package too.

👍 现在,如果你想从 package2module2 导入任何 python 对象到 package1module1 ,那么文件 module1.py 中的 import 语句将是

从 proj-dir.package2.module2 导入对象 2
# 如果你要导入整个模块 2,那么,
从 proj-dir.package2 import module2

我希望这个简单的解释能澄清您对 Python 导入机制的疑虑。 😊

关于python从兄弟文件夹导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48690887/

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