2020年10月8日

如何管理Python环境:全局vs虚拟

Python的全系统安装(也称为全局安装)是安装Python最流行的方式。实际上,您使用的操作系统可能附带了预安装的全局Python安装,因为许多操作系统在各种例程中使用了Python。如果你从Python.org或商业供应商如Anaconda(甚至我们自己的)下载Python188appcob ),默认情况下将在系统范围内安装。

如果您只使用最初安装的Python,那么本文的其余部分可能不适用于您。但我们大多数人都不得不在某个时候升级到较新的Python版本。当然,因为我们是忙碌的开发人员,所以我们先安装,在出现问题后再问问题:

  • 为什么我需要修复' /usr/bin/python '符号链接之前,我甚至可以做安装?
  • 为什么在安装了新版本的Python之后,我仍然使用旧版本的Python ?
  • 为什么我在升级之前使用的软件包现在“没有找到”?

在其他情况下,问题不是Python本身,而是您用于构建应用程序的第三方包。大多数开发人员使用pip安装这些包,pip从Python包索引(PyPI)下载它们,并在本地安装到您的/site-packages目录中。不幸的是,Python没有区分/site-packages目录中相同包的不同版本,这导致当您有两个项目需要相同包的不同版本时出现问题。

这些问题意味着,即使在30年后,仍然很容易搞砸Python安装,尽管(在某些情况下正是因为)创建了多个解决方案来帮助您。

Python环境恶化

Python环境-由xkcd.com

当然,全球环境破坏并不是Python独有的(它也很流行)许多其他开放源码语言),但是当您正在处理的包突然“找不到”时,总是很痛苦的,这会让您寻找目录并手动更新符号链接和PATH环境变量。

虚拟Python环境——更好的解决方案?

避免全局Python环境破坏的一种方法是首先避免全局安装。这就是虚拟环境发挥作用的地方。它们本质上就是目录树,包含:

  • Python的一个版本
  • 项目需要的所有第三方包
  • 你的项目代码

但虚拟环境的主要好处是,它们将您的每个项目与计算机上的任何其他Python安装隔离开来,允许多个Python版本共存,而不会相互影响。所以现在你可以将那个Python 2项目升级到Python 3,或者测试你构建的Python 3.6应用程序是否能在Python 3.8上工作——所有这些都在同一个系统上。

虽然虚拟环境解决了与Python全局安装相关的许多问题,但它们也引入了一些其他问题:


  • 不同版本的Python和不同的操作系统需要不同的工具来创建和使用虚拟环境,从pyenv到pywin、virtualenv到venv等等
  • 没有中央控制台(尽管virtualenvwrapper确实有帮助),所以创建的环境越多,跟踪和管理多个虚拟环境就越困难
  • 虚拟环境是特定于终端的,在每个终端的基础上激活和停用

PEP 582已经有人提议更新Python核心以解决许多这些问题,但它目前仍只是一个提议。

ActiveState虚拟Python环境

在ActiveState,我们一直在手工制作我们的ActivePython社区版(CE)发行版,它包含了一个Python版本以及数百个流行的第三方包,使用了近20年。但我们的上市时间越来越长,所以我们创造了188bet金宝搏备用以帮助我们自动化创建ActivePython CE,以及其他语言发行版。

不幸的是,ActivePython CE仍然是问题的一部分,因为它提供了默认创建另一个全局安装的安装程序。

因此,我们一直致力于将虚拟环境功能构建到我们的State Tool中,State Tool是ActiveState平台的命令行界面。188bet金宝搏备用国家工具提供:

  • 用一个命令将ActivePython安装到虚拟环境中的本机方法
  • 一个比virtualenvwrapper更好的管理多个项目的方法是提供列表、在之间切换、更新、恢复、分叉,甚至使用一个适当的命令与您的团队成员共享它们的能力
  • 跨平台支持,包括Windows, Mac和Linux
  • 跨语言支持,包括Perl和Python(即将推出更多语言)

那些习惯于使用虚拟环境的python爱好者将会在State Tool的实现中发现很多相似之处。那些之前没有接触过虚拟环境的人一开始可能会有点迷失,但我们正在制作一个快速入门教程,应该有助于您轻松养成这个习惯。

您可以今天就安装State Tool,然后使用它自动将ActivePython 3.6的副本安装到虚拟环境中。

对于Windows用户,在Powershell中运行以下命令安装状态工具:

IEX(新对象Net.WebClient) .downloadString(“https://platform.activestate.com/dl/cli/install.ps1”)

现在在一个cmd提示符下输入以下命令,以便自动创建一个虚拟环境,然后下载并安装ActivePython 3.6到其中:

状态激活ActiveState / activepython - 3.6

对于Mac和Linux用户,执行如下命令安装状态工具:

Sh <(curl -q https://platform.activestate.com/dl/cli/install.sh)

现在运行以下命令自动创建一个虚拟环境,然后下载并安装ActivePython 3.6到其中:

状态激活ActiveState / activepython - 3.6

要了解关于使用状态工具的更多信息,参考文档.别忘了让我们知道你在我们社区论坛

与Python环境相关的章节在本地最大播客上ActiveState团队负责人Shaun L与主持人Max进行了简短但富有洞察力的讨论。

推荐阅读

通用包经理吗?满足状态工具

如何从源代码构建运行时环境

管理Python环境-你需要知道的一切

Dana起重机

Dana起重机

经验丰富的产品营销人员和产品经理,在计算机软件行业有成功的经验。精通产品生命周期管理、实用营销方法、企业软件、软件即服务(SaaS)、敏捷方法、客户关系管理(CRM)和市场进入策略。