8

不完全与编程相关,但关于我在尝试使用 python setup.py install 安装 python 包时遇到的错误。

我已经下载了 PyML 包的 tar 文件。然后提取后我做了以下步骤:

在 DOS 提示符下设置变量如下:

SET VS90COMNTOOLS=%VS110COMNTOOLS%

转到提取的 PyML 文件夹中包含 setup.py 的目录并运行:

python setup.py build

python setup.py install

但是在这两个步骤中,我都得到了如下错误,与 ext/hash_map 相关,没有找到这样的文件。

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\INCLUDE\xlocale(336):警告 C4530:使用了 C++ 异常处理程序,但未启用展开语义。指定/EHsc

e:\ajit\pyml-0.7.13.tar\dist\pyml-0.7.13\pyml\containers\ext\SparseDataSet.h(14):致命错误 C1083:无法打开包含文件:'ext/hash_map':否这样的文件或目录

错误:命令 '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\cl.exe"' 失败,退出状态为 2

我错过了什么?如何解决此错误并安装 PyML。

Python 版本:Windows 8 机器上的 win32 上的 2.7.5 MSC v.1500 32 位(英特尔)]。

PyML 版本:0.7.13

4

1 回答 1

3

首先,建议使用与构建 Python 二进制文件相同的编译器,即 VS8:

Python 2.6、2.7 和 3.1 都是使用该版本(即 2008)构建的。 由于另一个悠久的传统,Python 扩展模块必须使用与 Python 本身相同的编译器版本(更具体地说,CRT 版本)构建。因此,要为任何这些版本构建扩展模块,您需要拥有 VS 2008 或 VS 2008 Express 的副本。

所以你的下一个问题可能是“如何强制 C++ 编译器使用特定的 CRT 版本?”

其次,这不是您的解决方案,因为在 gcc 和 msvs 中包含tr1库时存在不同的 sintax,例如,请参阅此问题。而不是# include <ext/hash_map>MSVS,它必须是# include <hash_map>. 如果你坚持使用 MSVS,你最终可能会修改 PyML 代码。

可能,您可以切换到 MinGW 使用,这里是一步一步的操作方法,虽然我没有检查 PyML 是否可以这样构建。不能在 11 月 14 日之前做到这一点。

于 2013-11-10T20:38:22.977 回答