Cython setup.py 找不到已安装的 Visual C++ 构建工具

问题描述

我正在尝试使用这个 setup.py 文件构建我的 cython 代码

from distutils.core import setup
from Cython.Build import cythonize
import numpy as np

setup(
    name="My Cython Project",ext_modules=cythonize("*.pyx",include_path=[np.get_include()],language="c++")
)

python setup.py build_ext --inplace

但我收到错误

error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/

但是我安装了构建工具并且我知道它们可以工作因为我可以在 VS 2019 的开发人员命令提示符中使用这些命令手动构建我的项目:

cython -a -3 --cplus Myfile.pyx
cl /LD /O2 /EHsc [ include files ] Myfile.cpp [ python 3.8 lib ]

为什么cython 认为没有安装构建工具?我需要在 PATH 中添加一些东西吗?

(我在安装了 gcc 的 macOS 机器上运行相同的项目,并且运行良好。)

Screenshot of my Visual Studio Installer Screen

解决方法

问题是 setup.py 显示的 MSVC 版本不正确。这不是您需要的 14.0。我只是自己解决了同样的问题,也适用于 Python 3.8,所以这里是步骤。

  1. 当你为 Python 编译一些东西时,你应该使用相同的编译器版本。那么让我们看看你的 Python 使用了什么编译器:

    python -c "import sys; print(sys.version)"

    我的指纹:

    3.8.1 (tags/v3.8.1:1b293b6,Dec 18 2019,23:11:46) [MSC v.1916 64 bit (AMD64)]

    所以我需要 MSVC 1916 版。

  2. 您可以在这里查看它的版本:https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B。对我来说,1916 是 Visual Studio 2017 版本 15.9 - 这可能是您真正需要的。

  3. 您到 M$ 下载 https://my.visualstudio.com/Downloads?q=Visual%20Studio%202015&pgroup= ,例如搜索“Visual Studio Community 2017(版本 15.9)”并安装它(或仅安装编译器)并享受。

附言您的所有 python 3.8 扩展可能都需要该编译器(除非您使用直接 dll 调用),并且您将需要重新编译您在 Studio 2019 中所做的代码。