1

我正在尝试为 Python 的 TA-Lib 构建 mrjbq7 的包装器。经过几次尝试,我很确定包装器不会构建,因为我有 Visual Studio 2010,但我的 Python 正在从 Visual Studio 2008 中寻找编译器。是否可以只获取编译器?我有一种感觉,我可能需要并排安装 Visual Studio 2008(看到另一个线程说这没有问题),但如果可能的话,我宁愿避免它。是否可以?
更多信息:
Visual Studio 2010 Express 安装了
Windows 7
Python 2.7.3
pythonxy27 也安装
了 怀疑它是编译器版本的原因:
a - 我得到的最后一个错误是对未知 _ftol2_sse_ 的引用,其他线程说这是由于使用了错误的编译器
b - MSC v. 的 sys.version 为 1500,适用于 MSVC 9.0(在解释器中使用 distutils\cygwincompiler.py 中的几行来查找此内容)

我希望这是所有必需的信息,如果需要,我会添加更多信息。

4

2 回答 2

8

您根本不需要安装 Visual Studio 来编译 Python 扩展。安装适当的 Windows SDK(对于 Python 2.7 将在此处)。然后,使用 Windows SDK 命令提示符,说服 distutils 使用 MSVC 2008:

set MSSdk=1
set DISTUTILS_USE_SDK=1 
setenv /Release

然后您应该可以通过 setup.py 安装

于 2013-01-09T04:19:34.063 回答
1

谢谢你的帮助 Luis,从那里我找到了 link.exe 1120 错误的解决方案:
1 - 从 Luis 上面的帖子中获取 Windows SDK
2 - 转到 Visual Studio 9 bin 的文件夹(我的是:C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin) 3 - 打开 Visual Studio 2008 命令提示符
4 - 将目录更改为 mrjdb7 的文件夹
5 - 在命令提示符中输入“python setup.py install”

此时,您应该会收到错误消息:“找不到 vcvarsall.bat”

6 - 复制并粘贴 vcvar32.bat
7 - 重命名为 vcvarsall.bat

在这一点上,它仍然不起作用。这是 distutils python 文件中的问题

8 - 导航到 distutils 文件夹(我的:C:\Python27\Lib\distutils)
9 - 打开 msvc9compiler.py
10 - 查找函数“def find_vcvarsall(version):”(我的:第 219 行)
11 - 接近函数末尾,查找这一行:'vcvarsall = os.path.join(productdir, "vcvarsall.bat")'(我的:第 257 行)
12 - 替换为:vcvarsall = os.path.join(productdir, r"bin\vcvarsall 。蝙蝠”)

我发现的问题是 msvc9compiler.py 从 vcvarsall.bat 文件所在的位置向上查找一个文件夹,它应该在 \bin 文件夹中查找。

于 2013-01-10T01:39:48.377 回答