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

时间:2012-11-28 01:41:40

标签: python visual-studio-2008

我在尝试为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 Express Edition

错误:

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']

我按照here的建议安装了PyWin,但没有用。我很感激帮助解决这个问题。

修改

尝试安装scikit-learn

时会出现同样的问题
  File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in query_vcvarsall
    raise ValueError(str(list(result.keys())))
ValueError: [u'path']

5 个答案:

答案 0 :(得分:20)

我在博客中总结了上述内容。 http://springflex.blogspot.com/2014/02/how-to-fix-valueerror-when-trying-to.html

使用所有必需组件安装Visual Studio 2008 Express Edition:

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

  2. 安装Microsoft Windows SDK。通过搜索Microsoft的下载站点或直接访问以下内容,可以获得Microsoft Windows SDK: http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en

  3. 要验证是否已安装所有组件,请检查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

答案 1 :(得分:18)

由于您使用的是64位版本的Python,因此一旦安装了Microsoft Windows SDK for Windows 7 and .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\开始,您需要copy vcvars64.batamd64\vcvarsamd64.bat

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

答案 2 :(得分:1)

Microsoft现在发布了Visual C++ compiler just for Python 2.7,尽管它适用于使用相同编译器的其他Python版本。检查系统要求:需要setuptools 6.0或更高版本。它不适用于使用distutils的软件包。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我遇到了同样的问题,但只是重命名上面列出的文件(以某种不透明的方式)并不适合我。什么工作是一个更容易的解决方案。只需在开始安装之前运行vcvarsall.bat。这设置了正确的路径,更容易理解。在我的情况下,我需要64位构建,所以我运行: &#34; C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ VC \ vcvarsall.bat&#34; 64