Python PIP 在 Windows 7 上安装 64 位 MS Visual Studio 2010 Express 的路径存在问题

标签 python windows visual-studio-2010 64-bit pip

我正在使用全新安装的 python 3.3、64 位版本创建一个 virtualenv。 (注意:我在我的计算机上安装了几个 python,包括 WinPython,但想为我正在处理的几个项目设置干净和小型的 virtualenvs。WinPython 版本工作得很好。)当我使用 pip 尝试安装包时,我收到一条错误消息(如果需要,可以包括 pip 日志)。最终,错误消息的最后几行是:

File "c:\python33-b\Lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall raise ValueError(str(list(result.keys())))

ValueError: ['path']

我调查了 msvc9compiler.py 中函数 query_vcvarsall 的结果。我发现这个函数正在我的计算机上从 MS Visual Studio 10 Express 中寻找 vcvarsall 的路径。它正在寻找 4 个组件:INCLUDE=、PATH=、LIB= 和 LIBPATH=。这些是特定于 MS VS 2010 的。我的安装向该函数发送了一个“amd64”参数。它除了 PATH= 语句之外没有找到任何东西,但它确实找到了 vcvarsall.bat 文件。当我欺骗这个函数使用“x86”参数时,它找到了所有 4 条语句并且看起来好像可以正常运行。

我花了一些时间在网上研究这个。我发现 MS VS Express 2010 默认安装为 32 位。必须将其设置为 64 位运行(这意味着它将设置上面所需的语句。)显然存在错误,并且此版本未安装 64 位工具。所以我安装了 MS SDK 以安装 64 位工具。然后我发现有一个修复程序并安装了它(在下面的链接中列出)。

概述了为 64 位 VS 创建路径的几种方法。一种是在 MS VS 的命令行上运行 vcvarsall amd64。这导致一条消息说我的计算机上没有安装这些工具。这些工具位于 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 目录中。它显然正在寻找的文件是 vcvars64.bat (或类似的东西)。我有目录但没有批处理文件。 (有人建议使用 x86_amd64 方法,但它有所有相同的问题。)

第二个建议是从 SDK 命令行运行 setenv/x64。我运行了它,它似乎运行正确。但是,当我尝试通过 pip 安装软件包时,我收到了相同的错误消息。

我的问题最终是如何让 pip 顺利运行?顺便提一下,是的,在每次安装后再次测试 pip 并尝试修复此问题之前,我确实重新启动了。

以下是一些帮助我走到这一步的网站:

1) Launching a 64-bit command prompt from Visual Studio 2010

2) 为 MS VS 2010 命令行build设置路径和环境变量:
http://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx

3) VS2010 Express 和缺少 x64 编译器:
https://social.msdn.microsoft.com/Forums/en-US/e0ef4613-d90f-4eec-90db-41339ed31367/vs2010-express-and-missing-x64-compiler?forum=Vsexpressinstall

4) 修复:如果安装了 Windows SDK v7.1,则在将 Visual Studio 2010 Professional 或 Visual Studio 2010 Express 升级到 Visual Studio 2010 SP1 时删除 Visual C++ 编译器:
http://support.microsoft.com/kb/2519277

5) msvc9compiler.py:尝试使用 VC Express 编译时出现 ValueError:http://bugs.python.org/issue7511

最佳答案

最终我能够让 pip 运行。简而言之(上面的信息是多余的),这是我为 python 3.3 安装 64 位软件包所做的:

1) 已安装 Microsoft Visual C++ 2010 Express Download Here ( http://www.visualstudio.com/downloads/download-visual-studio-vs )

2) 已安装 Microsoft SDK 7.1 (Windows 7) (http://www.microsoft.com/en-us/download/details.aspx?id=8279)

3) 在 SDK 中构建/启用 64 位工具。转到开始菜单并在 Microsoft Windows SDK v7.1 文件夹下,选择 Windows SDK 7.1 命令提示符。会出现一个外壳。键入以下命令 setenv/x64.

4) 我安装了一个修复程序(不知道最终是否需要它。)(http://support.microsoft.com/kb/2519277)

5) 在 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 下创建了一个新的 vcvars64.bat 文件。在那个新的批处理文件中,我只包含了 CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd"/x64 行。我假设这样做是强制 distutils 使用 SDK 中的 C++ 编译器。在此之后正确安装了 Pip。据我了解,C++ 编译器必须与用于编译 python 3.3 的编译器相同。根据我的研究,安装的 SDK 似乎是同一个编译器,但不需要存在 original vcvars64.bat 文件。此信息来自:http://www.w7forums.com/threads/vcvarsall-bat-no-64bit-support-vcvars64-bat-missing.6606/ .如果我在此解决方案中产生问题,请纠正我。谢谢。

关于Python PIP 在 Windows 7 上安装 64 位 MS Visual Studio 2010 Express 的路径存在问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26473854/

相关文章:

python - 谁在抛出(并捕获)这个 MySQL 异常?

c++ - 为什么不消除关于此结构的填充字节的需要?

asp.net - 为什么我无法再调试我的 ASP.NET Web 项目?

visual-studio - Visual Studio 2010 启动 : "type initializer for ' <Module >' threw an exception."

python - 计算一个数据框中项目在另一个数据框中的出现次数

python - Pandas 图值以递减的方式计算条形图

python - 在 GitPython 中 checkout 或列出远程分支

windows - Puppet 以错误的顺序执行类

.net - Windows 操作系统(不是 .NET Framework 级别)中是否存在 AIO(Linux 异步 I/O)等效项?

windows - OpenSSL 和读取 openssl.conf 文件时出错