繁体   English   中英

使用 Python 3.7.0 安装 Tensorflow 时出错 - 为什么 pip3 不自行解决依赖关系?

[英]Errors while installing Tensorflow with Python 3.7.0 - why didn't pip3 resolve the dependency on its own?

我在使用 Python 3.7.0 将 Tensorflow (cpu) 安装到 Windows 7 机器上的虚拟环境中时遇到错误。

我的命令:

pip3 install tensorflow==2.0.0

我收到以下错误,但不会阻止该过程完成。

错误:google-auth 1.11.2 要求 setuptools>=40.3.0,但您将拥有不兼容的 setuptools 39.0.1。

错误:tensorboard 2.0.2 要求 setuptools>=41.0.0,但您将拥有不兼容的 setuptools 39.0.1。

如果我需要更高版本的任何库,不应该pip获取它吗? 或者这是否意味着正在使用的回购没有这样的?

我将pip视为 Python 的npm 是否足够准确?

在做任何其他事情之前,我确实更新了pip本身。

以下问题帮助我解决了当前的问题: 错误:tensorboard 2.0.2 has required setuptools>=41.0.0,但您将拥有不兼容的 setuptools 40.6.2

我做了以下事情:

pip3 install setuptools --upgrade
pip3 uninstall tensorflow
pip3 install tensorflow==2.0.0

不过,我仍然有兴趣发生了什么引擎盖下这里发生的一切。

这里的问题不是需要更新版本的包,而是需要不兼容的版本。

pip 使用的版本规范格式在PEP 440 中描述。 这种格式与语义版本控制 完全兼容语义版本控制本质上由Major.Minor.Path形式的Major.Minor.Path 使用此版本控制方案,允许具有不同Major版本的包具有向后不兼容的 API 更改,因此包不能在没有破坏代码的风险的情况下在主要版本之间自由升级。

这方面的一个具体例子是 Python 2.XX 和 Python 3.XX 之间的区别。随着主版本号的这一变化,Python 收到了许多向后不兼容的变化,例如用内置函数替换了print语句。 这导致许多有效的 Python 2 程序在 Python 3 中变得无效,因此开发人员只能在确保他们的程序与新 API 兼容后才能将他们的程序迁移到更新的主要 Python 版本。

在您的示例中,您安装了 setuptools 版本39.0.1 然后您尝试安装依赖于 setuptools 40.3.0或更新版本的软件包。 您会注意到,这两个软件包的主要版本号不同 ( 39 != 40 ),因此 pip 不能确信升级软件包不会破坏您现有的 Python 环境。

如果你安装了 setuptools 40.2.0 ,pip 很乐意将你的 setuptools 安装升级到40.3.0 这是因为对Minor版本的更改预计会向后兼容,因此任何使用 setuptools 40.2.0运行的代码40.2.0应该与40.3.0一起40.3.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM