VSCode中Python跨文件导入函数报ModuleNotFoundError问题问询
解决VSCode Python跨文件导入ModuleNotFoundError问题
核心原因
Python运行时的模块搜索路径sys.path默认不会自动包含你的项目层级目录,哪怕所有文件夹都已创建__init__.py,也无法识别上层的模块结构。
可行解决方法
- 方法1:临时添加目标目录到搜索路径
在Encryption.py文件最开头加入以下代码:
import sys import os # 拿到Encryption.py所在的EncryptionFunc目录的上级目录,也就是SysFunctions.py所在的Functions目录 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 后续直接导入即可 from SysFunctions import file_import
- 方法2:配置VSCode全局生效路径
打开VSCode设置,搜索python.analysis.extraPaths,将你的Functions文件夹或者Engine文件夹的绝对路径添加到列表中。同时在项目根目录创建.env文件,写入:
PYTHONPATH=你的Engine文件夹绝对路径
重启VSCode窗口后即可生效,后续直接用from Functions.SysFunctions import file_import就能正常导入。
- 方法3:相对导入(仅适用于包调用场景,直接运行Encryption.py不生效)
写法如下:
from ..SysFunctions import file_import
该方法仅当你在更上层文件调用Encryption模块时生效,直接运行Encryption.py会报相对导入错误。
验证
配置完成后运行代码,无报错即可正常调用file_import函数。
内容的提问来源于stack exchange,提问作者user15347100
相关产品推荐
相关产品推荐

