在构建脚本中组合 -= 和 += 修饰符

Ste*_*ett 2 python buildout

这似乎不起作用:

[buildout]
extends = buildout.cfg
eggs -= python-ldap
eggs += psycopg2
Run Code Online (Sandbox Code Playgroud)

这种行为似乎总是好像这eggs += psycopg2条线不存在。这两行的顺序无关紧要。

这是一个错误吗?有没有办法达到这个结果?

Mar*_*ers 5

不幸的是,zc.buildout版本 1.5.2 不支持此用例。加法减法都会成功。

内部发生的事情是这样的:

  • 对于继承部分中定义的每个键、值对:
    • 如果键正在使用+=,则获取继承的值,添加内容,并将其存储为新值。
    • 如果键正在使用-=,则获取继承的值,删除内容,并将其存储为新值。

在这些更新之后,继承的部分被复制,用新值更新,并将其用作最终结果。

排序由通常的python 映射语义定义,因此未定义;加法或减法最后运行。因为这两个操作都从继承的部分获取输入,修改它,然后将其存储为新值,所以最后运行的操作会覆盖之前运行的操作的结果。

我已经为此做出了修复;我无权发布buildoutpypi的新版本,但我必须戳那些这样做的人。

编辑zc.buildout1.6 版包含此修复程序。