VS Code Code Runner 不适用于 virtualenvs

问题描述 投票:0回答:9

我无法让 Code Runner 扩展与 virtualenvs 一起使用。每当我尝试运行导入仅安装在 virtualenv 中而不是全局 Python 安装中的库的代码时,我都会收到导入错误。在终端中运行完全相同的代码是可行的。

我使用的是 Windows 10,并且安装了 Python 3.6.5。

我得到的确切错误是:

ModuleNotFoundError: No module named 'bs4'
python python-3.x visual-studio-code virtualenv vscode-code-runner
9个回答
27
投票

我也面临同样的问题。

enter image description here 我发现最好的解决方案是将这一行添加到您的 用户或工作区设置(以适合您的项目为准):

"code-runner.executorMap": {
    "python": "C:\\Users\\adarsh_patel\\VisualCode\\env\\Scripts\\activate.bat && python -u",
}

你必须输入你的 virtualenv 路径或者你可以使用。

"code-runner.executorMap": {"python":"$pythonPath $fullFileName"}

enter image description here

enter image description here

希望这对您有帮助。


22
投票

一个可能的解决方案是在 VS Code 设置中设置

"code-runner.runInTerminal": true
,默认情况下为 false。这样做时,Code Runner 将在使用
"terminal.integrated.shell.windows"
设置配置的 shell 中运行代码。

之后,使用 Code Runner 运行脚本。现在将打开一个新终端,在执行代码之前,您使用 VS Code 的

Python: Select Interpreter
选择的 python 环境将自动激活。 (如果环境没有自动激活,您也可以手动执行此操作,只需确保在 Code Runner 打开的终端会话中执行此操作即可。)


15
投票

第一种方法:

首先,我建议像这样设置

executorMap

  "code-runner.executorMap": {
   "python": "\"$pythonPath\" $fullFileName",
   },

通过设置此选项,每次在 VS Code 中更改 Python 解释器版本时,代码运行器将使用相同的版本来执行代码。

第二种方法:

我之前使用的另一种方法是在第一行使用 Shebang 代码,如下所示:

#! .\venv\scripts\python.exe

code-runner 与 Shebang 命令兼容,它将使用您在第一行中提到的 Python 版本执行您的代码。


5
投票

如果您观看这个视频,如果您是Mac用户,您可以在44.55分钟看到解决方案。

你必须定义你的

$pythonPath
。但是,您不必定义
$fullFineName
。如果安装了 Code Runner,它已经为您完成了

将此添加到用户设置:

"python.pythonPath": "/Users/danielaaa/miniconda3/envs/tf/bin/python"
,

"code-runner.executorMap": { "python": "$pythonPath -u $fullFileName"}


3
投票

我在文件开头添加了 shebang 行,指向我的 venv 解释器位置,例如。

#!/Users/username/Desktop/venv/bin/python

代码运行器似乎工作得很好。


1
投票

我激活了 CodeRunner 并遇到了上述所有相同的问题。

然后我继续进行

pip install requests
,在我的例子中,该模块存在于 venv 中,但不是全局的,尽管它已经存在并且理论上应该可以工作。你瞧,现在效果很好。

我想要点是,如果您在创建 venv 后安装 CodeRunner,则它不会中流。


0
投票

将其添加到您的用户或工作区设置中

"code-runner.executorMap": {
        "python": "source $workspaceRoot/venv/bin/activate && python3 $fullFileName",
    },
"code-runner.runInTerminal": true

0
投票

在运行脚本之前将工作区目录附加到

PYTHONPATH
对我有用:

  "code-runner.executorMap": {
    "python": "export PYTHONPATH=\"$PYTHONPATH:$workspaceRoot\";python -u $fullFileName",
  }

0
投票

我很晚了,但是我通过这样映射解决了它:

“code-runner.executorMap”:{ “python”:“$pythonPath $fullFileName” }

© www.soinside.com 2019 - 2024. All rights reserved.