VS Code更新后Code Runner先执行Python命令再激活虚拟环境导致依赖缺失问题求助
最近VS Code更新后碰到个挺烦人的小问题,想请教下有没有同款遭遇的朋友,或者知道怎么解决的?
情况是这样的:我已经在工作目录里创建并选中了虚拟环境(venv),但用Code Runner的快捷键运行Python文件时,顺序完全搞反了——VS Code先是直接用全局Python执行命令:python -u file.py
结果就是依赖找不到(比如我这里运行导入Flask的脚本直接报ModuleNotFoundError),之后才会执行虚拟环境的激活命令:source path/to/activate.fish
第二次再按快捷键运行就没问题了,因为虚拟环境已经激活了。这事儿不算大bug,但每次第一次运行都报错,真的有点闹心。
我试过切换shell,默认用的fish,换成bash后情况一模一样。后来看到@Abhinandan M.的提示,才发现这不是VS Code本身的bug,而是更新后VS Code和Code Runner的配置冲突了。
我特意禁用Code Runner测试了下:这时候VS Code会先执行虚拟环境激活命令,再用虚拟环境里的Python完整路径来运行文件,完全正常。但我真的不想放弃Code Runner啊——它最大的好处就是一个快捷键能运行所有类型的文件,当初就是冲着这个装的!
我琢磨着原因应该是:VS Code更新后,终端启动时会自动执行激活虚拟环境的命令,但Code Runner的执行优先级比这个高,导致Python运行命令先跑了,激活命令反而在后面。本来应该是先激活虚拟环境再执行脚本才对,感觉就是个优先级配置的问题?
有没有其他人遇到同样的问题啊?求支招!
附上完整的终端日志:
python -u "/home/zarir/Documents/Projects/ReDHaT_SmartAI/panel/__init__.py" Welcome to fish, the friendly interactive shell Type help for instructions on how to use fish zarir@radxa-x4 ~/D/P/ReDHaT_SmartAI (main)> python -u "/home/zarir/Documents/Projects/ReDHaT_SmartAI/panel/__init__.py" Traceback (most recent call last): File "/home/zarir/Documents/Projects/ReDHaT_SmartAI/panel/__init__.py", line 1, in <module> from flask import Flask ModuleNotFoundError: No module named 'flask' zarir@radxa-x4 ~/D/P/ReDHaT_SmartAI (main) [1]> source /home/zarir/Documents/Projects/ReDHaT_SmartAI/.venv/bin/activate.fish (.venv) zarir@radxa-x4 ~/D/P/ReDHaT_SmartAI (main)> echo Pressing Run Shortcut Pressing Run Shortcut (.venv) zarir@radxa-x4 ~/D/P/ReDHaT_SmartAI (main)> python -u "/home/zarir/Documents/Projects/ReDHaT_SmartAI/panel/__init__.py" File Executed (.venv) zarir@radxa-x4 ~/D/P/ReDHaT_SmartAI (main)>
内容来源于stack exchange

