维护wheelhouse的实用工具。
项目描述
Wheelhouse是一个帮助维护wheelhouse的实用工具。
什么是Wheelhouse?
Wheelhouse是一个本地缓存的Python包,以wheel格式提交到你的VCS。在持续集成和生产过程中安装包时,使用Wheelhouse中的wheel而不是依赖于PyPI或其他网络位置。
优点
Wheel存储在你的DVCS中,可以更清楚地了解所需的/预期的包以及它们随时间的变化。
CI构建更快、更一致。由于从本地缓存安装wheel的速度比从网络位置拉取更快,我们可以在每次运行之前使用tox启动新的virtualenv,从而确保所有依赖项都已正确指定并安装到wheelhouse中。
生产部署也类似地快且一致。由于CI和生产服务器都从同一个wheelhouse中提取,我们有更高的信心,我们的生产代码正在运行经过测试的相同包。
由于轮子在开发或构建机器上构建,因此不需要在生产服务器上安装开发系统包。
针对分支、开发版本、未发布和/或私有软件用于生产,比设置和维护像devpi这样的私有PyPI服务器要容易得多。
将包管理过程分为两个不同的步骤
构建包(来自不同位置,指定版本)并将轮子放入wheelhouse。
从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构建
依赖管理
添加依赖关系包括
如果是运行时依赖项,请将其添加到
setup.py
中。将依赖项添加到
requirements/
目录下的任意一个需求文件中。运行
wheelhouse build
。
预览 Readme
在更新 readme 时,使用 restview --long-description
预览更改。
变更日志
0.1.4 版本发布于 2018-10-09
0.1.3 - 2017-05-30
BUG:修复处理多个需求文件时的错误
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建分发
Wheelhouse-0.1.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 76ccaf2cf70e7bd9db9705c9ee67b8eebb7fb5e1b292fa003409b95f1e1f449c |
|
MD5 | 5977270880c588f3c6e0c3908fc853c5 |
|
BLAKE2b-256 | 2382ee80cfb81d9532dcbe7ef8ae35f540ac692a4caa162f19ca7c4befb9f67b |
Wheelhouse-0.1.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c5b95bc1610f8407f7ff4d492598bb4b197cfe704d463042a67954efe2c8e507 |
|
MD5 | 4c46d604154006d84422bbdefbad470f |
|
BLAKE2b-256 | e5ae0cd83de96394943dfe5e0a333d54e2c54ade409d0515638c0233b0db4a26 |