2021年5月14日

更好地管理Python包:扩展Python的ActiveState方法

作为Python开发人员,我们已经厌倦了Python包管理带来的麻烦:

  • 手工管理依赖关系和解决冲突
  • 处理环境再现性和“在我的机器上工作”的问题
  • 维护和更新多个工具和构建环境

我们喜欢pip,也喜欢为解决上面列出的问题而引入的无数其他Python包管理器。只是它们从来都不是为大规模的现代Python开发而设计的。在这篇文章中,我将告诉你我们是如何用ActiveState平台解决这些令人头疼的问题的,但是TL;DR是:188bet金宝搏备用

  • 依赖关系管理变得简单多了-即使是在困难的情况下
  • 没有复杂的安装或安装-构建是从云中的源代码完成的
  • 跨平台的在Linux和Windows上使用相同的工具和命令(很快会在macOS上使用)
  • 漏洞修复-找到并修复漏洞,即使是传递依赖
  • 先进的功能-虚拟环境、版本、回滚、分支等等

在阅读时,您可以通过运行以下命令,使用我们的Python 3.9产品亲自尝试:

在Windows CMD提示符下:

powershell -Command " & $([scriptblock]::Create((New-Object Net.WebClient).DownloadString(' https://platform.activestate.com/dl/cli/install.ps1 ')) -activate-default ActiveState-Labs/Python-3.9Beta "

Linux:

.sh <(curl -q https://platform.activestate.com/dl/cli/install.sh) -activate-default ActiveState-Labs/Python-3.9Beta

然后运行-

国家安装< packagename >

国家进口<让>

为什么使用ActiveS188bet金宝搏备用tate平台来管理Python包?

Python的系统范围安装仍然很普遍。然而,最佳实践正在远离容易发生腐败的全球安装。相反,趋势是虚拟环境隔离Python的每个实例,允许您在本地计算机上运行多个版本而不会发生冲突。这个最佳实践现在是ActiveState平台不可分割的一部分,它为您提供:188bet金宝搏备用

  • Python 3.9自动安装到虚拟环境中的
  • 我们的命令行接口(CLI)国家的工具,它允许您“状态安装”项目所需的所有软件包

来自ActiveState的Python 3.9不是一场革命,而是Python生态系统的一次进化,它提供了许多特性,可以使您作为开发人员的生活不那么令人沮丧,并大大提高效率。例如:

解决依赖关系冲突

有一些Python包管理解决方案可以为您解决依赖关系,确保您的环境只包含可以协同工作的包。然而,除了手动测试不同版本的包以找到一个兼容的解决方案之外,目前还没有解决依赖关系冲突的方法。有时解决方案相当简单,但在其他情况下,开发人员在依赖关系地狱中浪费时间和资源。Acti188bet金宝搏备用veState平台包括一个依赖性求解器,它不仅为您自动地解析依赖性,而且还标记冲突,并且为您提供了解决它们的独特方法。例如:

解决依赖关系冲突

虽然错误消息有点冗长(原因很好:我们很快将支持多语言项目,这将需要根据语言区分冲突),但它仍然很容易理解和解决。简单地按照说明和更改scipy的版本为>=0.19.1(即。,by clicking on the dropdown and selecting a more recent version) would solve this conflict, eliminating dependency hell.

从源代码自动构建Python

从源代码构建Python和第三方包可以提高安全性,因为它可以确保:

  • 您不会意外地将恶意代码插入到包的二进制版本中,这可能会发生包受害
  • 您知道开放源代码中所有组件的起源,这有助于确保开放源代码供应链的安全

但是大多数开发人员更喜欢安装二进制版本的包,因为从源代码构建是一件痛苦的事情,特别是在需要支持多个部署平台的情况下。这就是ActiveState平188bet金宝搏备用台提供以下功能的原因:

  • 一个单独的、基于云的Windows和Linux构建平台
  • 不仅可以自动构建Python代码,还可以构建任何链接的C库

所以不再有任何借口不从源头构建。最重要的是,您不再需要在本地机器上维护构建环境。

Python环境再现性

require .txt或pipfile。锁文件可以帮助您在其他系统上一致地复制您的环境,但它们不能解决所有问题,包括:

  • 部署到不同的操作系统可能会错过操作系统级的依赖关系
  • 让和pipfile。当团队中的不同开发人员根据自己的目的更新他们的开发环境时,锁文件可能会失去同步
  • DevOps通常需要解决多个冲突的代码签入,从而导致CI/CD环境与开发环境不同

所有这些都导致开发人员为了调试问题而浪费时间重新构建环境。Acti188bet金宝搏备用veState平台采用了不同的方法来确保重现性:

  • 为Windows和Linux自动构建Python环境
  • 为Python运行时环境提供一个中心的“真相来源”,开发人员和DevOps都可以利用它来构建自己的开发和CI/CD环境
  • 对环境的更新是集中进行的,并且可以通过一个命令在本地进行更新。

集中管理和部署Python和Perl环境意味着开发团队和DevOps团队保持同步,消除了“在我的机器上工作”的问题。

Python漏洞修复

开发人员花了太多的时间调查和修复开源漏洞,以至于平均解决时间(Mean time to Resolution, MTTR)通常以周为单位度量。显然,每个人都希望能够在几天(如果不是几小时)内解决关键漏洞,但我们目前的工具除了通知您漏洞和可能建议解决方案之外,并没有多大帮助。Acti188bet金宝搏备用veState平台更进一步,为您提供:

  • 通知
  • 升级或降级包到安全版本的建议
  • 向您展示在提交之前对环境的其余部分进行更改的结果
  • 自动重建环境

Python漏洞修复

花更少的时间和精力来解决漏洞,这样您就可以回去编码了。

Python包管理工作更快更智能

188bet金宝搏备用还提供了一些其他功能,可以帮助提高您的生产力,包括:

  • 所有包都是从源代码并行构建的,或者在可能的情况下从缓存中提取的,这加快了环境的创建
  • 将Python自动安装到虚拟环境中,而不需要先前创建虚拟环境
  • 跨平台支持:在Windows和Linux上使用Python的单一工具链,因此您不再需要管理多个工具
  • 自动恢复和恢复环境的以前版本的能力,即使传递依赖项不再公开可用
  • 能够创建可以从父环境继承更改的环境分支。现在您终于可以在同一个地方看到和管理(例如)开发、测试和生产环境:

部门的环境

结论:Python包管理的未来

如果您像大多数Python开发人员一样,您可能会维护多个工具、构建环境和其他解决方案,以解决ActiveState平台目前可以解决的问题。188bet金宝搏备用通过采用ActiveState平188bet金宝搏备用台,您可以:

  • 提高Python环境的安全性
  • 提高开源供应链的透明度
  • 消除依赖地狱
  • 减少“在我的机器上工作”问题

最终,愿意采用ActiveState平台进行Python包管理的开发人员将花费更少的时间在工具上,而更多的188bet金宝搏备用时间专注于他们最擅长的事情:编码。准备好试一试了吗?你可以通过运行以下命令来安装Python 3.9和我们的CLI, State工具:

在Windows CMD提示符下:

powershell -Command " & $([scriptblock]::Create((New-Object Net.WebClient).DownloadString(' https://platform.activestate.com/dl/cli/install.ps1 ')) -activate-default ActiveState-Labs/Python-3.9Beta "

Linux:

.sh <(curl -q https://platform.activestate.com/dl/cli/install.sh) -activate-default ActiveState-Labs/Python-3.9Beta

然后运行-

国家安装< packagename >

国家进口<让>

Dana起重机

Dana起重机

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