如何在 Visual Studio 中创建和管理 Python 环境

标签: python

如何在 Visual Studio 中创建和管理 Python 环境

  • 2019/08/06
  • Python 环境 是在其中运行 Python 代码的上下文,它包括全局、虚拟和 Conda 环境。 环境由解释器、库(通常是 Python 标准库)以及一组已安装的包组成。 这些组成部分共同确定哪些语言结构和语法有效、哪些操作系统功能可访问以及哪些包可使用。

    在 Windows 上的 Visual Studio 中,可使用“Python 环境”窗口(如本文中所述)管理这些环境并选择其中一个作为新项目的默认环境 。 环境的其他方面可在以下文章中找到:

    • 对于任何给定的项目,可选择特定环境而不使用默认环境。

    • 有关为 Python 项目创建和使用虚拟环境的详细信息,请参阅使用虚拟环境

    • 如果想在环境中安装包,请参阅“包”选项卡引用

    • 若要安装另一个 Python 解释器,请参阅安装 Python 解释器。 通常,如果下载并运行传统 Python 分发版的安装程序,Visual Studio 会检测新的安装和环境是否出现在“Python 环境”窗口中并且是否可以为项目选择它们 。

    如果不熟悉 Visual Studio 中的 Python,以下文章还提供了一般背景知识:

     备注

    可以使用“文件” > “打开” > “文件夹”命令管理作为文件夹打开的 Python 代码环境 。 使用 Python 工具栏,可以在所有检测到的环境之间切换,还可以添加新环境。 环境信息存储在 Workspace.vs 文件夹中的 PythonSettings.json 文件中。

    “Python 环境”窗口

    Visual Studio 了解的环境显示在“Python 环境” 窗口中。 要打开该窗口,请使用以下某个方法:

    • 选择“视图” > “其他窗口” > “Python 环境”菜单命令 。

    • 在解决方案资源管理器中,右键单击某项目的“Python 环境”节点,选择“查看所有 Python 环境” :

      解决方案资源管理器中的“查看所有环境”命令

    在任一情况下,“Python 环境”窗口将出现在解决方案资源管理器旁边 :

    “Python 环境”窗口

    Visual Studio 使用注册表查找已安装的全局环境(遵循 PEP 514 ),以及查找虚拟环境和 conda 环境(请参阅环境类型)。 如果在列表中看不到预期的环境,请参阅手动标识现有环境

    选择列表中的环境时,Visual Studio 将在“概述”选项卡上显示该环境的各种属性和命令 。例如,可在上图中看到解释器的位置是 C:\Python36-32 。 “概述“选项卡底部的四个命令在解释器运行时分别打开一个命令提示符 。 有关详细信息,请参阅“Python 环境”窗口选项卡引用 - 概述

    使用环境列表下方的下拉列表可切换到不同的选项卡,例如“包”和“IntelliSense” 。 “Python 环境”窗口选项卡引用中也介绍了这些选项卡。

    选择环境不会改变其与任何项目的关系。 Visual Studio 可将列表中以粗体显示的默认环境用于任意新项目。 要在新项目中使用不同的环境,请使用“将此作为新项目的默认环境”命令 。 在项目的上下文中,可以始终选择特定环境。 有关详细信息,请参阅选择项目环境

    列出的每个环境右侧的控件可为此环境打开“交互”窗口 。 (在 Visual Studio 2017 15.5 及更早版本中,可能还会显示另一个控件,用于刷新此环境的 IntelliSense 数据库。 有关数据库的详细信息,请参阅“环境”窗口选项卡引用。)

     提示

    如果将“Python 环境” 窗口展开到足够宽,可以获得更加完整的环境视图,从而可使操作更加便捷。

    “Python 环境”窗口扩展后的视图

     备注

    尽管 Visual Studio 遵循系统-站点-包选项,但它没有提供从 Visual Studio 中更改它的方法。

    如果未出现环境该怎么办?

    如果未出现任何环境,这意味着 Visual Studio 在标准位置中未能检测到任何 Python 安装。 例如,你可能已安装 Visual Studio 2017 或更高版本但清除了 Python 工作负载的安装程序选项中的所有解释器选项。 同样地,你可能已安装 Visual Studio 2015 或更早版本,但未手动安装解释器(请参阅安装 Python 解释器)。

    如果知道计算机上有一个 Python 解释器,但 Visual Studio(任何版本)未检测到它,则使用“+ 自定义”命令来手动指定其位置 。 请参阅下一节手动标识现有环境

     提示

    Visual Studio 可检测现有解释器的更新,如使用 python.org 的安装程序将 Python 2.7.11 升级到 2.7.14。在安装过程中,较旧的环境从“Python 环境” 列表消失后,更新才会显示在其位置上。

    但是,如果你使用文件系统手动移动解释器及其环境,则 Visual Studio 不会知道新位置。 有关详细信息,请参阅移动解释器

    环境类型

    Visual Studio 可使用全局、虚拟和 conda 环境。

    全局环境

    每个 Python 安装(例如,Python 2.7、Python 3.6、Python 3.7 和 Anaconda 4.4.0 等,请参阅安装 Python 解释器)都会维护自己的全局环境 。 每个环境都包括特定的 Python 解释器、其标准库和一组预安装包以及在**该环境时安装的任何其他包。 将包安装到全局环境使其适用于使用此环境的所有项目。 如果环境位于文件系统的保护区域内(例如,c:\program files 内),则安装包时需要管理员权限 。

    全局环境适用于计算机上的所有项目。 在 Visual Studio 中,选择一个全局环境作为默认环境,此环境可用于所有项目,除非为项目专门选择了其他环境。 有关详细信息,请参阅选择项目环境

    虚拟环境

    虽然使用全局环境是一种简单的入门方式,但随着时间的推移,该环境中将充斥着你为不同项目安装的许多不同的包。 这使得很难根据已知版本的一组特定包对应用程序进行彻底测试,而这正是你在生成服务器或 Web 服务器上设置的环境。 当两个项目需要不兼容的包或相同包的不同版本时,也会发生冲突。

    因此,开发人员通常会为项目创建虚拟环境 。 虚拟环境是项目中的子文件夹,其中包含特定解释器的副本。 **虚拟环境时,任何安装的包仅安装在环境的子文件夹中。 然后,当你在该环境中运行 Python 程序时,便知道它仅针对那些特定的包运行。

    Visual Studio 为创建项目的虚拟环境提供直接支持。 例如,如果打开包含 requirements.txt 的项目,或者通过包含该文件的模板创建项目,Visual Studio 会提示你自动创建虚拟环境并安装这些依赖项 。

    在打开的项目中,可随时创建新的虚拟环境。 在“解决方案资源管理器”中,展开项目节点,右键单击“Python 环境”并选择“添加虚拟环境” 。 有关详细信息,请参阅创建虚拟环境

    Visual Studio 还提供可从虚拟环境生成 requirements.txt 文件的命令,简化了在其他计算机上重新创建环境的过程 。 有关详细信息,请参阅使用虚拟环境

    Conda 环境

    Conda 环境是使用 conda 工具或通过 Visual Studio 2017 版本 15.7 及更高版本中的集成式 Conda 管理创建的环境。 (需要 Anaconda 或 Miniconda;它们可通过 Visual Studio 安装程序获得,请参阅安装。)

    1. 在“Python 环境”窗口中(或从 Python 工具栏上)选择“+ 添加环境” ,这将打开“添加环境” 对话框。 在该对话框中,选择“Conda 环境” 选项卡:

      “添加环境”对话框中的“Conda 环境”选项卡

    2. 配置以下字段:

      字段 说明
      项目 要在其中创建环境的项目(如果在同一 Visual Studio 解决方案中有多个项目)。
      name Conda 环境的名称。
      添加包 如果你有描述依赖项的 environment.yml 文件,请选择“环境文件” ,或选择“一个或多个 Anaconda 包名称” 并在下面的字段中列出至少一个 Python 包或 Python 版本。 包列表可指示 conda 创建 Python 环境。 若要安装最新版本的 Python,请使用 python;若要安装特定版本,请使用 python=,major>.<minor>,如 python=3.7 所述。 还可以使用包按钮从一系列菜单中选择 Python 版本和常见包。
      设置为当前环境 创建环境后,在所选项目中**新环境。
      设置为新项目的默认环境 自动设置和** Visual Studio 中创建的任何新项目中的 conda 环境。 此选项与使用“Python 环境”窗口中的“将此作为新项目的默认环境”相同 。
      在“Python 环境”窗口中查看 指定是否在创建环境后显示“Python 环境” 窗口。

       重要

      在创建 conda 环境时,请务必使用 environments.yml 或包列表指定至少一个 Python 版本或 Python 包,确保环境包含 Python 运行时。 否则,Visual Studio 将忽略环境:环境不显示在“Python 环境” 窗口中的任何位置,不能设置为一个项目的当前环境,并且不可用作全局环境。

      如果碰巧创建没有指定 Python 版本的 conda 环境,请使用 conda info 命令查看 conda 环境文件夹的位置,然后从该位置手动删除该环境的子文件夹。

    3. 选择“创建” ,并在“输出” 窗口中观察进度。 创建完成后,输出将附带几项 CLI 说明:

      成功创建 Conda 环境

    4. 为项目选择环境中所述,在 Visual Studio 中,可像**任何其他环境一样,为项目** Conda 环境。

    5. 若要在环境中安装其他包,请使用“包”选项卡

     备注

    为获得 Conda 环境的最佳使用结果,请使用 Conda 4.4.8 或更高版本(Conda 版本与 Anaconda 版本不同)。 可以通过 Visual Studio 安装程序安装合适版本的 Miniconda (Visual Studio 2019) 和 Anaconda (Visual Studio 2017)。

    若要查看 Conda 版本、Conda 环境的存储位置以及其他信息,请在 Anaconda 命令提示符(即路径中包含 Anaconda 的命令提示符)运行 conda info

    cli复制

    conda info
    

    conda 环境文件夹如下所示:

    output复制

           envs directories : C:\Users\user\.conda\envs
                              c:\anaconda3\envs
                              C:\Users\user\AppData\Local\conda\conda\envs
    

    由于未使用项目存储 Conda 环境,这些环境与全局环境的功能类似。 例如,将新包安装到 Conda 环境,从而使该包适用于使用此环境的所有项目。

    对于 Visual Studio 2017 版本 15.6 及更早版本,可以根据手动标识现有环境中所述,通过手动指向 Conda 环境进行使用。

    根据下一节所述,Visual Studio 2017 版本 15.7 及更高版本自动检测 Conda 环境,并在“Python 环境”窗口中显示这些环境 。

    手动标识现有环境

    使用以下步骤来标识安装在非标准位置的环境(包括 Visual Studio 2017 版本 15.6 及更早版本中的 Conda 环境):

    1. 在“Python 环境”窗口中(或从 Python 工具栏上)选择“+ 添加环境” ,这将打开“添加环境” 对话框。 在该对话框中,选择“现有环境” 选项卡:

      “添加环境”对话框中的“现有环境”选项卡

    2. 选择“环境” 下拉列表,然后选择“自定义” :

      “添加环境”对话框中的“自定义环境”选项

    3. 在对话框中提供的字段中,输入或浏览(使用 ... )到“前缀路径”下的解释器路径 ,它将填充大多数其他字段。 在检查这些值并根据需要修改后,选择“添加” 。

      用于在“添加环境”对话框中指定自定义环境选项详细信息的字段

    4. 可在“Python 环境”窗口中随时检查和修改环境的详细信息 。 在该窗口中,选择环境,然后选择“配置” 选项卡。进行更改后,选择 “应用”命令。 还可以使用“删除” 命令(对自动检测的环境不可用)删除环境。 有关更多信息,请参阅配置选项卡

    修复或删除无效环境

    如果 Visual Studio 找到环境的注册表项,但解释器的路径无效,则“Python 环境”窗口将显示标有删除线字体的名称 :

    “Python 环境”窗口显示无效环境

    若要更正希望保留的环境,首先请尝试使用其安装程序的“修复”进程 。 例如,标准 Python 3.x 的安装程序包含该选项。

    若要更正没有修复选项的环境,或删除无效环境,请使用以下步骤直接修改注册表。 更改注册表后,Visual Studio 会自动更新“Python 环境”窗口 。

    1. 运行 Regedit.exe 。

    2. 导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Python 。 对于 IronPython,则请查找 IronPython 。

    3. 展开与分发匹配的节点,例如 CPython 为 PythonCore 或 Anaconda 为 ContinuumAnalytics 。 对于 IronPython,请展开版本号节点。

    4. 检查 InstallPath 节点下的值 :

      典型 CPython 安装的注册表项

      • 如果计算机上仍存在该环境,请将 ExecutablePath 的值更改为正确位置 。 还根据需要更正“(默认)”值和 WindowedExecutablePath 值 。
      • 如果计算机上不再存在该环境,且想将其从“Python 环境”窗口中删除,请删除 InstallPath 的父节点,例如上图中的 3.6 。

    请参阅

