我在Ubuntu 12.04 VM上运行pip install protobuf==2.6.1
作为项目的install
脚本的一部分。这会产生以下错误:
Collecting protobuf==2.6.1 /usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. InsecurePlatformWarning Downloading protobuf-2.6.1.tar.gz (188kB) 100% |################################| 188kB 2.5MB/s Complete output from command python setup.py egg_info: Installed /tmp/pip-build-AnwMIr/protobuf/.eggs/google_apputils-0.4.2-py2.7.egg Traceback (most recent call last): File "", line 20, in File "/tmp/pip-build-AnwMIr/protobuf/setup.py", line 200, in "Protocol Buffers are Google's data interchange format.", File "/usr/lib/python2.7/distutils/core.py", line 112, in setup _setup_distribution = dist = klass(attrs) File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 268, in __init__ self.fetch_build_eggs(attrs['setup_requires']) File "/usr/local/lib/python2.7/dist-packages/setuptools/dist.py", line 313, in fetch_build_eggs replace_conflicting=True, File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 836, in resolve dist = best[req.key] = env.best_match(req, ws, installer) File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1074, in best_match dist = working_set.find(req) File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 711, in find raise VersionConflict(dist, req) pkg_resources.VersionConflict: (pytz 2011k (/usr/lib/python2.7/dist-packages), Requirement.parse('pytz>=2010'))
使用pip install -r requirements.txt
会产生相同的错误。
我有pip 7.1.2
,并且在其他Ubuntu 12.04虚拟机上拥有protobuf 2.6.1
,其中包含类似(不相同)的已安装软件包列表。 Pip冻结说pytz===2011k
。 (注意 triple 等于。)
pip-conflict-checker
仅报告一次与pytz
和protobuf
无关的冲突:
$ pipconflictchecker
--------------------------------------------------
Conflicts Detected
--------------------------------------------------
- python-dateutil(2.1) pandas(<2)
为什么pip标记pytz===2011k
和pytz>=2010
处于冲突状态?
我想在单个&#34; requirements.txt&#34;中列出我的所有点数要求。有没有办法在不触发上述错误的情况下执行此操作?我对pytz
本身没有明确,直接的要求。
我还可以使用protobuf
安装pip install 2012b0
,但使用pip install -r requirements.txt
使用protobuf==2.6.1
来安装pytz>=2015
var rectangleInstance = new Cesium.GeometryInstance({
geometry : new Cesium.RectangleGeometry({
rectangle : Cesium.Rectangle.fromDegrees(-140.0, 30.0, -100.0, 40.0)
}),
id : 'rectangle',
attributes : {
color : new Cesium.ColorGeometryInstanceAttribute(0.0, 1.0, 1.0, 0.5)
}
});
scene.primitives.add(new Cesium.GroundPrimitive({
geometryInstance : rectangleInstance
}));
}和HAVING
。
潜在相关链接:
答案 0 :(得分:0)
我希望有人提出一个更好的解决方案,但这可能需要等待pip提供解决冲突的真正工具,而不是当前“默默地采取它先发现的任何方法”的方法。 (参见https://pip.pypa.io/en/stable/user_guide.html#requirements-files)由于pip明显无法解析pytz 2011k的版本号,因此特定问题可能也很复杂。 (我认为这是“===”的含义,但我没有在pip的文档中找到明确的确认。)
与此同时,我似乎有两种选择:
这两个选项都遇到同样的问题:除了其中一个之外,没有办法获得必要的数据([pytz的首选版本]或[首选订单]):
我建议将这个“答案”作为我自己的占位符/指南/解决方案。其他。我不认为它是“可接受的”,因为它很脆弱:如果我想让pytz保持最新状态,我必须监控他们的发布时间表,并且可能随时重复上述过程pytz发布更新或我添加/删除涉及pytz的依赖项。
观看此主题以期获得真正的解决方案:https://github.com/pypa/pip/issues/988
答案 1 :(得分:0)
在我的MAC EL-Capitan上,使用python 2.6版时出现了类似的错误,错误如下
bash# ./configure CXXFLAGS=-Wno-deprecated-declarations
bash# make
...
pkg_resources.VersionConflict: (putz 2012d (/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python), Requirement.parse('pytz>=2010'))
make[2]: *** [../3rdparty/protobuf-2.6.1/python/dist/protobuf-2.6.1-py2.6.egg] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1
<强>解决方案强>
更改了python版本&gt; 2.6因为它似乎是pytz与2.6的版本兼容性问题
然而,使用./configure脚本停止时python3.4失败
.checking whether python3.4 version >= 2.6... configure: error: too old
所以我建议你坚持使用python2.7
bash# ./configure CXXFLAGS=-Wno-deprecated-declarations PYTHON_VERSION=2.7
bash# make