Python3.7源码在windows(VS2015)下的编译和安装
下载官方源码,使用vs2015(WIN10SDK),最python3.7.0的源码进行编译,编译出不同的版本(release,debug),并配置python的运行环境(环境变量的配置)。
测试环境介绍和准备
测试环境:
操作系统:windows10
Python版本:3.7.0
VS版本:vs2015社区版(免费)
相关工具下载:
VS版本vs2015社区版(免费)
win10SDK(安装vs2015是可以选择,如果没有安装则需要独立安装)
Python3.7.0 (源码和安装文件)
 
1 下载python源码
2 下载并安装VS2015 社区版(免费,但需要注册用户)
如果VS2015安装不成功会提示如下
Cannot locate MSBuild.exe on PATH or as MSBUILD variable
3 解压python源码进入到pcbuild目录
4 运行build安装nuget
运行build批处理 会先下载nuget包管理开发工具到 externals目录中
由于网络状况不同(测试移动网络可以下载,电信不可以),在部分网络情况下可能无法下载,你可以手动下载后放到源码的externals中,或者直接用我提供的已经下载好nuget和依赖的python源码包
5 下载安装python运行环境
如果已经有了就不需要安装,但要注意后面编译扩展库的时候容易出现冲突的情况,你要知道是应为系统中还有其他python库的原因。
6 下载安装win10SDK
项目配置=》配置属性=》常规=》目标平台版本默认是win10
如果你没有安装win10sdk 需要将所有项目的目标平台版本改为你的编译器支持的版本(比如win8.1)
7 下载依赖源码
由于网络状况不同,在部分网络情况下可能无法下载,你可以手动下载后放到源码的externals中,或者直接用我提供的已经下载好nuget和依赖的python源码包
bzip2-1.0.6
openssl-bin-1.1.0h
sqlite-3.21.0.0
tcltk-8.6.8.0
xz-5.2.2
zips
zlib-1.2.11
下载路径 www.ffmpeg.club/py
8 编译python源码
资源编辑器
TRACKER : 错误 TRK0005: 未能找到: “rc.exe”。系统找不到指定的文件。
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x86
set PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x86
完成编译,编译好的python执行文件和依赖库都在
F:\Python-3.7.0\PCbuild\win32 目录下
build -c Release -p x64
build -c Release -p Win32
build -c Debug -p x64
build -c Debug -p Win32
默认32位
9 安装python
首先我的python源码路径在 F:\Python-3.7.0\
编译完后,会在F:\Python-3.7.0\ 目录下面生成一个python.bat文件,直接运行此文件即可。
如果要将python.exe配置到path中,在windows的path环境变量中添加: F:\Python-3.7.0\PCbuild\win32 ,同时还需要配置 PYTHONHOME 环境变量,设置为F:\Python-3.7.0\,这个涉及到扩展库的读取路径,不设置后面调用扩展库可能会出问题。
10 最后我们测试一下
import sys
sys.path
打印出python系统路径,看下设置是否生效
 
 相关视频教程可以观看

