使用Visual Studio Code与Python一起使用virtualenv

91

我有一个Python项目,在该项目的文件中,导航/自动补全功能能够完美地工作。我希望指定一个virtualenv,以便在该虚拟环境中的包中也能正常使用导航/自动补全功能。

我尝试在settings.py中进行设置,但导航/自动补全功能无法正常工作。同时,通过设置"python.pythonPath":"~/dev/venvs/proj/bin/python会破坏原有的导航/自动补全功能。

{
    "python.autoComplete.extraPaths": [
        "~/dev/venvs/proj",
        "~/dev/venvs/proj/lib"
     ]
}

像这样的shebang也可以工作,如果你不想去纠结设置:#!bin/python3 - Alex R
在这个视频中,丹·泰勒解释了如何在VSCode中运行virtualenv。 - test30
对于代码的最新版本,我只需点击左下角的Python解释器,然后在中上部出现命令面板,选择“输入Python解释器路径”,然后选择“查找...”,然后在~/your venv path/bin/python中找到python3.8。 - JCQian
11个回答

100

最新的扩展更新后,您只需要按照以下方式指定"python.pythonPath"即可。

"python.autoComplete.extraPaths"的值将在运行时确定,但您仍然可以在其中指定自定义路径。

请记得在必要的更改完成后重新启动Visual Studio Code。

{
    "python.pythonPath": "~/dev/venvs/proj/bin/python"
}

2
就我个人而言,至少对于 pylint,我不得不使用绝对路径。 - Kat
6
你的意思是在工作区设置中吗?有没有办法仅为我的某个子树设置首选项? - yucer
3
你能按项目来做这个吗? - holms
1
唐先生说得对。请仅仅双重检查VS Code的网站: https://code.visualstudio.com/docs/python/environments#_virtual-environments - Ricardo Anjos
5
@holms,是的,您想编辑工作区设置(.vscode/settings.json)。 - Atav32
显示剩余2条评论

94
截至2016年9月(根据GitHub扩展库文档),您可以在Visual Studio Code中执行一个命令,从自动生成的已知解释器列表中选择解释器(包括项目虚拟环境中的解释器)。

如何使用此功能?

  • 命令面板(F1)中选择命令Python:选择工作区解释器 (*)。
  • 选择上述命令后,将显示一个已发现解释器的列表。
  • 从此列表中选择解释器将自动更新settings.json文件

(*) 此命令已更新为Visual Studio Code的最新版本中的Python:选择解释器(感谢@nngeek)。

此外,请注意您选择的解释器将显示在状态栏的左侧,例如,Python 3.6 64位。这是一个按钮,您可以单击它来触发选择解释器功能。

3
很遗憾,它不允许我将新的翻译员添加到列表中...那真的可能吗? - genuinefafa
那是个好主意,@DanielF。我解决了这个问题,只需手动设置指向项目环境的目录即可。$PATH 的想法没有起作用(实际上应该是workon脚本应该做的事情)。这在几周前已经测试过了,不确定新版本是否已经解决了这个问题。 - genuinefafa
4
要找到您的虚拟环境,需要设置python.venvPath - Mahmoud Hanafy
@genuinefaf 使用Miniconda将环境添加到列表中。https://conda.io/docs/_downloads/conda-cheatsheet.pdf - johndpope
2
截至2017年12月,版本为1.18.1时,从命令面板中选择“Python:选择解释器”命令。在命令列表中苦苦寻找“python工作区”的过程中挣扎了一段时间... - nngeek
显示剩余6条评论

38

如果您已经安装了最新版的Visual Studio Code以及官方Python扩展程序,那么非常简单:

Shift + Command + P

输入: Python: 选择解释器

选择您的虚拟环境。

官方网站


14
很遗憾,这个命令无法列出本地虚拟环境。 - Antonin
@Antonin 我在最新版本的VSCode上测试过,它可以正常工作。你是在Mac还是其他系统上,你遇到了什么错误? - DingLi
1
确实在Mac上,谢谢@DingLi,在设置了下面的内容后它确实可以运行: "python.venvFolders": [ "${rootPath}", "envs", ".pyenv", ".direnv" ], - Antonin
1
@Antonin,关于虚拟环境的问题,请参考ssword的回答。 - carton.swing
3
我希望你和其他人都停止使用“相当简单”的说法。在2019.6版的macOS中,虚拟环境未被列出,只列出了解释器。这是一个关于virtualenv的问题,不仅仅是Python解释器的问题。@ssword 给出了正确答案。或者至少我希望它能带来其余基于virtualenv的配置,这不仅仅是要使用Python可执行文件。 - JL Peyret
显示剩余3条评论

