首页 > 编程问答 >如何在 Windows 7 上使用 pip 使用 MinGW-w64 编译器安装包?

如何在 Windows 7 上使用 pip 使用 MinGW-w64 编译器安装包?

时间:2024-07-29 06:23:40浏览次数:12  
标签:python python-3.x pip distutils

我在 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 编译器。

标签:python,python-3.x,pip,distutils
From: 25239339

相关文章

  • Python Discord Bot 的应用程序命令的区域设置名称(多语言别名)
    如何根据用户的语言设置,使应用程序命令的名称具有不同的名称例如,如果一个用户将其discord的语言设置为英语,则用户可以看到英语的应用程序命令名称。另一方面,如果另一个用户将其不和谐语言设置为法语,则用户可以看到法语中的相同应用程序命令的名称。为此,我尝试使用ap......
  • 如何在Python中添加热键?
    我正在为游戏制作一个机器人,我想在按下热键时调用该函数。我已经尝试了一些解决方案,但效果不佳。这是我的代码:defstart():whileTrue:ifkeyboard.is_pressed('alt+s'):break...defmain():whileTrue:ifkeyboard.is_pr......
  • 在Python中解压文件
    我通读了zipfile文档,但不明白如何解压缩文件,只了解如何压缩文件。如何将zip文件的所有内容解压缩到同一目录中?importzipfilewithzipfile.ZipFile('your_zip_file.zip','r')aszip_ref:zip_ref.extractall('target_directory')将......
  • 如何在Python中从RSA公钥中提取N和E?
    我有一个RSA公钥,看起来像-----BEGINPUBLICKEY-----MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAvm0WYXg6mJc5GOWJ+5jkhtbBOe0gyTlujRER++cvKOxbIdg8So3mV1eASEHxqSnp5lGa8R9Pyxz3iaZpBCBBvDB7Fbbe5koVTmt+K06o96ki1/4NbHGyRVL/x5fFiVuTVfmk+GZNakH5dXDq0fwvJyVmUtGYA......
  • Swagger、Docker、Python-Flask: : https://editor.swagger.io/ 生成服务器 python-fl
    在https://editor.swagger.io/上您可以粘贴一些json/yaml。我正在将此作为JSON进行测试(不要转换为YAML):{"swagger":"2.0","info":{"version":"1.0","title":"OurfirstgeneratedRES......
  • 使用 Matplotlib 的 Python 代码中出现意外的控制流
    Ubuntu22.04上的此Python3.12代码的行为符合预期,除非我按q或ESC键退出。代码如下:importnumpyasnp,matplotlib.pyplotaspltfrompathlibimportPathfromcollectionsimportnamedtuplefromskimage.ioimportimreadfrommatplotlib.widgets......
  • 参考 - Python 类型提示
    这是什么?这是与在Python中使用类型提示主题相关的问题和答案的集合。这个问题本身就是一个社区维基;欢迎大家参与维护。这是为什么?Python类型提示是一个不断增长的话题,因此许多(可能的)新问题已经被提出,其中许多甚至已经有了答案。该集合有助于查找现有内容。范......
  • 我的 Python 程序中解决 UVa 860 的运行时错误 - 熵文本分析器
    我正在尝试为UVa860编写一个解决方案,但是当我通过vJudge发送它时,它一直显示“运行时错误”。fromsysimportstdinimportmathdefmain():end_of_input=Falselambda_words=0dictionary={}text_entropy=0relative_entropy=0whilenotend_of_in......
  • Python进度条
    当我的脚本正在执行某些可能需要时间的任务时,如何使用进度条?例如,一个需要一些时间才能完成并在完成后返回True的函数。如何在函数执行期间显示进度条?请注意,我需要实时显示进度条,所以我不知道该怎么办。我需要thread为此吗?我不知道。现在在执行函数......
  • 此 Python 代码给出了超出时间限制的错误。由于其中使用的输入或输出方法而在其中传递
    N=int(input())L1=input()L=L1.split()s=set(L)d={}foreins:d[e]=L.count(e)print(d)max_value=max(d.values())print(max_value)L=list(d.values())print(L)res=L.count(max_value)print(res)/在提供正常输入时,它运行良好,但在提......