十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

python_pip完全教程:5步用Chef批量安装、升级与锁定Python包版本

python_pip完全教程:5步用Chef批量安装、升级与锁定Python包版本 python_pip完全教程5步用Chef批量安装、升级与锁定Python包版本【免费下载链接】pythonTHIS COOKBOOK IS DEPRECATED – Chef cookbook to install Python and related tools项目地址: https://gitcode.com/gh_mirrors/python10/python 前言python_pip 能帮你解决什么python_pip是 Chef 官方 python cookbook 提供的一个轻量级资源LWRP让运维人员可以在一次 Chef 运行中批量安装、升级、删除和锁定 Python 包版本而不是登录每一台服务器手动执行pip install。本项目是一个用于安装 Python、pip 与 virtualenv 的 Chef cookbook注意官方已标记该 cookbook 处于 deprecated 状态新项目建设推荐评估 poise-python但既有环境仍可稳定使用核心资源定义在providers/pip.rb默认配置在attributes/default.rb。 5 步走完全文你就能把一套 Python 环境的部署变成可重复、可审计、可回滚的自动化流程。第1步获取 cookbook 并了解安装方式如果本地已有 Chef 工作区可直接拉取代码如需克隆仓库git clone https://gitcode.com/gh_mirrors/python10/pythoncookbook 支持 5 个子配方在metadata.rb中均有声明配方作用python默认入口安装 Python pip virtualenvpython::package用系统包管理器安装 Python默认方式python::source从源码编译安装 Pythonpython::pip通过files/default/get-pip.py引导安装 pippython::virtualenv用 python_pip 资源安装 virtualenv安装方式由属性node[python][install_method]控制默认值package可在角色/节点属性中改为source见attributes/default.rb第 21 行。第2步一键批量安装 Python、pip 与 virtualenv把python加入节点 run list 即可include_recipe pythonrecipes/default.rb会自动串联三件事按平台装 Pythonrecipes/package.rb会智能处理 Debian/RHEL/FreeBSD 等平台的包名差异、用内置的files/default/get-pip.py安装 pip、再装好 virtualenv。整个过程天然幂等——pip 已存在时not_if判断pip二进制路径会自动跳过重复执行不会出错。 小贴士recipes/pip.rb还会顺带执行python_pip setuptools的升级动作并通过属性node[python][setuptools_version]控制版本。第3步用 python_pip 批量安装 Python 包在任意 recipe 中python_pip的用法和package资源几乎一致因此极易上手python_pip gunicorn # 安装最新版 python_pip django do version 1.1.4 # 锁定指定版本 end一次声明、批量下发Chef 会并行处理数十台节点。资源支持的常用参数完整逻辑见providers/pip.rbversion不填则装最新版填了则精确安装该版本virtualenv指定把包装进哪个隔离环境options透传额外 pip 命令行参数timeout安装超时秒默认 900适合大型依赖包user/group以指定用户运行 pip配合 virtualenv 使用支持的 action 包括:install默认、:upgrade、:remove、:purge其中:purge对 pip 包等价于:remove。第4步升级与锁定版本幂等是关键python_pip 的聪明之处在于先探测当前版本再决定动作每次运行先执行pip list解析出已安装版本current_installed_version方法声明的版本与当前版本不一致才会真正安装一致则直接跳过:upgradeaction 会对比当前版本与目标版本仅在落后时执行pip install --upgrade。这意味着把version 2.1.2写进 recipe就是版本锁——所有节点被永久钉在 2.1.2升级时统一改一处所有节点同步漂移。测试用例test/cookbooks/python_test/recipes/test_pip.rb就演示了连续声明两次相同版本第二次不会重复安装通过 notify 写文件验证幂等。⚠️ 注意版本号会拼成包名版本传给 pip如果安装的是源码归档或 git 地址如git...provider 会自动不加版本后缀避免命令报错。第5步用 virtualenv 隔离环境并验证结果生产环境建议每个应用独立环境python_virtualenv资源负责创建python_virtualenv /home/ubuntu/my_ve do owner ubuntu group ubuntu options --system-site-packages # 可选共享全局包 action :create end python_pip flask do virtualenv /home/ubuntu/my_ve # 包只装进这个环境 end验证环节推荐用 Test KitchenBerksfile已配好python_test集成测试 cookbook按TESTING.md的说明安装依赖后执行kitchen test即可在真实虚拟机里跑通「装环境 → 装包 → 幂等检查」的全链路测试脚本见test/integration/与test/cookbooks/python_test/。 常见参数速查场景写法要点装最新版python_pip 包名不写 version锁定版本声明version x.y.z升级到新版action :upgrade 新version卸载包action :remove装入隔离环境加virtualenv /path/to/ve大包防超时加timeout 3600❓ 新手常见问题Q这个 cookbook 还能用吗A官方 README 明确标注 deprecated会持续保留以兼容存量环境未来版本将逐步精简为 poise-python 的封装层。新项目建议评估 poise-python本文用法对理解 Chef 包管理范式仍然非常有用。Q支持哪些系统ADebian、Ubuntu、CentOS、Red Hat、Fedora、FreeBSD、SmartOS平台差异已在recipes/package.rb的包名映射中处理老版本 RHEL 5 会自动挂 EPEL 源。Q想装特定版本的 Python 解释器本身怎么办A设置node[python][install_method] source再改node[python][version]与checksumrecipes/source.rb会下载源码、编译并建立默认 python 软链。结语从一键装环境到批量锁版本python_pip 把「Python 依赖漂移」这个运维痛点变成了 recipe 里的一行声明。配合 virtualenv 隔离与 Test Kitchen 验证你获得的不只是几台装好 Python 的服务器而是一套可重复、可审计的批量交付能力——这正是 Chef 自动化运维的核心价值。【免费下载链接】pythonTHIS COOKBOOK IS DEPRECATED – Chef cookbook to install Python and related tools项目地址: https://gitcode.com/gh_mirrors/python10/python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表