在vscode成功配置Python环境
注意:如果您希望在Visual Studio Code中开始使用Python,请参阅教程。本文仅关注设置Python解释器/环境的各个方面。
Python中的“环境”是Python程序运行的上下文。环境由解释器和任意数量的已安装包组成。由于许多程序是专门为某个Python解释器编写的,并且使用了一组库,因此开发人员通常会为各个程序创建和管理环境。
在VS Code中使用Python时,可以使用Python从可用环境中进行选择:选择解释器命令。然后,Python扩展将所选环境用于IntelliSense,自动完成,linting,格式化以及任何其他与语言相关的功能。(但是,环境不用于调试;请参阅选择调试环境。)
使用Python时,所选环境也会自动激活:在终端和Python中运行Python文件:创建终端命令。使用命令pip install matplotlib
安装(或卸载)终端中的软件包,例如在该终端中处于活动状态的任何环境中安装(或卸载)软件包。
注意:默认情况下,Python扩展会查找并使用它在系统路径中找到的第一个Python解释器。如果找不到解释器,则会发出警告。在macOS上,如果您使用的是OS安装的Python解释器,则扩展也会发出警告,因为您通常希望使用直接安装的解释器。在任何一种情况下,您都可以通过在用户设置中进行设置
python.disableInstallationCheck
来禁用这些警告true
。
全局和虚拟环境
默认情况下,您安装的任何Python解释器都在其自己的“全局”环境中运行,该环境并非特定于任何一个程序。例如,如果您只是在新的命令提示符下运行python
(Windows)或python3
(Mac / Linux),那么您将在该解释器的全局环境中运行。因此,您安装或卸载的任何程序包都会影响全局环境以及您在该上下文中运行的所有程序。
虽然在全球环境中工作是一种简单的入门方式,但随着时间的推移,随着时间的推移,您将为不同的项目安装许多不同的软件包。这种混乱使得很难根据已知版本的特定软件包对应用程序进行彻底测试,这正是您在构建服务器或Web服务器上设置的环境。
因此,开发人员通常会为任何给定项目创建虚拟环境。虚拟环境是项目中的子文件夹,其中包含特定解释器的副本。激活虚拟环境时,您安装的任何软件包仅安装在该环境的子文件夹中。然后,当您在该环境中运行Python程序时,您知道它仅针对那些特定的包运行。
提示:conda环境是使用
conda
包管理器设置的虚拟环境。
要创建虚拟环境,请使用以下命令,其中“env”是环境文件夹的名称:
```bash
# Mac/Linux
# You may need to run sudo apt-get install python3-venv first
python3 -m venv env
# Windows
py -3 -m venv env
```
下一节将介绍如何选择环境,包括虚拟环境。有关在项目中使用虚拟环境的示例,请参阅Flask教程。
提示:当您准备将应用程序部署到其他计算机时,可以
requirements.txt
使用该命令创建文件pip freeze > requirements.txt
(pip3
在Mac / Linux上)。需求文件描述了您在虚拟环境中安装的软件包。只有这个文件,您或其他开发人员可以使用pip install -r requirements.txt
(或者再次pip3
在Mac / Linux上)恢复这些包。通过使用需求文件,您无需将虚拟环境本身提交给源代码控制。
选择一个环境
VS Code使您可以轻松选择和激活环境。切换环境可帮助您根据需要使用不同的解释器测试项目的不同部分。
要选择特定的解释器,请从命令选项板(⇧⌘P)调用Python:Select Interpreter命令。
此命令自动查找并显示可用的Python解释器,conda环境和虚拟环境的列表。(请参阅后面部分中扩展名查找环境的位置。)例如,下图显示了几个Anaconda和CPython安装以及一个conda环境:
注意:在Windows上,VS Code可能需要一点时间来检测可用的conda环境。在此过程中,您可能会在环境路径之前看到“(缓存)”。标签表示VS Code目前正在处理该环境的缓存信息。
从列表中选择解释器会相应地配置您的工作区设置,特别是添加一个条目python.pythonPath
以及解释器的路径。但是,此设置不会影响调试。请参阅选择调试环境。
状态栏显示当前的解释器。
状态栏还反映何时未选择解释器。
在任何一种情况下,选择状态栏的此区域都会显示可用解释器的列表。
激活终端中的环境
使用Python之后:选择Interpreter,右键单击文件并选择Python:在终端中运行Python文件时应用该解释器。您还可以使用Python:创建终端来打开激活该环境的终端。(但是,从激活某个Python环境的shell启动VS Code不会在默认终端中自动激活该环境。在VS Code运行后使用Python:Create Terminal命令。)
您对终端内的激活环境所做的任何更改都是持久的。例如,conda install <package>
在启用了conda环境的终端中使用将包永久地安装到该环境中。同样,pip install
在激活虚拟环境的终端中使用会将程序包添加到该环境中。
要避免在使用这些终端命令时激活虚拟环境和conda环境,请将python.terminal.activateEnvironment
设置更改为false
。
选择调试环境
虽然选择不同的环境会更改python.pythonPath
Workspace settings.json
文件中的值,但它不会影响用户 settings.json
文件,默认情况下该用户文件用于调试。您还可以使用文件pythonPath
中的调试器配置指定用于调试的解释器launch.json
。请参阅调试。
扩展名寻找环境的位置
扩展程序会自动在以下位置查找解释程序:
- 标准路径,例如
/usr/local/bin
,/usr/sbin
,/sbin
,c:\\python27
,c:\\python36
,等。 - 虚拟环境直接位于工作空间(项目)文件夹下。
- 位于由
python.venvPath
设置标识的文件夹中的虚拟环境(请参阅常规设置)。该扩展在第一级子文件夹中查找虚拟环境venvPath
。 - pyenv安装的口译员。
- 一个pipenv的工作文件夹的环境。如果找到一个,那么没有其他口译员被搜索或列出,因为pipenv希望管理环境的所有方面。
- 包含Python解释器的Conda环境。VS Code不显示不包含解释器的conda环境。
- 安装在口译
.direnv
文件夹direnv工作区(项目)文件夹下。
如果Visual Studio Code未自动定位,您也可以手动指定解释器。
提示:如果在VS Code运行时创建新的conda环境,请使用“ 重新加载窗口”命令刷新环境列表。
扩展还会加载由设置标识的环境变量定义文件python.envFile
。此设置的默认值为${workspaceFolder}/.env
。
使用PYTHONPATH变量
PYTHONPATH环境变量可以包含在环境变量定义文件中,指定Python应该在哪里查找模块。PYTHONPATH的值可以包含由os.pathsep
(Windows上的分号,Linux / MacOS上的冒号)分隔的多个路径值。忽略无效路径。
在VS Code中,PYTHONPATH会影响调试,linting,IntelliSense,单元测试以及依赖于Python解析模块的任何其他操作。例如,假设您在src
文件夹中有源代码并在文件夹中进行测试tests
。但是,在运行测试时,src
除非您对相对路径进行硬编码,否则它们通常无法访问模块。要解决此问题,请将路径添加src
到PYTHONPATH。
有关更多信息,包括引用ZIP文件,请参阅PYTHONPATH(docs.python.org)。
手动指定解释器
如果VS Code未自动找到您要使用的解释器,则可以在“用户设置” settings.json
文件中手动设置其路径:
-
选择文件 > 首选项 > 设置命令(⌘, )打开你的用户设置。
-
python.pythonPath
使用Python可执行文件的完整路径创建或修改条目:例如:
-
视窗:
"python.pythonPath": "c:/python36/python.exe"
-
的MacOS / Linux的:
"python.pythonPath": "/home/python36/python"
-
-
您还可以使用
python.pythonPath
指向虚拟环境,例如:视窗:
{ "python.pythonPath": "c:/dev/ala/venv/Scripts/python.exe" }
的MacOS / Linux的:
{ "python.pythonPath": "/home/abc/dev/ala/venv/bin/python" }
解释器路径中的环境变量
可以使用语法在路径设置中使用系统环境变量${env:VARIABLE}
。例如:
{
"python.pythonPath": "${env:PYTHON_INSTALL_LOC}"
}
通过使用环境变量,您可以轻松地在路径不同的操作系统之间传输项目。只需确保首先在操作系统上设置环境变量。
环境变量定义文件
环境变量定义文件是一个简单的文本文件,包含形式为的键值对environment_variable=value
,#
用于标记注释。不支持多行值。
默认情况下,Python扩展加载.env
当前工作空间文件夹中指定的文件,由python.envFile
设置的默认值标识(请参阅常规设置)。您可以随时更改python.envFile
设置以使用其他定义文件。
调试配置还包含一个envFile
属性,该属性也默认为.env
当前工作空间中的文件(请参阅调试 - 标准配置和选项)。此属性允许您轻松设置变量以进行调试,以替换默认.env
文件中使用的变量。
例如,在开发Web应用程序时,您可能希望在开发和生产服务器之间轻松切换。您可以为每个URL使用单独的定义文件,而不是直接将不同的URL和其他设置编码到应用程序中。例如:
dev.env文件
# dev.env - development configuration
# API endpoint
MYPROJECT_APIENDPOINT=https://my.domain.com/api/dev/
# Variables for the database
MYPROJECT_DBURL=https://my.domain.com/db/dev
MYPROJECT_DBUSER=devadmin
MYPROJECT_DBPASSWORD=!dfka**213=
prod.env文件
# prod.env - production configuration
# API endpoint
MYPROJECT_APIENDPOINT=https://my.domain.com/api/
# Variables for the database
MYPROJECT_DBURL=https://my.domain.com/db/
MYPROJECT_DBUSER=coreuser
MYPROJECT_DBPASSWORD=kKKfa98*11@
然后,您可以将设置python.envFile
设置为${workspaceFolder}/prod.env
,然后将envFile
调试配置中的属性设置为${workspaceFolder}/dev.env
。
Conda环境
conda环境是使用conda
包管理器管理的Python环境(请参阅conda 入门(conda.io))。Conda非常适合创建具有相互依赖的依赖关系以及二进制包的环境。与作用于项目的虚拟环境不同,conda环境可在任何给定计算机上全局使用。这种可用性使得配置几个不同的conda环境变得容易,然后为任何给定项目选择合适的环境。
如前所述,如果环境包含Python解释器,Visual Studio会自动检测现有的conda环境。
例如,以下命令创建一个没有解释器的conda环境,因此VS Code不会在可用解释器列表中显示它:
conda create --name env-00
相反,以下命令使用Python 3.4解释器和几个库创建一个conda环境。因为环境包含一个解释器(您可以在envs/env-01
此命令创建的Anaconda 文件夹中看到),VS Code将其包含在其列表中:
conda create -n env-01 python=3.4 scipy=0.15.0 astroid babel
再次,在创建新的conda环境后,在VS Code中运行“ 重新加载窗口”命令,使其显示在解释器列表中。
有关conda 命令行的更多信息,请参阅Conda环境(conda.io)。
注意:虽然VS Code的Python扩展目前没有与conda environment.yml文件直接集成,但VS Code本身是一个很棒的YAML编辑器。
下一步
- 编辑代码 - 了解Python的自动完成,IntelliSense,格式化和重构。
- 调试 - 学习本地和远程调试Python。
- 单元测试 - 配置单元测试环境并发现,运行和调试测试。
- 设置参考 - 探索VS Code中与Python相关的所有设置。
VSCode下配置python调试运行环境的方法