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

使用Python 3.7.0安装Tensorflow时出错-为什么不';pip3是否自行解决依赖关系?,python,python-3.x,tensorflow,installation,Python,Python 3.x,Tensorflow,Installation,在使用Python 3.7.0将Tensorflow(cpu)安装到Windows 7 box上的虚拟环境中时,我遇到了错误 我的命令: 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.

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

我的命令:

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
获取它?或者这是否意味着正在使用的回购协议没有这样的风险?

对于Python,我将
pip
视为
npm
。它足够准确吗

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

以下问题帮助我解决了眼前的问题:

我做了以下工作:

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

然而,我仍然对这里发生的事情感兴趣。

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

pip使用的版本规范格式如中所述。此格式为,基本上由
Major.Minor.Path
形式的版本号组成。使用此版本控制方案,具有不同<代码>主要版本的软件包可以进行向后不兼容的API更改,因此如果没有破坏风险的代码,软件包无法在主要版本之间自由升级

一个具体的例子是Python2.X.X和Python3.X.X之间的区别。随着主要版本号的更改,Python收到了许多向后不兼容的更改,例如用内置函数替换
print
语句。这导致许多有效的Python2程序在Python3中变得无效,因此开发人员只有在确保其程序与新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.3.0

一起工作,使用
--升级
是否会更改任何内容?@PM77-1是,传递
--upgrade
告诉pip将引用的包升级到最新版本,其中包括更新包的依赖项。值得注意的是,默认情况下,pip仅在必要时升级依赖项,即仅升级不满足包的新需求的依赖项。有关更多信息,请参阅文档以了解。