35

借助Visual Studio Code的最新Python扩展程序,有一个venvPath设置:

// Path to folder with a list of Virtual Environments (e.g. ~/.pyenv, ~/Envs, ~/.virtualenvs).
  "python.venvPath": "",

在Mac OS X上,前往 CodePreferencesSettings,并向下滚动到Python Configuration

查找"python.venvPath: "",,并单击左侧的铅笔以打开您的用户设置。最后,添加存储虚拟环境的路径。

如果您正在使用virtuanenvwrapper,或者您已将所有虚拟环境设置放在一个文件夹中,则这将是适合您的文件夹。

配置了"python.venvPath"之后,重新启动Visual Studio Code。然后打开命令面板,并查找“Python:选择解释器”。此时,您应该看到与刚刚添加的虚拟环境相关联的解释器。


13
另一种方法是通过终端打开Visual Studio Code,并设置虚拟环境,需要执行 F1 命令 Python: Select Interpreter 并选择所需的虚拟环境。

virtualenv


8
对我来说,这似乎不起作用。我必须要有设置文件。我是否漏了什么? - McKay
1
我成功地使用了这种方法,但不得不执行代码-a。 - YoFlynn
1
这让我找到了正确的Python解释器,但它没有找到我的venv的其余部分。将我的venv目录名称“ve”添加到python.venvFolders中即可解决问题。 - user1055568
1
我的上一个评论是错误的。我遇到了其他问题,把它们误认为找不到 venv。 - user1055568

7

我将虚拟环境Python可执行文件的绝对路径以及其中的包放置在一起。然后,我重新启动了Visual Studio Code。

我想尝试使用${workspaceRoot}来避免硬编码绝对路径。

{
    "editor.rulers": [80,100],
    "python.pythonPath": "/home/jesvin/dev/ala/venv/bin/python",
    "python.autoComplete.extraPaths": [
        "/home/jesvin/dev/ala/venv/lib/python2.7",
        "/home/jesvin/dev/ala/venv/lib/python2.7/site-packages"
     ]
}

2
我已经在https://github.com/DonJayamanne/pythonVSCode/issues/148上提出了一个问题。 - Jesvin Jose

4

我能够使用其他人在此页面上一直在询问的工作区设置。

在首选项中,按下⌘+P,在搜索栏中搜索python.pythonPath

你应该会看到类似以下的内容:

// Path to Python, you can use a custom version of Python by modifying this setting to include the full path.
"python.pythonPath": "python"

然后在窗口右侧点击工作区设置选项卡。这样设置仅适用于您所在的工作区。

然后,在“python.pythonPath”旁边单击铅笔图标。这应该会将设置复制到工作区设置中。

将值更改为类似以下内容:

"python.pythonPath": "${workspaceFolder}/venv"

2

a) 修改Visual Studio Code默认虚拟环境路径设置。它被称为“python.venvPath”。您可以通过进入code->settings并向下滚动查找Python设置来完成此操作。

b) 重启VS Code

c) 现在,如果您按Shift + Command + P并键入Python:Select Interpreter,您应该会看到您的虚拟环境列表。


1
在 Mac OS X 上使用 Visual Studio Code 版本 1.34.0 (1.34.0),我需要执行以下步骤才能使 Visual Studio Code 识别虚拟环境:
我的虚拟环境所在位置(命名为 ml_venv):
/Users/auser/.pyvenv/ml_venv

auser@HOST:~/.pyvenv$ tree -d -L 2
.
└── ml_venv
    ├── bin
    ├── include
    └── lib

我在Settings.json中添加了以下条目:"python.venvPath": "/Users/auser/.pyvenv" 我重新启动了IDE,现在我可以看到来自我的虚拟环境的解释器:

Enter image description here


使用绝对路径很重要。这对我有用。谢谢。 - Alexander Suraphel

1

截至2018.03,似乎在code-insider中。引入了一个名为python.venvFolders的指令:

  "python.venvFolders": [
    "envs",
    ".pyenv",
    ".direnv"
  ],

您只需要添加您的虚拟环境文件夹名称即可。


什么是“code-insider”?不是Code Insight吗? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接