【发布时间】:2015-11-28 13:06:18
【问题描述】:
我在 Ubuntu 12.04 虚拟机上运行 pip install protobuf==2.6.1 作为项目 install 脚本的一部分。这会产生以下错误:
使用pip install -r requirements.txt 会产生同样的错误。
我有pip 7.1.2,并且在其他 Ubuntu 12.04 VM 上拥有protobuf 2.6.1,它们的安装包列表类似(不完全相同)。 Pip freeze 说pytz===2011k。 (注意三元等于。)
pip-conflict-checker 只报告一个冲突,似乎与pytz 和protobuf 都无关:
$ pipconflictchecker
--------------------------------------------------
Conflicts Detected
--------------------------------------------------
- python-dateutil(2.1) pandas(<2)
为什么 pip 将 pytz===2011k 和 pytz>=2010 标记为冲突?
我想在一个“requirements.txt”中列出我所有的 pip 要求。有没有办法在不触发上述错误的情况下做到这一点?我对pytz 本身没有明确、直接的要求。
我还能够使用显式的pip install 2012b0 来安装protobuf,但不能使用pip install -r requirements.txt 作为requirements.txt,同时带有protobuf==2.6.1 和pytz>=2015。
可能相关的链接:
- 已弃用的 pytz 版本控制解决方法:https://bugs.launchpad.net/pytz/+bug/1224858
- 简单的 VersionConflict 和 pip 冲突检查器示例:https://github.com/docker/compose/issues/918
- PEP 440 / Python 版本控制https://www.python.org/dev/peps/pep-0440 包括pytz 版本https://www.python.org/dev/peps/pep-0440/#olson-database-versioning 的特别说明和'===' 的描述https://www.python.org/dev/peps/pep-0440/#arbitrary-equality
- pip 开发线程依赖检查/解析https://github.com/pypa/pip/issues/988
【问题讨论】:
标签: pip protocol-buffers versioning pytz