Skip to Content
用于 DevOps 的 Python
book

用于 DevOps 的 Python

by Noah Gift, Kennedy Behrman, Alfredo Deza, Grig Gheorghiu
May 2025
Intermediate to advanced
506 pages
6h 56m
Chinese
O'Reilly Media, Inc.
Content preview from 用于 DevOps 的 Python

第 5 章 软件包管理 软件包管理

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

通常 ,小脚本的实用性和重要性都会增加,这就产生了共享和发布其内容的需求。Python 库以及其它代码项目都需要打包。 如果不进行打包,代码的发布就会变得困难和脆弱。

一旦过了概念验证阶段,跟踪变更、公布变更类型(例如,在引入向后不兼容的更新时)以及为用户提供依赖于特定版本的方法都会有所帮助。即使在最简单的使用情况下,遵循一些(打包)准则也是有益的。这至少意味着要跟踪更新日志并确定版本。

软件包管理有多种策略可循,了解一些最常用的策略可以让你采用最佳方案来解决问题。例如,通过Python Package Index (PyPI) 发布一个 Python 库,而不是像 Debian 和 RPM 那样将其作为一个系统包,可能会更容易一些。如果一个 Python 脚本需要在特定的时间间隔内运行,或者它是一个长期运行的进程,那么与systemd 一起工作的系统打包可能效果更好。

尽管systemd 并不是一个打包工具,但它在依赖于它来管理进程和服务器启动顺序的系统中确实发挥了很好的作用。 学习如何通过一些systemd 配置设置和一些打包来处理进程,是进一步提高 Python 项目能力的好方法。

原生的 Python 打包工具有一个包的公共托管实例 (PyPI)。然而,对于 Debian 和 RPM 软件包来说,提供一个本地软件仓库需要一些努力。本章将介绍一些能让创建和管理软件包仓库变得更容易的工具,包括 PyPI 的本地替代方案。

在发布软件时,充分了解不同的打包策略以及正确的版本管理和保留更新日志等健康做法,可以提供稳定、一致的体验。

包装为何重要?

有几个因素使得打包软件成为一个项目的基本特征(无论规模大小!)。跟踪版本和变更(通过变更日志)是一种很好的方法,可以让人们深入了解新功能和错误修复。版本管理可以让其他人更好地确定项目中可能会出现的问题。

在尝试识别问题和错误时,准确描述变更的更新日志是帮助识别系统故障潜在原因的宝贵工具。

对项目进行版本控制、在更新日志中描述变更、为他人提供安装和使用项目的方法,这些都需要严格的纪律和艰苦的努力。不过,在发布、调试、升级甚至卸载时,这样做的好处也是巨大的。

何时不需要包装

有时,你根本不需要将项目分发给其他系统。Ansible playbook 通常从一台服务器运行,以管理网络中的其他系统。在类似 Ansible 的情况下,遵循版本控制并保留更新日志可能就足够了。

像 Git 这样的版本控制系统可以通过使用标签轻松实现这一点。如果一个项目确实需要打包,Git 中的标签仍然有用,因为大多数工具都可以消耗标签(只要标签代表一个版本)来生成一个包。

最近,我们进行了一次长时间的调试,以确定一个大型软件项目的安装程序停止工作的原因。突然,一个依赖安装程序完成部署的 Python 小工具的所有功能测试都失败了。安装程序确实有版本,并与版本控制保持同步,但没有任何更新日志可以解释最近的更改会破坏现有的 API。为了找到问题所在,我们不得不查看最近的所有提交,以确定问题出在哪里。

Go 几个提交应该不是什么难事,但在一个有四千多个提交的项目中这样做试试看!找到原因后,我们开了两张票:一张解释了错误,另一张要求提供更新日志。

包装指南

在包装之前,有几件事值得考虑,以便包装过程尽可能顺利。即使您不打算包装产品,这些指导原则也有助于改进整个项目。

备注

版本控制中的项目随时可以打包。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

《Python 数据分析》第三版

《Python 数据分析》第三版

Wes McKinney
ppk on JavaScript

ppk on JavaScript

Peter-Paul Koch

Publisher Resources

ISBN: 9798341657380