VS Code Code Runner 不适用于 virtualenvs

Posted

技术标签:

【中文标题】VS Code Code Runner 不适用于 virtualenvs【英文标题】:VS Code Code Runner doesn't work with virtualenvs 【发布时间】:2018-11-30 16:31:15 【问题描述】:

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

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

我得到的确切错误是:

ModuleNotFoundError: No module named 'bs4'

【问题讨论】:

我用的是wing ide,不过原理大概是一样的。需要复制相关的环境变量、路径、python路径。否则你不在 virtualenv 中,因为它就是这样。任何 ide 都可能允许您这样做。 您应该激活您的虚拟环境,然后输入“pip install library_name”。现在,当您运行代码时,它应该可以正常工作了。 @jmh 问题不在于我没有在正确的 virtualenv 中安装软件包。我可以在终端中运行我的代码,但不能在 Code Runner 的“输出”中运行,因为不知何故 Code Runner 不会在我设置的 virtualenv 中运行代码。 @KennyOstrom 当我在 VS Code 中更改活动的 virtualenv 时,工作区设置中的以下行会更改:“python.pythonPath”:“C:\\Users\\User\\envs\\沙盒\\脚本\\python.exe”。在这种情况下,“沙盒”是我的活动 virtualenv。 virtualenv 正确激活,但只是 Code Runner 扩展无法识别它。 【参考方案1】:

第一种方法:

首先,我建议这样设置executorMap

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

通过设置此项,每次您在 VS Code 中更改 Python 解释器版本时,code-runner 都会使用相同的版本来执行您的代码。

第二种方法:

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

#! .\venv\scripts\python.exe

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

【讨论】:

【参考方案2】:

在运行脚本之前将工作区目录附加到PYTHONPATH 对我有用:

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

如果你观看this视频,如果你是mac用户,你可以在44.55分钟看到解决方案。

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

将此添加到用户设置:

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

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

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

然后我继续使用 pip install requests 模块,在我的情况下,该模块存在于 venv 中但不是全局存在的,即使它已经存在并且理论上应该可以工作。瞧,它现在可以正常工作了。

我猜想,如果您在 venv 的创建后安装 CodeRunner,它不会在中途运行。

【讨论】:

【参考方案7】:

我也遇到了同样的问题。

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

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

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

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

希望对你有所帮助。

【讨论】:

我刚刚放弃了使用 Code Runner 扩展...现在我只是在终端中运行我的代码。首先我激活 virtualenv,然后输入 code 。在项目目录中打开 VS Code。这似乎是目前对我来说最好的方式。然后我按 CTRL + K + A 运行代码。【参考方案8】:

一种可能的解决方案是在 VS Code 设置中设置 "code-runner.runInTerminal": true,默认情况下为 false。这样做,Code Runner 将在使用 "terminal.integrated.shell.windows" 设置配置的 shell 中运行代码。

之后,使用 Code Runner 运行您的脚本。现在这会打开一个新终端,在执行代码之前,您使用 VS Code 的Python: Select Interpreter 选择的 python 环境将在其中自动激活。 (如果环境没有自动激活,您也可以手动执行此操作,只需确保您在 Code Runner 打开的终端会话中执行此操作即可。)

【讨论】:

以上是关于VS Code Code Runner 不适用于 virtualenvs的主要内容,如果未能解决你的问题,请参考以下文章

VS Code Prettier - Code Formatter Extension 不适用于使用 Typescript 模板的 Create-React-App

VS Code 中的调试不适用于 Typescript Vue 应用程序

Flutter/Dart 自动完成功能适用于 VS Code,但不适用于 Android Studio

使用VS Code插件Code Runner一键运行OpenSees

使用VS Code插件Code Runner一键运行OpenSees

vs code控制台输出乱码