开发者社区> 问答> 正文

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

将Tensorflow(cpu)安装到带有Python 3.7.0的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具有要求setuptools> = 41.0.0,但您将拥有不兼容的setuptools 40.6.2。

我做了以下事情:

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

但是,我仍然对这里的幕后情况感兴趣。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 10:07:19 885 0
1 条回答
写回答
取消 提交回答
  • 这里的问题不是不是需要更新版本的软件包,而是需要不兼容的版本。

    pip所使用的版本规范格式在PEP 440中进行了描述。该格式与语义版本控制完全兼容,语义版本控制主要由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环境。

    如果您安装了setuptools40.2.0,那么pip会很乐意将setuptools安装升级到40.3.0。这是因为对Minor版本的更改预期是向后兼容的,因此,与setuptools 40.2.0运行的任何代码都应与40.3.0一样工作。

    回答来源:stackoverflow

    2020-03-24 10:07:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载