Python3 从兄弟目录导入模块
Python3 import module from sibling directory
对于 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 文件中,我像这样引用了这个函数:
# /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://itsmycode.com/importerror-attempted-relative-import-with-no-known-parent-package/
- 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
对于 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 文件中,我像这样引用了这个函数:
# /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://itsmycode.com/importerror-attempted-relative-import-with-no-known-parent-package/
- 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