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

资讯详情

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

Apache Beam 测试基础设施工具指南:用 python_installer.sh 通过 pyenv 批量安装 Python 版本

Apache Beam 测试基础设施工具指南:用 python_installer.sh 通过 pyenv 批量安装 Python 版本 大数据批处理流处理数据工程【免费下载链接】beamApache Beam is a unified programming model for Batch and Streaming data processing.项目地址https://gitcode.com/gh_mirrors/beam4/beam点击查看免费下载Apache Beam 是统一的批流一体数据处理编程模型其 Python SDK 需要同时支持多个 Python 版本当前仓库中python_requires 3.10版本上限随新版本发布滚动推进。为保证贡献者在本地、CI 与测试集群中拥有一致的多版本 Python 环境仓库在.test-infra/tools/下提供了一键式 Python 安装脚本python_installer.sh它通过 pyenv 为用户安装多个 Python 版本并配置全局环境。本文将围绕.test-infra/tools/README.md对该脚本的说明结合脚本源码与 Python SDK 的版本治理机制完整讲解其用法、修改方式与底层实现帮助你快速搭建与 Beam 测试矩阵匹配的本地 Python 环境。工具概览它是做什么的根据 .test-infra/tools/README.md 的定义python_installer.sh是一个为当前用户非系统级安装 pyenv 及其依赖、并通过 pyenv 安装多个 Python 版本的工具。关键特性包括用户级安装脚本只把 pyenv 与 Python 版本安装在运行脚本的用户$HOME下不影响系统其他用户依赖自动补齐先通过apt-get安装 pyenv 编译 Python 所需的系统构建依赖版本批量安装读取脚本顶部的python_versions_arr数组循环调用pyenv install安装列表中的所有版本全局默认设置安装完成后将列表中所有版本设为pyenv global保证python/pip命令可直接指向这些版本。在仓库语境下这个工具服务于 .test-infraApache Beam 的测试基础设施目录中的 Python 相关测试与工具链——该目录还包含 flaky 测试检测、过期云资源清理等运维脚本而 Python 多版本环境是运行它们与 Python SDK 测试矩阵见 sdks/python/tox.ini 中的py310,py311,py312,py313,py314的前提。快速使用一行命令完成环境搭建README 给出的使用方式非常简单下载脚本后直接以 bash 执行即可bash ./python_installer.sh脚本内部通过set -euo pipefailpython_installer.sh保证任何一步失败立即退出避免留下半成品环境。执行过程会按顺序完成以下 6 个阶段对应源码中的函数阶段函数作用1. 安装系统依赖pyenv_depapt-get installpyenv 编译所需的构建工具链2. 安装 pyenvpyenv_install清理旧版本后通过curl https://pyenv.run安装3. 写入 shell 配置pyenv_post_install向~/.bashrc追加 pyenv 的 PATH 与初始化配置4. 批量安装 Pythonpyenv_versions_install遍历python_versions_arr逐个pyenv install5. 设为全局版本python_versions_setgloballypyenv global一次性启用全部版本6. 清理clean删除下载的pyenv_installer.sh并提示重启 shell执行完毕脚本会提示Restart your shell so the path changes take effect并给出建议命令exec $SHELL重启后即可使用pyenv versions验证安装结果。修改要安装的 Python 版本README 明确说明了修改方式要增删 Python 版本只需编辑脚本顶部python_versions_arr数组。原始定义README 中的示例python_versions_arr(3.8.16 3.9.16 3.10.10 3.11.4)修改后python_versions_arr(3.8.10 3.9.0 3.10.2)当前仓库实际维护的版本列表见 python_installer.shpython_versions_arr(3.10.10 3.11.4 3.12.6 3.13.9)这组版本与 Beam Python SDK 当前的测试矩阵高度一致python_requires 3.10见 sdks/python/setup.pytox 测试环境覆盖py310,py311,py312,py313,py314见 sdks/python/tox.ini因此贡献者修改数组时建议与 contributor-docs/updating-supported-python-versions.md 中维护的受支持版本清单保持同步。深入源码脚本各阶段实现原理1. 安装 pyenv 编译依赖pyenv_depsudo apt-get update -y sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev这些包是 CPython 源码编译的经典依赖集合build-essential/make提供编译器libssl-dev对应_ssl模块libsqlite3-dev对应sqlite3libffi-dev对应ctypestk-dev对应tkinter。缺少任一关键依赖都会导致 pyenv 编译出的 Python 缺失对应标准库模块。注意该步骤使用sudo需要当前用户具有 sudo 权限。2. 安装 pyenv 本体pyenv_installif [[ -d $HOME/.pyenv/ ]]; then sudo rm -r $HOME/.pyenv fi if [[ -e $HOME/pyenv_installer.sh ]]; then sudo rm $HOME/pyenv_installer.sh fi curl https://pyenv.run $HOME/pyenv_installer.sh chmod x $HOME/pyenv_installer.sh $HOME/pyenv_installer.sh脚本会先删除已存在的~/.pyenv与旧的安装器脚本再重新安装因此重复执行会得到一个干净的 pyenv 环境安装源是官方pyenv.run引导脚本。3. 写入 shell 环境配置pyenv_post_installif ! $HOME/.bashrc grep -q # pyenv Config ; then { echo # pyenv Config echo export PYENV_ROOT$HOME/.pyenv echo export PATH$PYENV_ROOT/bin:$PATH echo if which pyenv /dev/null; then echo eval $(pyenv init -) echo eval $(pyenv init --path) echo eval $(pyenv virtualenv-init -) echo fi } $HOME/.bashrc fi这里使用了幂等写法先检查~/.bashrc是否已包含# pyenv Config标记避免重复追加。写入内容包含pyenv init与pyenv virtualenv-init后者为 pyenv-virtualenv 插件提供自动激活虚拟环境的能力。4. 批量安装与全局设置pyenv_versions_install / python_versions_setgloballypyenv_versions_install(){ arr($) for version in ${arr[]}; do $HOME/.pyenv/bin/pyenv install $version done } python_versions_setglobally(){ $HOME/.pyenv/bin/pyenv global $ }两个函数都通过$接收python_versions_arr的全部元素前者逐个编译安装后者一次性把多个版本设为pyenv globalpyenv global支持多版本参数会生成指向多个版本的shims。由于安装过程是源码编译耗时会随版本数量增加建议在空闲时段执行。与 Beam Python 版本治理体系的关联python_installer.sh是 Beam 多版本 Python 支持策略在本地环境侧的落地工具。仓库中的配套治理机制包括受支持版本声明sdks/python/setup.py 中python_requires 3.10定义了最低版本classifiers 列出3.10至3.14的版本声明版本运行期警告sdks/python/apache_beam/init.py 对minor 9过低与minor 15过高的 Python 版本发出未经充分测试的警告并拒绝在 Python 2 上运行测试矩阵sdks/python/tox.ini 的envlist覆盖py310到py314及各自云测试组合版本增删流程contributor-docs/updating-supported-python-versions.md 详细列出了添加/移除 Python 版本时需要同步修改的容器、tox 配置、GitHub Actions 工作流、wheel 构建与 Gradle 任务等。因此当 Beam 宣布支持新的 Python 版本如新增 3.14时维护者通常会同步更新python_versions_arr让贡献者一键获得与 CI 一致的本地环境。修改该数组后建议对照上述治理文档核对版本边界是否一致。注意事项与使用前提仅限用户级安装pyenv 与 Python 都安装在$HOME下适合个人开发机、CI 执行机等单用户场景如需系统级多用户共享应另寻方案需要 sudo 权限依赖安装apt-get与旧文件清理sudo rm均需要 sudo网络依赖安装过程需访问pyenv.run与 Python 源码下载源README 维护约定该 README 开头明确要求PLEASE update this file if you add a new tool or update an existing one.test-infra/tools/README.md即向.test-infra/tools/新增工具或改动现有工具时必须同步更新本文档重复执行安全脚本会先清理旧的~/.pyenv再重装重复运行可修复被破坏的环境但也会丢失已安装的额外版本。小结.test-infra/tools/README.md描述的工具虽小却是 Beam 多版本 Python 开发与测试闭环中本地环境一致化的关键一环bash ./python_installer.sh一条命令即可完成 pyenv 依赖、pyenv 本体、多个 Python 版本与全局路径配置需要调整版本时只需编辑python_versions_arr数组。结合 python_installer.sh 的源码逐函数解读以及 sdks/python/setup.py、sdks/python/tox.ini、contributor-docs/updating-supported-python-versions.md 等配套文件的印证你可以快速搭建与 Beam 官方测试矩阵对齐的 Python 多版本环境并在 Beam 升级受支持 Python 版本时准确同步本地工具链。赞分享大数据批处理流处理数据工程【免费下载链接】beamApache Beam is a unified programming model for Batch and Streaming data processing.项目地址https://gitcode.com/gh_mirrors/beam4/beam点击查看免费下载相关推荐如何用 LiveTalking 3 分钟跑通一个实时数字人如何用 LiveTalking 3 分钟跑通一个实时数字人 让数字人对着屏幕实时说话,还要口型对得上、延迟低、能被用户打断——自己拼这套链路要折腾不少事。Liv人工智能大模型数字人语音音视频媒体生成后端pyenv-win与未来城市基础设施智能交通中的版本管理pyenv win与未来城市基础设施智能交通中的版本管理 引言当智能交通遇上Python版本混乱 2025年某智能交通控制中心早高峰7:32。一场由Pyt开发工具CLICheckov基础设施即代码扫描工具安装指南Checkov基础设施即代码扫描工具安装指南 前言 Checkov是一款强大的基础设施即代码 IaC 静态分析工具能够帮助开发者在部署前发现云资源配置中的安全应用安全静态分析供应链安全云原生上一篇告别终端卡顿用CocoaLumberjack打造macOS日志监控神器下一篇2024年Duplicati云存储成本终极指南主流服务商价格对比与选择策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表