vs2017配置python_[原创] 为 python 设置 Visual Studio 2017 编译环境

右键打开VS2017的命令行编译环境目录,如下,有多个cmd编译环境可选

x64 Native Tools Command Prompt for VS 2017.lnk

x64_x86 Cross Tools Command Prompt for VS 2017.lnk

x86 Native Tools Command Prompt for VS 2017.lnk

x86_x64 Cross Tools Command Prompt for VS 2017.lnk

对于32位python,我们选择

x86 Native Tools Command Prompt for VS 2017.lnk,其他同理;

右键》属性》目标,我们可得到编译环境初始化文件"D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvars32.bat"

将Buid目录复制到爷爷级目录(

D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC

)下,改名为VC

设置

VS90COMNTOOLS=D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build ,

即可使用pip编译安装功能

-------

-------

-------

-------

-------

-------

------- ------- ------- ------- ------- -------

基本情形与原理

pip install crc16

或安装类似需要编译的模块时,若没有安装配置VS2008,会报错

“error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it fromhttp://aka.ms/vcpython27”

如今距离VS2008已十年,个别与VS2008配置相差无几的VS版本,可以直接在cmd里先设置

VS90COMNTOOLS,即可使用pip 编译安装

set VS90COMNTOOLS = %VS**

COMNTOOLS%

其中**为已安装的VS版本,可以在cmd编译环境里set查看。

对于VS2017,简单设置

set VS90COMNTOOLS = %

VS150COMNTOOLS

%后并不可行。

一来,VS2017提供多种跨平台编译环境,需要具体选定,二来其环境目录尤其时varargall.bat文件相对位置与VS2008有出入。

导致python搜索注册表或vcvarsall.bat编译环境初始化文件失败。

通过阅读python的Lib\distutils\msvc9compiler.py模块,我们可知:

VS_BASE = r"Software\Microsoft\VisualStudio\%0.1f"

vsbase = VS_BASE % 9.0

Reg.get_value(r"%s\Setup\VC" % vsbase,"productdir")

它会依次搜索注册表主键

HKEYS = (_winreg.HKEY_USERS,

_winreg.HKEY_CURRENT_USER,

_winreg.HKEY_LOCAL_MACHINE,

_winreg.HKEY_CLASSES_ROOT)

下"Software\Microsoft\VisualStudio\9.0\Setup\VC"项的"productdir"配置值,

然后指定编译环境初始化文件为"productdir"配置值下的vcvarsall.bat,

所以另一种方法我们也可以在任意主键上述路径添加productdir配置值,配置为我们

所安装的VS的的vcvarsall.bat文件所在目录。这个会被python pip优先选用。

对于64-bit python,任意注册表主键下建立

Software\Wow6432Node\Microsoft\VisualStudio\9.0\Setup\VC

productdir = D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build

对于32-bit python,,任意注册表主键下建立

Software\Microsoft\VisualStudio\9.0\Setup\VC

productdir = D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build

当没有相应注册表项配置值时,在msvc9compiler.py会使用环境变量VS90COMNTOOLS指定的目录。

当应当注意到,VS90COMNTOOLS指定的目录并不是productdir目录,

toolskey = "VS%0.f0COMNTOOLS" % 9.0 (即VS90COMNTOOLS)

toolsdir = os.environ.get(toolskey, None)

productdir = os.path.join(toolsdir, os.pardir, os.pardir, "VC")

由productdir生成算法可知,

D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\..\..\VC

在VS2017中就是D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\VC,

但D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC下并没有VC目录(严格说时没有包含vcvarsall.bat的VC目录),

所以我们键包含vcvarsall.bat的Build目录复制到目标位置,并改名为VC。

参考链接

import base64

base64.b64decode('aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpd3VnYW5nNDMyMTAvYXJ0aWNsZS9kZXRhaWxzLzUwNzMyOTIw')

最后于 2018-9-3 18:08

被tritium编辑

,原因: 添加 32-bit与64-bit python 配置 2017 编译环境的 注册表键配置方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值