【问题标题】:Why do I get an error on the last line of installing Pylons 1.0 with easy_install and Python 2.7 in Windows Vista 64?为什么在 Windows Vista 64 中使用 easy_install 和 Python 2.7 安装 Pylons 1.0 的最后一行出现错误?
【发布时间】:2011-04-19 03:16:15
【问题描述】:

我尝试在 Windows Vista 64 中使用 easy_install 命令将 Pylons 1.0Python 2.7 一起安装,但出现错误:

    raise ValueError(str(list(result.keys())))
ValueError: [u'path']

这里是从命令提示符到整个安装过程的链接 http://pastie.org/1190341

  • 为什么会出现此错误?
  • 我该如何解决?
  • 即使出现此错误,Pylons 也能正常工作吗?

【问题讨论】:

  • 我知道这不是一个真正的答案,但是切换到 linux,你的主机无论如何都在运行它,你不会有这些头疼的问题。我经常处理 Windows 7 64 位问题,当涉及到 ruby​​、python、java 时……地狱任何与 Web 应用程序相关的开发:除非你在某些超自然的求爱中与 .NET 相关联,否则杀死 Windows,Linux 是免费的。和 +1 使用塔架。

标签: python windows installation pylons easy-install


【解决方案1】:

您似乎无法构建 C 扩展,这对 Windows 用户来说通常很困难。尝试为 Pylons 找到一个 Windows 工具包。或者,寻求有关安装 MinGW 的帮助,以便构建扩展。

【讨论】:

  • 什么是 Pylons 的 Windows 套件?顺便说一句,我按照 Pylons 书的说明进行操作。
  • 另外,一旦我安装了 MinGW,我该如何构建扩展?安装 MinGW 后是否只是重新安装 Pylons 的问题?
【解决方案2】:

在 pylons 讨论列表中提到了一种解决方法:

它有点旧(2008 年),但由于您粘贴的输出显示编译 simplejson 失败,它似乎相关。您可以尝试按照那里的建议来看看是否有帮助。

【讨论】:

  • 我说要下载 setuptools,然后当我运行 2.7 的安装程序时,它说我需要 Python 2.7,但在注册表中找不到它。非常令人困惑,因为我有 Python 2.7。不知道注册表是什么意思。我还安装了 Python 2.6。不知道这是否妨碍了。
  • @J3M:从您的问题和粘贴的输出来看,您似乎已经有了 Python 2.7,setuptools/easy_install。因此,您无需执行这些步骤。只需执行 mingw 的第 4 步和第 5 步就足够了。
  • 好吧,我做到了,并且安装了 SimpleJSON,但我仍然遇到同样的错误。 @pyfunc 似乎知道他们在谈论如何让 disutils 使用我的编译器工具链来构建所需的 64 位扩展。如果这不起作用,我将切换到我的 Linux 发行版并将 Windows 打包在一起以用于开发目的。
【解决方案3】:

来自错误:

File "C:\Python27\Lib\distutils\msvc9compiler.py", line 295, in q
uery_vcvarsall
    raise ValueError(str(list(result.keys())))
ValueError: [u'path']

distutils 查找名为 vcvarsall.bat 的文件。它运行它并获取批处理文件设置的包含和 lib 目录。批处理文件根据您提供给它的平台设置环境。

vcvarsall.bat 应位于以下目录中:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC

创建以下目录:

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\ C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\vcvarsamd64.bat

在 vcvarsamd64.bat 中

调用 "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 /Release

以上所有这些都设置了与 disutils 一起使用的 windows 工具链。虽然你可能有 64 位 python,但 pypi 上的大多数包都带有 32 位预编译的二进制文件。 disutils 需要使用您的编译器工具链来构建 64 位扩展。这就是所有这一切的地方。

请看:

vcvarsamd64.bat 和其他批处理文件所做的是为 disutils 可以使用的库、工具等设置路径。

[编辑:在 v6 中找不到 setenv.cmd]

https://serverfault.com/questions/114998/vista-cmd-shell-thinks-its-windows-server-2008-debug

【讨论】:

  • 我创建了 2 个目录,但我不明白你最后一行的意思:调用 "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" / x64 /发布?
  • @pyfunc 感谢您解释为什么我需要采取这一步。我仍然对我需要做什么感到困惑。我确实访问了链接,看到 Olga 提到了与您所做的相同的路径,但她还提到了有关设置 INCLUDE、LIB、LIBPATH 和 PATH 环境变量以指向您要使用的工具集的相应目录的内容。她基本上在那里失去了我。我必须这样做吗?在 vcvarsamd64.bat 目录中放置什么?一个文件?
  • @J3M 7OR3:这就是作为 MS SDK 一部分的 SetEnv.cmd 的工作。查找它或搜索适用于 Windows Vista 的 Microsoft Windows SDK。只需将其添加到批处理文件中,这将为您设置所有内容。
  • @pyfunc 啊。我明白。问题是我没有 v7.1 目录,只有 v6.0A 目录。在 v6.0A 目录的 Bin 中,我没有可以运行的 SetEnv.cmd 命令。我应该在这里下载最新的 SDK 表格吗? msdn.microsoft.com/en-us/windows/bb980924.aspx 或者这会影响我的系统吗?
  • @J3M 7OR3:啊,v7.1 目录适用于 Windows 7。我认为您应该在某个地方找到它。请看这个 SO 讨论:stackoverflow.com/questions/887894/…
【解决方案4】:

如果您已经安装了 x64 Visual Studio,您可以使用开始菜单中 Visual Studio 工具中的 cmd 工具。它将为您设置环境。

【讨论】:

    【解决方案5】:

    我花了很多时间试图让 c++ 编译器在 64 位 Windows 上与 64 位 Python 一起工作。原来答案就在这里。

    http://msdn.microsoft.com/en-us/library/ms246588(v=vs.90).aspx

    再次运行 VS 2008 Professional 安装程序并确保在安装程序选项中选择了“X64 编译器和工具”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2016-08-07
      • 2015-12-25
      • 2015-02-28
      相关资源
      最近更新 更多