注:本文是编译老版本,有点麻烦,测试了编译新版,基本上是傻瓜是操作即可
1. python官网下载源码
https://www.python.org/ftp/python/3.5.10/Python-3.5.10.tgz
2. 编译前查看目录中相关文档
-
源码目录结构
-
看README文档
经过查阅相关文档,得知Windows下编译需要进入PCBuild,然后查看了里面的readme.txt,得知,可以执行build.bat直接编译即可,默认用的是vs2015编译。 -
使用vs2013编译,我用的是命令行编译
本地安装了python,要求3.6及以上,可以设置好环境变量HOST_PYTHON,否则会自动下载,我是自行安装的。执行如下命令,使用vs2013编译,命令选项可用build.bat -h查看,以及env.bat也有说明一些。
build.bat -c Debug -p Win32 "/p:PlatformToolset=v120"
-
修改第三方库获取路径
自带的是从svn中获取,实际发现svn中已经没有相关文件了,所以修改了下get_externals.bat,让其从git中获取,
python.props修改下第三方库的版本号:
3. 编译结果及运行测试
使用v120,即vs2013可以编译,但_lzma与_tkinter未编译,暂不用,没啥影响。
运行测试的命令,rt.bat在PCBuild目录下
rt.bat -q
4. 打包
编译完成后,到此目录下
G:\python-qt-开发工具\python\Python-3.5.10\Python-3.5.10\Tools\msi\README.txt
参看如何打包,但此处用手工的方式整理
官方 Python 的目录结构通常包含以下核心目录 :
Doc: 直接复制
Tools: 参看官方的,只复制了个别
DLLs:存放 Python 及第三方扩展的动态链接库(如 .pyd 和 .dll)。
Lib:标准库源码(.py)和编译后的字节码(pycache)。
Scripts:可执行脚本(如 pip.exe 、python.exe )。自动生成,参看下文
include:C 扩展开发所需的头文件。
libs:静态库文件(如 python35.lib )。
Scripts:生成脚本目录
使用 setuptools 或 distutils 生成 Scripts 目录:
python -m ensurepip --default-pip
python -m pip install --upgrade pip
手动整理后如下:
4. 测试pip功能
将xxx\Scripts路径设置为环境变量,可以在cmd窗口中临时设置下set path=%path%;xxx\Scripts。
执行命令:pipe install PySide2
报错:
Could not fetch URL https://pypi.python.org/simple/pipe/: There was a problem
confirming the ssl certificate: [SSL: CERTIFICATE_VERIFY_FAILED] certificate ver
ify failed (_ssl.c:728) - skipping
Could not find a version that satisfies the requirement pipe (from versions: )
No matching distribution found for pipe
- 解决步骤
检查 Python SSL 模块支持
若 Python 编译时未启用 SSL 支持,会导致 _ssl 模块缺失:
验证 SSL 模块:
import ssl
print(ssl.OPENSSL_VERSION) # 若报错或无输出,说明 SSL 未正确编译
解决方案:
更新 pip 与 certifi 证书库
SSL 证书验证依赖 certifi 库,若证书过期或缺失会导致问题:
更新 pip 和 certifi
python -m pip install --upgrade pip certifi --trusted-host pypi.python.org
成功后,会在路径Lib\site-packages\pip_vendor\certifi下生成cacert.pem文件,即证书文件
5. 测试python
测试了pip
测试了import sqlite3
测试了import sys
均正常