为Python 2.7构build/安装C模块时出错

我想尝试安装/编译python(版本信息)的ctools时出现以下错误:

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on Python 2.7.2 (default, Jun 24 2011, 12:22:14) [MSC v.1500 64 bit (AMD64)] on win32 
  • 操作系统:Windows 7 Professional 64位(Service Pack 1)
  • 安装:Microsoft Visual C ++ 2008速成版

错误:

 building 'deap.cTools' extension Traceback (most recent call last): File "setup.py", line 40, in <module> cmdclass = {'build_py': build_py} File "C:\Python27\lib\distutils\core.py", line 152, in setup dist.run_commands() File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands self.run_command(cmd) File "C:\Python27\lib\distutils\dist.py", line 972, in run_command cmd_obj.run() File "C:\Python27\lib\distutils\command\install.py", line 563, in run self.run_command('build') File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command self.distribution.run_command(command) File "C:\Python27\lib\distutils\dist.py", line 972, in run_command cmd_obj.run() File "C:\Python27\lib\distutils\command\build.py", line 127, in run self.run_command(cmd_name) File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command self.distribution.run_command(command) File "C:\Python27\lib\distutils\dist.py", line 972, in run_command cmd_obj.run() File "C:\Python27\lib\distutils\command\build_ext.py", line 340, in run self.build_extensions() File "C:\Python27\lib\distutils\command\build_ext.py", line 449, in build_extensions self.build_extension(ext) File "C:\Python27\lib\distutils\command\build_ext.py", line 499, in build_extension depends=ext.depends) File "C:\Python27\lib\distutils\msvc9compiler.py", line 473, in compile self.initialize() File "C:\Python27\lib\distutils\msvc9compiler.py", line 383, in initialize vc_env = query_vcvarsall(VERSION, plat_spec) File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in query_vcvarsall raise ValueError(str(list(result.keys()))) ValueError: [u'path'] 

我已经按照这里的build议安装了PyWin,但是没有帮助。 我很感谢帮助解决这个问题。

编辑

尝试安装scikit-learn时出现同样的问题

  File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in query_vcvarsall raise ValueError(str(list(result.keys()))) ValueError: [u'path'] 

我在我的博客上面总结。 http://springflex.blogspot.com/2014/02/how-to-fix-valueerror-when-trying-to.html

使用所有必需的组件安装Visual Studio 2008速成版:

  1. 安装Microsoft Visual Studio 2008速成版。 主Visual Studio 2008 Express安装程序可从(C ++安装程序名称是vcsetup.exe):

  2. 安装Microsoft Windows SDK。 Microsoft Windows SDK可通过searchMicrosoft的下载网站或通过直接转到: http : //www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A- 9BE5-FA919850BDBF& displaylang=en

  3. 要validation是否已安装了所有组件,请检查Microsoft SDK是否包含C / C ++编译器“cl.exe”的“amd64”版本。 这通常安装到

     C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\cl.exe 
  4. 复制… / VC / bin / vcvars64.bat到… / VC / bin / vcvarsamd64.bat

  5. 将… / VC / bin / vcvars64.bat复制到… / VC / bin / amd64 / vcvarsamd64.bat

由于您使用的是64位版本的Python,因此一旦安装了Microsoft Windows SDK for Windows 7和.NET Framework 3.5 SP1 (安装在安装Visual Studio 2008 SP1 Express Edition时未安装的64位编译器), 您需要将vcvars64.bat复制到vcvarsall.bat 声称的位置。

%CSIDL_PROGRAM_FILESX86%\Microsoft Visual Studio 9.0\VC\bin\ ,您需要将 vcvars64.bat 复制到amd64\vcvarsamd64.bat

请注意目标文件名中的amd部分。

微软现在发布了一个适用于Python 2.7的Visual C ++编译器 ,尽pipe它可以用于使用相同编译器的其他Python版本。 检查系统要求:需要setuptools 6.0或更高版本。 它不会使用distutils的软件包。

我遇到过这个问题,因为我没有Visual C ++ 2008的64位版本。为了解决这个问题,我通过在程序和function中的更改/删除来安装它,在这个答案之后 。

我有这个相同的问题,但只是重命名上面列出的文件(以某种不透明的方式)不适合我。 什么工作是一个更容易的解决scheme。 在开始安装之前,运行vcvarsall.bat。 这设置了正确的path,并且更容易理解。 在我的情况下,我需要一个64位版本,所以我跑了:“C:\ Program Files文件(x86)\微软Visual Studio 12.0 \ VC \ vcvarsall.bat”x64