Python如何从相对路径导入模块?求简洁可行方案
Python相对路径导入失败的原因及简单解决方法
为什么你试的写法都不行?
Python的相对导入(用..的写法)不是基于文件系统的相对路径,而是基于包的层级结构。当你直接运行test/test.py时,这个脚本会被当作「顶层脚本」,不属于任何包结构,所以..这种指向上层包的语法根本找不到对应的层级,自然会报错。
两种简单的解决方法
方法1:手动添加模块搜索路径
在test.py的最开头加上这段代码,把src目录加到Python的模块搜索路径里,之后就能直接导入image模块:
import sys import os # 获取当前脚本所在目录,拼接出src目录的绝对路径 sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../src'))) # 现在可以正常导入了 import image
这种方法不需要修改项目结构,直接运行test.py就能生效。
方法2:把项目当作包运行
给src和test目录都加一个空的__init__.py文件,让Python把它们识别为包,修改后的项目结构:
your_project/ src/ __init__.py image.py test/ __init__.py test.py
然后回到项目根目录(your_project/),用-m参数运行测试模块:
python -m test.test
这时候test.py里就可以用你之前试的相对导入写法:
from ..src import image
内容的提问来源于stack exchange,提问作者amjjam
相关产品推荐
相关产品推荐

