在ruby的gem bundler的启发下,试图更好地管理需求文件中的依赖关系

Pundler的Python项目详细描述


关于

pundler试图更好地管理python需求文件。

pundler的灵感来自ruby的宝石Bundler

具体来说,目标是处理requirements.inrequirements.txt进入类似于^{tt3}的冻结锁定文件$ 以及红宝石世界里的Gemfile.lock

这样做的好处是你的要求 文件只指定特定依赖的对象的版本 这些依赖带来的依赖可以很容易识别 分开了。

例如,如果我安装了需求jinja2==2.7 还需要安装jinja2的依赖项markupsafe,但它会 安装。通过运行pundler,我得到了一个很好地固定的requirements.txt 只要需要,我就可以从“real”requirements.in重新生成 我真的很在乎改变。

例如,假设我在requirements.in

a==1.0
b==2.0
c==3.0

如果我们包含这些包的依赖项,我们就有:

a==1.0
adep1==1.0
adep2==1.0
b==2.0
bdep1==2.0
c==3.0

假设我们最终将a升级到2.0版:

a==2.0
adep1==1.0
adep2==1.0
b==2.0
bdep1==2.0
c==3.0

a==2.0中,不再需要依赖项adep1==1.0。如果我们有一个 所有版本都固定的需求文件不清楚依赖关系是否可以 现在被移除。

如果我们只是更新原始的requirements.in,我们就可以重新生成 完整的需求(作为requirements.txt)很明显 adep1==1.0不再是必需的。

用法

只需使用requirements.in

在目录中运行pundler
python setup.py develop
pundler

pundler将处理该文件并创建一个requirements.txt 将所有包固定到特定版本和 清楚地确定什么依赖于什么包依赖于什么。

示例

给定以下requirements.example.in

pyramid==1.4.2
jinja2
txtemplate

pundler将生成thisrequirements.example.txt

# requirement 'pyramid==1.4.2' depends on:
WebOb==1.2.3
pyramid==1.4.2
translationstring==1.1
repoze.lru==0.6
Mako==0.8.1
MarkupSafe==0.18
PasteDeploy==1.5.0
Chameleon==2.11
venusian==1.0a8
zope.deprecation==4.0.2
zope.interface==4.0.5
setuptools==0.6c11

# requirement 'jinja2' depends on:
jinja2==2.7
markupsafe==0.18

# requirement 'txtemplate' depends on:
genshi==0.7
#jinja2==2.7
twisted==13.0.0
#markupsafe==0.18
txtemplate==1.0.2
#zope.interface==4.0.5
#setuptools==0.6c11

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
缺少java MIMessage附件   java试图从JSON数组向数据库插入数据   铸造java。util。ArrayList无法转换为java。util。矢量   在到达末尾后从头开始读取csv文件(Java、OpenCSV)   Java swing如何在另一个线程中打开框架   java如何为集合正确编写此比较器。排序(arrayList、comparator)?   JavaOOD将配置传递给外部类的最佳方式   java不确定如何使用switch语句从main()调用要运行的方法   java循环菜单以在选择后显示   java将位置对象转换为地址(谷歌地图)   java Hazel cast客户端端口问题   使用JarJar重新打包工具的java   使用Java Netscape目录LDAP API和二进制筛选器值   java如何从Google App Engine下载应用程序源文件   java如何居中javafx场景图“摄影机”   java调用servlet而不提交并停留在同一个JSP页面中   将文本文件加载到HashMap<Integer,List<String>>java中   JavaFX平台。重新加载站点后运行更高版本()