Python3.7源码在windows(VS2015)下的编译和安装的更多相关文章

  1. JVM(一) OpenJDK1.8源码在Ubuntu16.04下的编译

    笔者最近在学习周志明老师编写的<深入理解Java虚拟机>一书,书中第一章的实战部分就是"自己编译JDK",不过书中提到的是OpenJDK 7的编译.由于现在Java开发 ...

  2. 个人从源码理解JIT模式下angular编译AppModule的过程

    承接上文.笔者之前将一个angular项目的启动过程分为了两步: 创建平台得到 PlatformRef ,以及执行平台引用提供的方法编译根模块 AppModule .本文就将着眼于创建好的平台,从an ...

  3. [Dynamic Language] Python3.7 源码安装 ModuleNotFoundError: No module named '_ctypes' 解决记录

    Python3.7 源码安装 ModuleNotFoundError: No module named '_ctypes' 解决记录 源码安装时报错 File "/home/abeenser ...

  4. netcdf源码在windows上的编译

    作者:朱金灿 来源:http://blog.csdn.net/clever101 今天搞搞netcdf源码在windows上的编译,折腾了半天,算是搞成了,特地记录一下过程.我的目标是要生成netcd ...

  5. 【转】python:让源码更安全之将py编译成so

    python:让源码更安全之将py编译成so 应用场景 Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效. python的解释特性是将py编译为独有的二 ...

  6. Openfire4源码部署到eclipse中并编译

    Openfire4源码部署到eclipse中并编译 概述 Openfire是众所周知的基于xmpp协议的IM开源服务,所有操作,配置,监控,调试等以B/S方式进行展示,非常的方便管理员进行管理.它的强 ...

  7. mybatis源码专题(1)--------复习jdbc操作,编译mybatis源码,准备为你的简历加分吧

    本文是作者原创,版权归作者所有.若要转载,请注明出处.文章中若有错误和疏漏之处,还请各位大佬不吝指出,谢谢大家. 1.mybatis的底层是jdbc操作,我们来回顾一下,如下  运行以后的结果如下图: ...

  8. CentOS6.9下手动编译并安装Python3.7.0

    CentOS6.9默认安装的python版本为2.6.6,若想安装python3以上版本,只能手工编译安装 下面介绍Python-3.7.0版本的手动编译并安装的步骤 1.下载Python-3.7.0 ...

  9. Windows 10下mysql 64位 安装(mysql-5.7.11-winx64安装)

    Windows下mysql 64位 安装(mysql-5.7.11-winx64安装) 系统Windows10 安装包mysql-5.7.11-winx64.zip 安装过程中遇到的问题,请留意4.0 ...

随机推荐

  1. C++11 (多线程)并发编程总结

    | 线程 std::thread 创建std::thread,一般会绑定一个底层的线程.若该thread还绑定好函数对象,则即刻将该函数运行于thread的底层线程. 线程相关的很多默认是move语义 ...

  2. 求求你别用SimpleDateFormat了!

    前言   啊哈哈,标题写的比较随意了,其实呢最近在各种面试以及博客中,SimpleDateFormat出镜率确实是比较高了,为什么?其实聪明的你们肯定知道,那必须是有坑呗,是的,那我们就以案例来分析一 ...

  3. 103 - kube-scheduler源码分析 - 调度算法-寻找predicates和priorities

    scheduler的主要逻辑是predicate和priority,前者回答哪些节点可以运行pod的问题,后者回答哪个节点更合适运行pod的问题.今天我们的任务是:从主函数出发,寻找predicate ...

  4. Python 包构建教程

    目录 setuptools 和 setup.py 你所需要做的事 & 一些概念 基础概念 关于源码分发文件和二进制分发文件 示例和分发选择 pure python module package ...

  5. Docker进阶之二:Docker内部组件

    Docker内部组件 一.Namespaces 命名空间,Linux内核提供的一种对进程资源隔离的机制,例如进程,网络,挂载点等资源.    docker run -d busybox ping ba ...

  6. 根据点击事件去选取电脑中.rvt文件

    private void button_Click(object sender, RoutedEventArgs e) { //这个选出来是文件夹 //选择文件 var openFileDialog ...

  7. [TCP/IP] 计算机网络性能指标

    速率:连接在计算机网络上的主机在数字信道上传输数据位数的速率单位是 b/s kb/s mb/s gb/s带宽:数字信道所能传输的最高数据率 查看我的网卡是144Mbps吞吐量:单位时间内通过某个网络的 ...

  8. layer.photos()异步修改图片地址后显示异常

    项目中有一个图片有预览(用的layer.photos()),需要异步修改图片地址,但是成功修改后第一次预览会显示修改前的大图,第二次以后就都正常了. 尝试修改成功后再次调用layer.photos() ...

  9. http header Content-Type之常用三种

    Content-Type 用于指示资源的MIME类型 在响应头中,告诉客户端实际返回内容的类型 在请求头中,告诉服务器实际发送的数据类型 句法: Content-Type: text/html; ch ...

  10. webpack 样式表抽离成专门的单独文件并且设置版本号

    先以下的 css 的处理我们都把 mode 设置为 production. webpack4 开始使用: mini-css-extract-plugin插件, 1-3 的版本可以用: extract- ...