VS Code run-on-save扩展无法加载虚拟环境路径如何解决
问题描述
在Visual Studio Code中安装了emerald walk run-on-save扩展,已在.vscode/settings.json中配置保存时自动用black格式化代码,配置内容如下:
{ "python.testing.pytestArgs": [ "app" ], "python.testing.unittestEnabled": false, "python.testing.pytestEnabled": true, "emeraldwalk.runonsave": { "commands": [ { "match": ".py", "cmd": "pipenv run black ${file} && pipenv run isort ${file} && pipenv run black ${file}", } ] } }
但功能无法正常运行,原因是run-on-save使用的$PATH不包含工作区虚拟环境的bin文件夹路径,导致无法识别pipenv。
解决方案
以下几种方法可解决该问题:
方法1:指定pipenv的绝对路径
找到虚拟环境中pipenv可执行文件的绝对路径,替换配置中的pipenv为该路径。例如:
"cmd": "/home/user/.local/share/virtualenvs/your-project/bin/pipenv run black ${file} && /home/user/.local/share/virtualenvs/your-project/bin/pipenv run isort ${file} && /home/user/.local/share/virtualenvs/your-project/bin/pipenv run black ${file}"
注:路径需替换为你自己虚拟环境的实际路径
方法2:先激活虚拟环境再执行格式化命令
直接激活虚拟环境后运行black和isort,无需通过pipenv中转,不同系统命令不同:
Linux/macOS
"cmd": "source /path/to/your/venv/bin/activate && black ${file} && isort ${file} && black ${file}"
Windows
"cmd": ".\\venv\\Scripts\\activate && black ${file} && isort ${file} && black ${file}"
方法3:让run-on-save使用VSCode终端环境
在settings.json中添加配置,让扩展使用VSCode的终端运行命令,VSCode已识别虚拟环境时会自动加载其PATH:
"emeraldwalk.runonsave.runInTerminal": true
添加后完整的run-on-save配置如下:
"emeraldwalk.runonsave": { "runInTerminal": true, "commands": [ { "match": ".py", "cmd": "pipenv run black ${file} && pipenv run isort ${file} && pipenv run black ${file}", } ] }
内容的提问来源于stack exchange,提问作者abinitio
相关产品推荐
相关产品推荐