版权声明:本文为poloyzhang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/poloyzhang/article/details/103279620

智能推荐

Linux搭建LAMP,源码安装

Linux搭建LAMP,源码安装 LAMP是Linux Apache MySQL PHP的简写,即把Apache、MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的脚本语言,通常是网站。Apache 是最常用的Web服务软件,而MySQL是比较小型的数据库软件,这两个软件以及PHP都可以安装到Windows的机器上。 我们可以把Apache+PHP安装在一台机器上,再把MySQ...

模拟按键 —— 鼠标

背景 之前写自动化脚本的时候总是遇到一些很尴尬的问题: 跑脚本时模拟鼠标按键时,光标是真实的跑到了那个位置的,也就是说跑脚本的时候会很影响电脑的正常使用,导致不得不开一个虚拟机专门跑。 另外因为光标只有一个所以很难实现多线程去同时操作多个窗口,当线程1 模拟鼠标但还没有结束时,线程2 已经开始执行模拟操作,这就导致了线程1 的模拟操作被终止了,被迫之下只能开多个虚拟机(但实在太占用性能🙄) 解决...

Hibernate学习总结(一)

一、Hibernate简介 一个持久层的ORM框架。ORM:Object Relational Mapping(对象关系映射)。指的是将一个Java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可以操作数据库中的表。 二、Hibernate入门 1、创建一个项目,引入jar包 hibernate用到的jar包 2、创建表 3、创建实体类 4、创建映射(*****) 映射需要通过XML...

