【问题标题】:Using pip in windows在 windows 中使用 pip
【发布时间】:2013-05-14 20:11:48
【问题描述】:

我使用刚刚提供的链接安装了distributepip。我还安装了 Microsoft Visual C++ 2008 redistributable package。但是,当我尝试使用 pip.exe 时,我得到了

error: Unable to find vcvarsall.bat

我该如何解决这个问题?

【问题讨论】:

    标签: python windows pip


    【解决方案1】:

    安装 Microsoft Visual C++ 2008 Redistributable Package 不足以编译包。您需要安装编译器,而不仅仅是支持文件。

    有三种方法可以做到这一点:

    1. 安装 Visual C++。
    2. 使用 mingw 的 gcc 端口而不是 Visual C++。
    3. 使用 cygwin 的 gcc 端口而不是其中任何一个,并且使用基于 Python 构建的 cygwin 而不是原生的。

    如果您想使用选项 1,您需要安装 Visual C++ 本身。免费版本应该和付费版本一样工作,只要你不打算构建二进制包来重新分发给其他人。不幸的是,我不确定在哪里可以找到 2008 版本了。截至 2013 年 5 月,the download page 只有 2010 年和 2012 年。

    当您安装它时,它将创建一个名为vcvarsall.bat(不是vcvarshall.bat!)的批处理文件,并让您可以选择将该批处理文件放入您的PATH。运行该批处理文件会设置一个 DOS 提示符,以便使用该版本的 Visual C++ 进行构建。 (如果您有多个版本的 Visual C++ 或其他编译器,这很方便。)如果您跳过该选项,则必须手动执行。

    This question 展示了如何将较新的 Visual Studio 与较旧的 Python 一起使用,还展示了如何将 distutils 指向不在您的 PATH 上的 vcvarsall.bat,并提供指向许多其他相关问题和博客文章的链接.


    许多人发现选项 2 更简单。安装 mingw,修改环境中的 PATH 以包含 C:\MinGW\bin(或您选择安装它的任何位置),并在运行 setup.py 脚本时传递 -c mingw32

    问题在于它没有清楚地记录如何告诉easy_installpip 使用mingw 而不是VC++。为此,您需要找到或创建一个distutils.cfg 文件,在其中找到或创建一个[build] 部分,然后添加compiler=mingw32。不是太难。 This blog post 看起来解释得很好,或者参见this answer


    选项 3 是迄今为止最简单的。安装cygwin,告诉它安装Python和gcc包,就大功告成了。

    问题是你没有原生的 Windows Python,你有一个在 Windows 之上的假 Unix 环境中运行的 Unix Python。如果你喜欢 Cygwin,你会喜欢这个;否则,你不会。

    【讨论】:

    • 谢谢。我选择了选项 2,并尝试了“pip.exe install cython”。但是我收到错误“C:\MinGW\bin\gcc.exe -mno-cygwin -mdll -O -Wall -IC:\Python27\include -IC:\Pytho n27\PC -c c:\users\marshall\appdata \local\temp\pip-build-clifford\cython\Cython\ Plex\Scanners.c -o c:\users\marshall\appdata\local\temp\pip-build-marshall\cython\cython\plex\scanners.o gcc : 错误:无法识别的命令行选项 '-mno-cygwin' 错误:命令 'gcc' 失败,退出状态为 1"
    • 显然这是 python 中的一个问题,因为 gcc 4.7.0 删除了这个选项。答案是编辑文件 C:\Python27\Lib\distutils\cygwinccompiler.py 并在你看到的任何地方删除 -mno-cygwin 选项。
    • Visual C++ 2008 express 的网络安装程序可以在这里找到:go.microsoft.com/?linkid=7729279 - 至少现在是这样。
    • @mwotton 你拯救了我的一天!现在 M2Crypto 终于编译好了!
    【解决方案2】:

    只有具有CPython 扩展名的包(或包的依赖项之一)才会收到此类错误。内部点:

    • 下载源码
    • 运行distutilspython setup install
    • install 准备安装文件并尝试在 windows 环境中构建 CPython 扩展
    • windows 环境调用 MS Visual Studio vcvarsall.bat 脚本,该脚本设置 DOS 环境变量以在 shell 中启用 MS Visual Studio 的 C 编译器
    • 如果未找到 vcvarsall.bat - 您将收到此消息

    通常的解决方案

    对于具有CPython 扩展名的可在Windows 上移植的python 库,通常有windows 二进制包,可从pypi 或库网站下载。

    在这种情况下,通过下载并运行 windows 二进制包来安装库更合适(并且轻松)。

    pipAdd support for installation of binary distutils packages on Windows 的功能请求。

    新方法 - 轮子

    感谢@warren-p 的评论:该功能请求已被 PIP 中的 Wheels 支持取代。

    官方描述:轮子是一个 ZIP 格式的存档文件,具有特殊格式的文件名和 .whl 扩展名。

    据我了解,如果有扩展名为 .whl 的 windows 二进制包,那么首先安装轮子:

    # Make sure you have the latest pip that supports wheel
    pip install --upgrade pip
    pip install wheel  
    

    然后像这样安装 .whl:

    pip install full-path-or-url-to-your-library.whl
    

    参考资料:

    【讨论】:

    【解决方案3】:

    您可以从

    下载 Visual Studio 2008 Express SP1

    http://visual-studio-2008.en.malavida.com/

    您可以取消选择它提供的两个添加到浏览器选项。

    【讨论】:

      【解决方案4】:
      猜你喜欢
      • 2021-10-02
      • 1970-01-01
      • 2016-06-18
      • 2017-07-27
      • 2017-08-20
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多