在Ubuntu中将Virtualenv与Python和Visual Studio Code一起使用


86

我有一个Python专案,而导航/自动完成功能在专案中的档案中完美运作。我想指定一个virtualenv,以便导航/自动完成功能可以在该virtualenv中使用包。

我在settings.py中尝试了此操作,但导航/自动完成功能不起作用。也可以通过设置"python.pythonPath":"~/dev/venvs/proj/bin/python杀死原始导航/自动完成功能。

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

如果您不想弄乱设置,像这样的shebang也可以使用:#!bin / python3
Alex R

youtu.be/6YLMWU-5H9o?t=550这里Dan Taylor解释了如何在vscode中运行virtualenv
test30

对于最新版本的Code,我只需单击左下角的python解释器,然后在顶部中间出现命令面板,选择Enter to Python解释器的路径,然后选择Find ...,然后在〜/您的venv路径中查找/ bin / python,我有python3.8
JCQian

Answers:


96

使用扩展的最新更新,您只需指定"python.pythonPath"以下内容即可。的值"python.autoComplete.extraPaths"将在运行时确定,但是您仍然可以在其中自由指定自定义路径。

请记住完成必要的更改后,请重新启动VS Code。

{
    "editor.rulers": [80,100],
    "python.pythonPath":"~/dev/venvs/proj/bin/python"
}

2
FWIW我必须至少对pylint使用绝对路径
Kat Kat

6
您是指工作空间设置吗?有什么方法可以只为我的工作空间的子树设置首选项吗?
yucer '17

3
每个项目都能做到吗?
霍尔姆斯

1
上面的唐是对的。请只是仔细检查VS代码的Web站点:code.visualstudio.com/docs/python/...
里卡多安霍斯

5
@holms yup,您要编辑工作区设置(.vscode/settings.json
Atav32 '18

91

从2016年9月开始(根据扩展的Github回购文档),您可以从vscode中执行一条命令,该命令可让您从自动生成的已知解释器列表(包括项目的虚拟环境中的解释器)中选择解释器。

如何使用此功能?

  • Python: Select Workspace Interpreter命令面板(F1)中选择命令(* )。

  • 选择上述命令后,将在quick pick列表中显示发现的口译员的列表。

  • 从此列表中选择一个解释器将自动更新settings.json文件

(*)此命令已更新Python: Select Interpreter最新版本的VSC(感谢@nngeek)。
另外,请注意,您选择的解释器将显示在状态栏的左侧,例如Python 3.6 64位。您可以单击此按钮来触发“选择解释器”功能。


3
可悲的是,它不允许我在列表中添加新的解释器...甚至可能吗?
Genuinefafa

@genuinefafa我对代码不了解很多,但是在我链接的回购文档中,它指出在标准路径(/ usr / local / bin,/ usr / sbin,/ sbin),虚拟环境当前的项目和Conda的环境。也许您可以将您的口译员添加到该位置之一,以便它可以自动进行接听。但是我只是在猜测。
Daniel F.

@DanielF是个好主意。我解决了,但是手动设置了指向项目环境的目录。这个$PATH想法行不通(实际上是workon脚本应该做什么)。几周前已经对此进行了测试,不确定是否可以在新版本中解决它。
真正的fafa '17

4
要找到您的virtualenv,python.venvPath需要进行设置。
Mahmoud Hanafy '17

2
截至2017年12月,代码为1.18.1,该命令Python: Select Interpreter来自命令选项板。奋斗了一段时间才能python workspace从命令列表中搜索...
nngeek

34

如果您已经安装了VSCode的Official Python扩展,则使用最新的VSCode非常简单

Shift+ Command+P

类型:Python:选择解释器

选择您的虚拟环境。

官方网站


13
不幸的是,该命令无法列出本地虚拟环境。
Antonin

@Antonin我在最新版本的vscode上进行了测试,它可以正常工作。您是在Mac还是其他系统中,这是什么错误?
鼎力

1
的确,在Mac上,谢谢@DingLi,它在完成以下设置后确实起作用了:"python.venvFolders": [ "${rootPath}", "envs", ".pyenv", ".direnv" ],
Antonin

1
@Antonin虚拟环境,请参见剑的答案
carton.swing

2
是的,我真的希望您和其他所有人不再说“很简单”。未列出虚拟环境,仅列出了2019.6 macOS版本的解释器。这是说virtualenv的问题,而不仅仅是python解释器。@ssword有正确的答案。或者至少我希望它将带来其余基于virtualenv的配置,而不仅仅是要使用的python可执行文件。
JL Peyret

34

通过适用于Visual Studio代码的最新Python扩展,可以使用venvPath设置:

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

在Mac OS X上,转到并向下Code > Preferences > Settings滚动至Python Configuration

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

如果您正在使用virtuanenvwrapper,或者将所有虚拟环境设置都放在一个文件夹中,那么这将是您的理想之选。

配置完成后"python.venvPath",重新启动VSC。然后打开命令面板,然后查找“ Python:Select Interpreter”。此时,您应该看到与刚刚添加的虚拟环境关联的解释器。


13

另一种方法是从设置了virtualenv的终端打开VSC,并需要执行F1 Python: Select Interpreter和选择所需的virtualENV

虚拟环境


8
这似乎不适用于我。我必须有设置文件。有什么我想念的吗?
麦凯

1
我成功使用了此方法,但必须执行代码-a。
YoFlynn

1
这给了我正确的python解释器,但没有找到我的venv的其余部分。将我的venv目录名称“ ve”添加到python.venvFolders修复了它。
user1055568

1
我之前的评论是错误的。我遇到了其他问题,因为我找不到venv而误以为。
user1055568 '18

7

暂定答案。我将虚拟环境python可执行文件的绝对路径也包含了软件包。然后,我重新启动了VS代码。

我正在尝试获取$ {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"
     ]
}


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代码默认的虚拟环境路径设置。它称为“ python.venvPath”。您可以通过进入“代码”->“设置”并向下滚动以获取python设置来执行此操作。

b)重新启动VS代码

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


1

似乎在代码内幕中(截至2018.03),引入了名为python.venvFolders的指令:

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

您所需要的只是添加您的virtualenv文件夹名称。


1

在使用代码版本1.34.0(1.34.0)的Mac OSX上,我必须执行以下操作才能获得VSCode来识别虚拟环境:

我的虚拟环境的位置(名为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,现在我可以在虚拟环境中看到解释器了: 在此处输入图片说明


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

0

YouTube获得此功能设置Python VS ... Venv

好的,视频确实对我没有多大帮助,但是...(发布视频的人)下的第一个评论很有道理,而且是纯金。

基本上,打开VS的内置终端。然后source <your path>/activate.sh,用通常的方法从命令行选择venv。我有一个预定义的bash函数来查找和启动正确的脚本文件,并且效果很好。

直接引用YT的评论(全部归功于aneuris ap):

(您实际上只需要步骤5-7)

1- Open your command line/terminal and type pip virtualenv.
2. Create a folder in which the virtualenv will be placed .
3. cd to the script folder in the virtualenv and run activate.bat (CMD).
4. deactivate to turn of the virtualenv (CMD).
5. open the project in VS Code  and use its built-in terminal to cd to the script folder in you virtualenv.
6. type source activates (in vs code I use the git terminal).
7. deactivate to turn off the virtualenv.

您可能会注意到,他在谈论activate.bat。因此,如果它在Mac上对我适用,并且在Windows上也适用,那么它很健壮和可移植。😀

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.