绝对和相对导入 - 从子文件夹 1 导入子文件夹 2 中的模块
Absolute and Relative Imports - Importing module in subfolder2 from subfolder1
项目结构
我有以下项目结构:
pythonProject\
modules\
__init__.py
module1\
__init__.py
script1.py
module2\
__init__.py
script2.py
script2.py的内容是:
def script2_function():
return "Import worked successfully"
绝对导入
尝试绝对导入时,script1.py的内容是:
from modules.module2.script2 import script2_function
print(script2_function())
当运行 script1.py(从项目根目录和module1目录)我得到以下错误:
ModuleNotFoundError: 没有名为 'modules'
的模块
相对导入
尝试绝对导入时,script1.py的内容是:
from ..module2.script2 import script2_function
print(script2_function())
当运行 script1.py(从项目根目录和module1目录)我得到以下错误:
ImportError: 试图在没有已知父包的情况下进行相对导入
老实说,我不明白我做错了什么,并尝试按照几个指南和堆栈答案进行操作,但没有任何方法可以解决这个问题。
你能解释一下如何解决它吗,这样我就可以更好地理解相对和绝对 python 导入?
提前感谢您提供的任何帮助。
如果我的理解正确,您可以将目录更改为 pythonProject
目录和 运行 python3 -m modules.module1.script1
。 import
语句与您 运行 宁 Python 来自的位置有关。
当然,另一个选择是在项目根目录中添加 script1.py
,这与上面的类似,对于许多项目来说可能更有意义。
对于以上两个,script1.py
中的导入语句可以是 from modules.module2.script2 import script2_function
或 from ..module2.script2 import script2_function
。
如果我误解了这个问题,我们深表歉意。
项目结构
我有以下项目结构:
pythonProject\
modules\
__init__.py
module1\
__init__.py
script1.py
module2\
__init__.py
script2.py
script2.py的内容是:
def script2_function():
return "Import worked successfully"
绝对导入
尝试绝对导入时,script1.py的内容是:
from modules.module2.script2 import script2_function
print(script2_function())
当运行 script1.py(从项目根目录和module1目录)我得到以下错误:
ModuleNotFoundError: 没有名为 'modules'
的模块相对导入
尝试绝对导入时,script1.py的内容是:
from ..module2.script2 import script2_function
print(script2_function())
当运行 script1.py(从项目根目录和module1目录)我得到以下错误:
ImportError: 试图在没有已知父包的情况下进行相对导入
老实说,我不明白我做错了什么,并尝试按照几个指南和堆栈答案进行操作,但没有任何方法可以解决这个问题。 你能解释一下如何解决它吗,这样我就可以更好地理解相对和绝对 python 导入?
提前感谢您提供的任何帮助。
如果我的理解正确,您可以将目录更改为 pythonProject
目录和 运行 python3 -m modules.module1.script1
。 import
语句与您 运行 宁 Python 来自的位置有关。
当然,另一个选择是在项目根目录中添加 script1.py
,这与上面的类似,对于许多项目来说可能更有意义。
对于以上两个,script1.py
中的导入语句可以是 from modules.module2.script2 import script2_function
或 from ..module2.script2 import script2_function
。
如果我误解了这个问题,我们深表歉意。