在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 Spring AOP:在方法之间交换信息   数组Java将字符串转换为字符[]   堆内存java。lang.OutOfMemoryError:PermGen space+java   安卓 Java。lang.ClassCastException:无法将活动强制转换到接口   java尝试使用气泡排序将随机整数数组从最大到最小排序   线程“main”java中的indexoutofboundsexception异常。lang.ArrayIndexOutofBounds异常:发电机处为3。main(Generator.java:35)   java“宽大”有什么用?   java SimpleCaptcha NoSuchMethodError   java在哪里部署Web服务的jar依赖项?   Java8获取列表中连续数字的函数方法   java为什么JWT令牌不安全?   java Uber API:在请求或发出令牌时指定多个作用域会返回无效的请求参数   java如何使用映射器从包含多个引用单元的JSON字符串中获取对象列表?   java警告匿名子类(?)没有串行版本   Jackson 2.9.0中的java JsonGenerationException。pr1   java试图打印多个catch语句   java如何创建一个sql表并获得每个唯一字段的平均价格?   java为什么SetMinimumSize设置最小高度而不是宽度?   java与使用POI合并的混淆   java在Xpath中使用“AND”和“normalizespace”时在不同浏览器中遇到不同的错误