0

遵循以下说明:为 Python 构建 QuantLib(SWIG)

python setup.py build --compiler=msvc

我想知道为什么vcvarsall.bat找不到。实际上,该batch文件位于:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC

此外,我已将其复制到:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools

并最终将后一条路径添加到System variables -> PATH,没有任何改进。

Ps:在error-microsoft-visual-c-10-0-is-required-unable-to-find-vcvarsall-bat(DUPLICATE)上提出了一个类似的话题,但到目前为止,所倡导的解决方案都没有帮助我克服这个问题。

因此,我们将不胜感激任何相关的反馈。

操作系统: Windows 10

Studio:适用于 Windows 桌面的 Express 2013

提升: v.1_58_0

痛饮: v.1_6

量化库: v.1_6

IDE: PTVS v.2.2.2

提前致谢

1 - 编辑:见下面的截图(包括错误)

在此处输入图像描述

或者:

=======================================================================
C:\local\QuantLib_SWIG_1_6\Python>python setup.py build --compiler=msvc
running build
running build_py
running build_ext
building 'QuantLib._QuantLib' extension
error: Unable to find vcvarsall.bat
========================================================================

2 - 编辑:

我什至通过更新模块中的方法走得更远get_build_version()msvc9compiler.py举行

C:\Users\user\Miniconda3\Lib\distutils至:

#if majorVersion >= 13: updated
if majorVersion > 13:
    # v13 was skipped and should be v14
    majorVersion += 1
elif majorVersion == 13: #v13 no more skipped, UPDATED  on 11/13/2016   
      majorVersion -= 1 # pointing specifically to v.12

因为 myPython 3.5.2是在MSC 1900 <=> VS 2015. 但是看起来编译器找不到,因为控制台(cmd)仍然返回

error:Unable to find vcvarsall.bat

Ps:对这个安装感到非常惊讶。不得已的解决方案:安装VS2015 Community我推迟的

3 - 编辑:

set MSSdk=1
set DISTUTILS_USE_SDK=1
python setup.py build

Error:
The program can't start because mspdb120.dll is missing from your computer. 
Try reinstalling the program to fix this problem  
error: command 'C:\Program Files (x86)\Microsoft Visual Studio  
12.0\VC\bin\x86_amd64\cl.exe Failed with exit status - 10737441515

解决方案:

复制mspdb120.dllC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\x86_amd64

python setup.py build
quantlib_wrap.cpp
QuantLib/quantlib_wrap.cpp: fatal error C1902: Program database manager  
mismatch; please check your installation 
error: command 'C:\Program Files (x86)\Microsoft Visual Studio   
12.0\VC\bin\x86_amd64\cl.exe Failed with exit status 2
4

2 回答 2

0

vcvarsall.bat仅当从 Visual Studio 外部运行 Visual C/C++ 编译器时才需要。它定义了 Visual C/C++ 编译器所需的所有环境变量。不应将此批处理文件移动到默认安装的其他目录,因为这会导致环境变量设置错误。

如果需要从另一个进程调用此批处理文件而不使用完整路径,则vcvarsall.bat必须在 Windows 高级环境设置中的用户系统 PATH中定义包含的目录,或者将目录路径添加到稍后调用此批处理文件的进程的本地。 PATH

每次启动进程时,Windows 都会为新进程创建当前进程的环境变量表的副本。这意味着批处理文件中环境变量的修改仅对执行批处理文件的命令进程以及在修改localPATH后由该命令进程启动的所有进程有效。在命令进程中修改时已经运行的其他进程继续使用其未修改的本地副本运行. PATHPATHPATH

因此,如果在 Windows 的高级系统设置中修改了用户系统。 PATH只有在完全重新启动 Windows 后,此修改才会对所有已运行的进程生效。用户系统 的修改没有重新启动 Windows 仅对修改PATH从 Windows 桌面启动的进程变为活动状态,因为对于那些新进程,Windows 桌面的当前环境变量表被用作创建环境变量副本的源新工艺。

我想您已将字符串附加系统中 PATH

;%ProgramFiles(x86)%\Microsoft Visual Studio 12.0\VC

PATH仅当修改前存在的分号尚未以分号结尾时才需要开头的分号。

在对系统 进行此修改后,PATH最好重新启动 Windows 以使其对所有进程都处于活动状态。

顺便说一句:我不会将此路径附加到系统 PATH,因为系统进程不需要PATH. 如果用户环境表中当前没有,我会将其附加到用户 PATH或使用目录路径创建用户。 并且大多数情况下,将特定的目录路径附加到本地就足够了,因为对于所有作为用户进程启动的进程来说,绝对不需要这个目录路径。PATHPATH PATH

于 2016-11-12T09:57:22.613 回答
0

这可能是由于 Pythondistutils包正在寻找另一个版本的 Visual Studio。据我所知,Python 2.7 到 3.2 是用 VC++9 构建的;3.3 和 3.4 版本是用 VC++10 构建的;从 3.5 开始的 Python 版本是使用 VC++14 构建的。运行时distutils,除非您另外指定,否则它们每个都会查找相应的 VC++ 版本。因此,Python(顺便说一句,您使用的是哪个版本?)无法vcvarsall.bat从 VC++12 中找到您的,因为它没有查看该路径。

根据Python 文档,解决方法是设置环境变量DISTUTILS_USE_SDKMSSdk告知distutils环境已经设置并且不需要查找vsvarsall.bat. 之后,从 Visual Studio 的命令提示符运行脚本可能会起作用。

这就是说,可能无法保证使用 VC++ 版本编译的模块可以与使用不同版本编译的 Python 一起使用,因此您可能需要安装和使用与您的 Python 安装相对应的模块。

于 2016-11-13T16:55:58.557 回答