跳转到主要内容

维护wheelhouse的实用工具。

项目描述

Wheelhouse是一个帮助维护wheelhouse的实用工具。

什么是Wheelhouse?

Wheelhouse是一个本地缓存的Python包,以wheel格式提交到你的VCS。在持续集成和生产过程中安装包时,使用Wheelhouse中的wheel而不是依赖于PyPI或其他网络位置。

优点

  • Wheel存储在你的DVCS中,可以更清楚地了解所需的/预期的包以及它们随时间的变化。

  • CI构建更快、更一致。由于从本地缓存安装wheel的速度比从网络位置拉取更快,我们可以在每次运行之前使用tox启动新的virtualenv,从而确保所有依赖项都已正确指定并安装到wheelhouse中。

  • 生产部署也类似地快且一致。由于CI和生产服务器都从同一个wheelhouse中提取,我们有更高的信心,我们的生产代码正在运行经过测试的相同包。

  • 由于轮子在开发或构建机器上构建,因此不需要在生产服务器上安装开发系统包。

  • 针对分支、开发版本、未发布和/或私有软件用于生产,比设置和维护像devpi这样的私有PyPI服务器要容易得多。

  • 将包管理过程分为两个不同的步骤

    1. 构建包(来自不同位置,指定版本)并将轮子放入wheelhouse。

    2. 从wheelhouse安装包的最新版本。

缺点

  • 有些人可能反对将二进制包存储在版本控制中。

  • 需要更多的磁盘空间来存储二进制包。

  • 如果不定期清理,wheelhouse将积累包。可以使用purge命令来帮助解决这个问题。

示例用法

构建/刷新Wheelhouse

这将构建轮子并将它们存储在wheelhouse中,用于任何更新的包

wheelhouse build

设置环境

使用来自wheelhouse的包创建一个临时virtualenv

vex -mr myproj # or: mktmpenv
wheelhouse install -- -r requirements/dev-env.txt
pip install -e .

您的virtualenv现在包含与wheelhouse相同的包。通过使用临时环境,您可以强制自己始终使用wheelhouse中的内容。将包放入开发环境需要您通过wheelhouse进行操作。这意味着维护项目的包成为每个开发者工作流程中的首要问题。

示例项目

这个项目的代码相当基础,但重要的是概念。将wheelhouse的概念付诸实践,使我们在开发、测试和生产环境中管理项目依赖关系变得容易得多。

查看Keg以查看一个使用wheelhouse并结合tox来管理依赖的项目。

当前功能

  • build:将构建所有配置文件中指定的要求文件中的所有包,并存储在wheelhouse目录中。也可以传递单个包或别名的名称。

  • config:显示wheelhouse使用的配置。

  • purge:清除wheelhouse中任何不是该包在wheelhouse中最新的版本的所有轮子。

可能未来的功能

  • install:从wheelhouse安装包/轮子。

  • status:将工作环境安装的包与要求文件、wheelhouse和包索引(PyPI)进行比较,并显示它们不一致的地方。

pip 配置

一旦有了wheelhouse(运行wheelhouse build),就可以告诉pip只从wheelhouse安装。要使用环境变量和tox.ini来完成此操作,将如下所示

# tox.ini
[testenv]
setenv =
    PIP_USE_WHEEL=true
    PIP_NO_INDEX=true
    PIP_FIND_LINKS=requirements/wheelhouse

或者,从命令行

pip install --use-wheel --no-index --find-links=requirements/wheelhouse -r requirements/testing.txt

配置

您必须在项目的根目录下放置一个wheelhouse.ini。这被认为是“项目根”,所有相对文件路径都是从该位置计算的。

您还可以在用户特定的位置放置一个wheelhouse.ini文件以覆盖Wheelhouse的默认值。有关更多信息,请参阅wheelhouse config

配置文件由SafeConfigParser实例读取。有关可用的插值支持,请参阅相关文档。

以下是一个配置文件的示例

[wheelhouse]
# These files are relative to the project's requirements directory (default: `requirements/`).
requirement_files =
    build.txt

# Make sure each package has a wheel built for python 2 & 3.
pip_bins = pip, pip3.4

[aliases]
# Shortcuts to be used when specifying projects to `build`.
keg = https://github.com/level12/keg/zipball/master
ke = https://github.com/level12/keg-elements/zipball/master

问题 & 讨论

请将问题、评论、错误、功能请求等发送到:https://github.com/level12/wheelhouse/issues

当前状态

非常Beta,预期会有变化。

开发

要在本项目中开发,请首先运行我们的测试

git clone https://github.com/level12/wheelhouse wheelhouse-src
cd wheelhouse-src
tox

然后您可以检查tox.ini以了解我们的开发过程。特别是,我们

  • 使用py.test进行测试(以及覆盖率分析)

  • 使用flake8进行linting

  • pip要求文件存储在requirements/

  • requirements/wheelhouse中缓存轮子以实现更快速和更可靠的CI构建

依赖管理

添加依赖关系包括

  1. 如果是运行时依赖项,请将其添加到setup.py中。

  2. 将依赖项添加到 requirements/ 目录下的任意一个需求文件中。

  3. 运行 wheelhouse build

预览 Readme

在更新 readme 时,使用 restview --long-description 预览更改。

变更日志

0.1.4 版本发布于 2018-10-09

  • 为 pyp 准备 (9768bdb)

  • 替换缺失的 wheel.install 中的函数 (2699de5)

  • 修复处理多个 reqs 文件时的错误 (dc3eb9a)

  • 改进默认日志记录 (48c49c7)

0.1.3 - 2017-05-30

  • BUG:修复处理多个需求文件时的错误

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分发

Wheelhouse-0.1.4.tar.gz (15.3 kB 查看哈希值)

上传时间 源代码

构建分发

Wheelhouse-0.1.4-py3-none-any.whl (16.9 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面