为什么 tensorflow 需要 VC++ 而 numpy 不需要?

问题描述

这听起来可能很愚蠢,但在 Python 工作了这么多年之后,我想了解为什么 numpy 被安装,而 tensorflow 要求在 Windows 中安装 Microsoft VC++。常识说两者都是用 C++ 编写的。那为什么前面的包安装没有问题,而后面的包需要VC++呢?

解决方法

VC++ 要求自 2.1 版起就存在。 release notes of the version 2.1 声明:

Windows 用户: 正式发布的 tensorflow Pip 包现在 使用 Visual Studio 2019 版本 16.4 构建以利用 新的 /d2ReducedOptimizeHugeFunctions 编译器标志。要使用这些 新软件包,您必须安装“Microsoft Visual C++ Redistributable 适用于 Visual Studio 2015、2017 和 2019”,可从 Microsoft 网站在这里。

  • 这不会更改在 Windows 上从源代码构建 TensorFlow 所需的最低版本,而是构建启用 如果没有这个,EIGEN_STRONG_INLINE 可能需要超过 48 小时才能编译 旗帜。有关更多信息,请参阅 configure.py EIGEN_STRONG_INLINE 和 /d2ReducedOptimizeHugeFunctions。
  • 如果您的计算机上缺少所需的 DLL,msvcp140.dll(旧)或 msvcp140_1.dll(新),请导入 tensorflow 将打印一条警告消息。

此更改使 Windows tensorflow 包依赖于某些在 Windows 机器上默认不可用的 C++ API。您可以阅读有关该问题的更多信息:Why does my application require Visual C++ Redistributable package