我在 Windows 7 上使用 Python 3.4.1 64 位。当我尝试使用 pip 安装 scikit-image 时,遇到了一个常见问题:“无法找到 vcvarsall.bat”。 我确保安装了 Visual Studio 2009 和 2010 可再发行组件,并将 VS90COMNTOOLS 和 VS100COMNTOOLS 添加到环境变量中。但这没有帮助。同样的错误仍然存在。
然后我决定尝试一下 MinGW-w64。所以我安装了它。将 bin 文件夹添加到 PATH。然后创建一个包含此代码的 distutils.cfg 文件
[Build]
compiler = mingw-w64
然后我收到此错误消息:“不知道如何使用‘mingw-w64’编译器在平台‘nt’上编译 C/C++ 代码”。我应该如何解决这个问题?
P.S 我知道我可以从 Christoph Gohlke 的页面下载二进制文件,但我仍然想知道如何自己执行此操作。
你遇到的问题是
pip
和
distutils
(Python 用于构建扩展的默认工具)不能直接使用 MinGW-w64 编译器。它们主要设计用于与 Microsoft Visual C++ 编译器配合使用。
为了在 Windows 上使用 MinGW-w64 编译器来构建 Python 包,你需要采取以下步骤:
1. 安装必要的工具
- MinGW-w64: 如果你还没有,请确保你已经下载并安装了 MinGW-w64。选择与你的 Python 版本(32 位或 64 位)匹配的版本。将 MinGW-w64 的 bin 文件夹添加到你的 PATH 环境变量中。
- MSYS2: 建议安装 MSYS2,它提供了一个 Unix-like 的环境和软件包管理器,可以更轻松地管理 MinGW-w64 和其他依赖项。
-
wheel:
使用
pip install wheel
命令安装wheel
包。这将允许你构建和安装 Python 轮子文件(.whl),这些文件是 Python 包的预构建版本,可以更快地安装。
2. 创建
distutils.cfg
文件(可选)
虽然不再强制要求,但创建一个
distutils.cfg
文件可以帮助简化构建过程。在你的 Python 安装目录或用户主目录中创建一个名为
distutils.cfg
的文件,并添加以下内容:
[build]
compiler = mingw32
3. 使用环境变量
设置以下环境变量,以便
distutils
可以找到 MinGW-w64 编译器:
-
CC
: 设置为gcc
-
CXX
: 设置为g++
你可以通过在命令提示符中运行以下命令来临时设置这些变量:
set CC=gcc
set CXX=g++
4. 使用
pip
安装包
现在你可以尝试使用
pip
安装
scikit-image
包:
pip install scikit-image
pip
现在应该能够使用 MinGW-w64 编译器构建和安装包。
其他提示:
-
确保你的 MinGW-w64 安装包含所有必要的软件包,例如
gcc
、g++
、make
和python3-devel
(或类似的)。 - 你可能需要根据你的环境和特定包的要求调整这些步骤。
-
考虑使用
conda
等软件包管理器,它可以更轻松地在 Windows 上管理 Python 包及其依赖项,并支持 MinGW-w64 编译器。