Linux系统NFS

文章目录 1. nfs简介 1.1 nfs特点 1.2 使用nfs的好处 1.3 nfs的体系组成 1.4 nfs的应用场景 2. nfs工作机制 2.1 RPC 2.2 NIS 2.3 nfs工作机制 3. exports文件的格式 4. nfs管理 5. 作业 5.1手动搭建一个nfs服务器 5.1.1开放/nfs/shared目录,供所有用户查阅资料 5.1.2 开放/nfs/upload目...

关于java中String,StringBuffer,StringBuilder的区别以及StringBuffer,StringBuilder的安全性问题

这里的结果就是正确的然后我们来看他的append方法 它在前边加了一个synchronized来修饰,相当于同时只能有一个线程来访问他,这样就不会产生上边的问题但同时他的效率也就比StringBuilder低,...

猜你喜欢

Django连接现有mysql数据库

1、打开cmd后cd到项目位置 2、建立项目 django-admin startproject test2 3、编辑项目中的配置文件, mysite/settings.py ,告诉Django你的数据库连接参数和数据库名。具体的说,要提供 DATABASE_NAME , DATABASE_ENGINE , DATAB...

ShareSDK新浪微博登录时报错error:redirect_uri_mismatch

今天用 ShareSDK 做第三方登录的时候碰到个问题,明明在微博平台的应用审核已经通过了,但是调用登录接口的时候一直报错,错误如下: 出现这个错误是因为在微博开放平台上没有设置回调地址,或者设置的回调地址与本地XML中的地址不一致。 在sharesdk.xml文件当中对于微博的设置: 其中RedirectUrl为设置的回调地址,这里的地址必须要与微博开发平台设置的地址相同,否则就会出现上面的错误...

python解析网络封包方法

2019独角兽企业重金招聘Python工程师标准>>> 在使用Python解析网络数据包时,使用网络字节序解析,参见下表。 C语言的数据类型和Python的数据类型对照表请参见下表。 接下来对封包与解包进行举例说明。 version type id content unsigned short unsigned short unsigned int unsigned int 封包...

python3:时间方法,异常处理,系统文件相关模块(os)

文章目录 时间方法 time模块 时间表示方法: time模块的方法 datetime模块 异常处理 触发异常 创建mydiv.py脚本,要求如下: 创建myerror.py脚本,要求如下: os模块 实现ls -R(os.walk) os.path pickle模块 记账脚本 时间方法 time模块 时间表示方法: 时间戳:自1970-1-1 0:00:00到某一时间点之间的秒数 UTC时间:世...

负载均衡群集——LVS+DR模型

一、实验组成 调度器 192.168.100:41 web1 192.168.100:42 web2 192.168.100.43 NFS共享服务器 192.168.100.44 二、实验拓扑 三、实验配置 3.1在调度器配置:192.168.100.41 配置虚拟IP地址(VIP) 调整/proc响应参数 对于 DR 群集模式来说,由于 LVS 负载调度器和各节点需要共用 VIP 地址,应该关闭...