Python包安装错误

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版本:2.7.5 MSC v.1500 32位(Intel)]在Windows 8机器上运行。
PyML版本:0.7.13

没有帮助,但我有同样的问题。你解决了吗?看起来覆盖错误是PyML不支持Windows,但我很想找出如何让它工作。 - Jamie Bull
@Jamie Bull - 没有办法解决那个错误。尝试了很多方法。 - goldenmean
有解决方案了吗?我也遇到了同样的问题。 - Martin Petri Bagger
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库的语法不同,例如可以参考this question。对于MSVS而言,不是# include <ext/hash_map>,而是# include <hash_map>。如果你坚持使用MSVS,你可能最终需要修改PyML代码。
可能,你可以切换到MinGW的使用方式,这里有一个逐步操作指南,尽管我没有检查过是否可以通过这种方式构建PyML。最早也要等到11月14日之后才能完成。

如果我安装Visual Studio 8(如果我找到安装程序的话),然后重试,你是说它可能会起作用。 - goldenmean
@goldenmean 没有尝试过,但可能是的,如果你更正<ext/hash_map>为<hash_map>。我明天会有一台测试用的win8机器,然后尝试MinGW。 - alko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接