【发布时间】:2021-06-02 00:45:20
【问题描述】:
项目结构
我的项目结构如下:
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: No module named 'modules'
相对导入
尝试绝对导入时,script1.py 的内容为:
from ..module2.script2 import script2_function
print(script2_function())
运行 script1.py 时(来自项目根目录和 module1 目录)我收到以下错误:
ImportError:尝试使用没有已知父包的相对导入
老实说,我无法理解我做错了什么,并尝试遵循几个指南和堆栈答案,但没有解决这个问题。 你能解释一下如何解决它,以便我更好地理解相对和绝对 python 导入吗?
提前感谢您提供的任何帮助。
【问题讨论】:
-
主脚本(程序启动的地方)应该在“最高”的地方(直接在“pythonProject”中)。然后可以导入它下面和同一目录中的模块(也可以按所示方式相互导入)。
-
@MichaelButscher 有没有其他方法可以直接运行script1.py,项目根目录下没有“主脚本”?
标签: python python-3.x python-import