对于Windows 7上的64位安装,Python PIP有MS Visual Studio 2010 Express的path问题

我正在创build一个干净安装的Python 3.3,64位版本的virtualenv。 (注:我在我的电脑上安装了几个包括WinPython的python安装程序,但是想要为我正在处理的几个项目设置干净和小的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的vcvarsallpath。 它正在寻找4个组件:INCLUDE =,PATH =,LIB =和LIBPATH =。 这些是特定于MS VS 2010.我的安装发送了一个“amd64”参数到这个函数。 它找不到PATH =语句,但find了vcvarsall.bat文件。 当我欺骗这个函数来使用“x86”参数时,它发现了所有这4个语句,看起来好像运行的很好。

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

有几种方法可以为64位VS创buildpath。 一个是在MS VS的命令行上运行vcvarsall amd64 。 这导致了一个消息说工具没有安装在我的电脑上。 这些工具位于C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64目录中。 它显然正在寻找的文件是vcvars64.bat(或类似的东西)。 我有目录但不是batch file。 (有一个build议使用x86_amd64方法,但它有所有相同的问题。)

第二个build议是从SDK命令行运行setenv /x64 。 我跑了,似乎运行正常。 但是,当我去我试图通过点安装包,我得到了同样的错误信息。

我的问题最终是如何让点子顺利运行? 只要提到,是的,我做了重新启动,然后在每次安装后再次testingpip,然后尝试修复此问题。

这里有一些网站,帮助我得到这一点:

1) 从Visual Studio 2010启动64位命令提示符

2)设置MS VS 2010命令行版本的path和环境variables:
http://msdn.microsoft.com/en-us/library/f2ccy3wt.aspx

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

4)FIX:如果安装了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

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

1)安装Microsoft Visual C ++ 2010 Express从这里下载 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是相同的编译器,但并不要求原始 vcvars64.bat文件存在。 这些信息来自: http : //www.w7forums.com/threads/vcvarsall-bat-no-64bit-support-vcvars64-bat-missing.6606/ 。 请纠正我,如果我在这个解决方案的道路上创建问题。 谢谢。

对我来说,执行步骤1,2和5就足够了,不需要执行步骤4:

1)安装Microsoft Visual C ++ 2010(在我的情况下不表达)

2)安装Microsoft SDK 7.1(Windows 7)

跳过3和4。

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

完成:pip3安装numpy的作品。

第五步不适合我(我正在使用VC ++ 10 Express)。 我输入setenv / x64(在正常的cmd.exe提示下运行pip不起作用)后,我终于通过在SDK命令提示符下运行pip install来得到pip的工作。

以下是我在Windows 10 x64和x64处理器上安装python 3.4.4的64位软件包的过程:

0)使用预编译的amd64 whl的一切可能,以及任何抛出错误的以下方法

1a)安装了Microsoft Visual C ++ 2010 Express

1b)通过控制面板卸载Microsoft Visual C ++ 2010 Express可再发行组件

2)安装的Microsoft SDK 7.1(Windows 10)

3)我安装了修复( http://support.microsoft.com/kb/2519277

4)在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 

5)键入后在SDK命令提示符下运行pip安装

 setenv /x64 

 set DISTUTILS_USE_SDK=1