Python3 从同级目录导入模块

2023-12-28

对于 python 3.10 项目中的新结构,我必须将不同的模块彼此分开,并将它们移动到同一层的不同文件夹中。文件夹结构看起来有点类似于:

Root
-- main.py
-- __init__.py

-- folder1
----- __init__.py
----- a.py

-- folder2
----- __init__.py
----- b.py

我在 a.py 中定义了一个函数,如下所示:

# /root/folder1/a.py
def testFunction(text):
    print(text)

在根初始化文件中,我像这样引用了这个函数:

# /root/__init__.py
from .folder1.a import testFunction as testFunction

所以我尝试在模块folder2/b.py中使用模块folder1/a.py中的函数:

# /root/folder2/b.py
from .. import testFunction
text = 'hello World'
testFunction(text)

我在 GitHub 上搜索了一个更大的 python 项目,并在顶部找到了模块引用的解决方案,但它对我不起作用。 我尝试了以下解决方案,但也不起作用:

  • https://www.geeksforgeeks.org/python-import-from-sibling-directory/?ref=lbp https://www.geeksforgeeks.org/python-import-from-sibling-directory/?ref=lbp
  • https://itsmycode.com/importerror-attempted-relative-import-with-no-known-parent-package/ https://itsmycode.com/importerror-attempted-relative-import-with-no-known-parent-package/
  • https://iq-inc.com/importerror-attempted-relative-import/ https://iq-inc.com/importerror-attempted-relative-import/

所以我的问题是,出现此错误:

ImportError: attempted relative import with no known parent package

非常感谢您的每一个提示或解决方案:-)


我发现我可以使用 sys.path.append 和 os.path.abspath。所以解决方案是这样的:

目录结构:

Root
-- main.py
-- __init__.py

-- folder1
----- __init__.py
----- a.py

-- folder2
----- __init__.py
----- b.py

要在folder2/b.py中使用folder1/a.py中的testFunction,b.py中的代码应如下所示:

import sys
import os

sys.path.append(os.path.abspath('../Root/folder1'))
from a import testFunction
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3 从同级目录导入模块 的相关文章

随机推荐