我无法让 Code Runner 扩展与 virtualenvs 一起使用。每当我尝试运行导入仅安装在 virtualenv 中而不是全局 Python 安装中的库的代码时,我都会收到导入错误。在终端中运行完全相同的代码是可行的。
我使用的是 Windows 10,并且安装了 Python 3.6.5。
我得到的确切错误是:
ModuleNotFoundError: No module named 'bs4'
一个可能的解决方案是在 VS Code 设置中设置
"code-runner.runInTerminal": true
,默认情况下为 false。这样做时,Code Runner 将在使用 "terminal.integrated.shell.windows"
设置配置的 shell 中运行代码。
之后,使用 Code Runner 运行脚本。现在将打开一个新终端,在执行代码之前,您使用 VS Code 的
Python: Select Interpreter
选择的 python 环境将自动激活。
(如果环境没有自动激活,您也可以手动执行此操作,只需确保在 Code Runner 打开的终端会话中执行此操作即可。)
第一种方法:
首先,我建议像这样设置
executorMap
:
"code-runner.executorMap": {
"python": "\"$pythonPath\" $fullFileName",
},
通过设置此选项,每次在 VS Code 中更改 Python 解释器版本时,代码运行器将使用相同的版本来执行代码。
第二种方法:
我之前使用的另一种方法是在第一行使用 Shebang 代码,如下所示:
#! .\venv\scripts\python.exe
code-runner 与 Shebang 命令兼容,它将使用您在第一行中提到的 Python 版本执行您的代码。
如果您观看这个视频,如果您是Mac用户,您可以在44.55分钟看到解决方案。
你必须定义你的
$pythonPath
。但是,您不必定义 $fullFineName
。如果安装了 Code Runner,它已经为您完成了
将此添加到用户设置:
"python.pythonPath": "/Users/danielaaa/miniconda3/envs/tf/bin/python"
,
"code-runner.executorMap": { "python": "$pythonPath -u $fullFileName"}
我在文件开头添加了 shebang 行,指向我的 venv 解释器位置,例如。
#!/Users/username/Desktop/venv/bin/python
代码运行器似乎工作得很好。
我激活了 CodeRunner 并遇到了上述所有相同的问题。
然后我继续进行
pip install requests
,在我的例子中,该模块存在于 venv 中,但不是全局的,尽管它已经存在并且理论上应该可以工作。你瞧,现在效果很好。
我想要点是,如果您在创建 venv 后安装 CodeRunner,则它不会中流。
将其添加到您的用户或工作区设置中
"code-runner.executorMap": {
"python": "source $workspaceRoot/venv/bin/activate && python3 $fullFileName",
},
"code-runner.runInTerminal": true
在运行脚本之前将工作区目录附加到
PYTHONPATH
对我有用:
"code-runner.executorMap": {
"python": "export PYTHONPATH=\"$PYTHONPATH:$workspaceRoot\";python -u $fullFileName",
}
我很晚了,但是我通过这样映射解决了它:
“code-runner.executorMap”:{ “python”:“$pythonPath $fullFileName” }