VSCode中Python模块导入问题:调试正常运行报错该如何解决?
问题根源
调试模式能正常运行,是因为你在launch.json里把PYTHONPATH设为了工作区根目录,Python能在这个路径下找到utility模块;但直接运行脚本时,默认的sys.path不包含项目根目录,所以找不到模块。
解决办法
方法1:使用相对导入(需从根目录运行脚本)
修改task_functions.py的导入语句为相对导入形式:
from ..utility.utility_functions import utility_func def task_function() -> bool: print(r'I\'m calling utility function now') utility_func()
运行时,必须从项目根目录(DIRECTORY_IMPORT)执行命令:
python -m tasks.task_functions
注意:不能直接右键运行
task_functions.py,因为主脚本不允许使用相对导入。
方法2:手动添加根目录到模块搜索路径
在task_functions.py开头添加代码,主动把项目根目录加入sys.path:
import sys from pathlib import Path # 获取项目根目录(当前脚本的父目录的父目录) root_dir = Path(__file__).parent.parent sys.path.append(str(root_dir)) from utility.utility_functions import utility_func def task_function() -> bool: print(r'I\'m calling utility function now') utility_func()
这样不管是右键运行脚本,还是终端执行,都能正常找到utility模块。
方法3:配置VSCode运行环境的PYTHONPATH
和调试模式一样,给普通运行模式也配置PYTHONPATH:
- 打开VSCode的设置(快捷键
Ctrl+,),搜索python.envFile,设置值为${workspaceFolder}/.env - 在项目根目录创建
.env文件,写入:
PYTHONPATH=${PYTHONPATH}:${WORKSPACE_FOLDER}
之后在VSCode里直接运行task_functions.py,就会自动加载这个环境变量,找到模块。
方法4:将项目转为可安装包(适合长期维护的项目)
在项目根目录创建setup.py文件:
from setuptools import setup, find_packages setup( name="my_project", version="0.1.0", packages=find_packages() )
然后在终端执行:
pip install -e .
这个命令会把项目以“可编辑”模式安装到Python环境中,之后任何位置都能正常导入utility模块。
内容的提问来源于stack exchange,提问作者Ames ISU
相关产品推荐
相关产品推荐

