如何为Windows平台Python嵌入式安装包添加第三方依赖包?
给Python嵌入式发行版添加第三方依赖的实操方案
我之前也折腾过用Python嵌入式包做轻量化分发的需求,刚好踩过几个坑,给你分享几个靠谱的实现步骤:
第一步:先给嵌入式Python装上pip
嵌入式包默认是不带pip的,这是安装依赖的前提:
- 把嵌入式ZIP包解压到本地文件夹,找到里面的
python.exe - 下载
get-pip.py,放到这个解压后的文件夹里 - 打开命令行,切换到该目录,运行:
python get-pip.py,等待pip安装完成
第二步:安装第三方依赖到嵌入式环境
这里有两种常用方式,按需选择:
方式一:直接用pip安装(适合纯Python或预编译好的依赖)
- 保持命令行在嵌入式Python的根目录,运行:
python -m pip install 你的依赖包名,比如python -m pip install requests - 划重点:如果是需要编译的依赖(比如numpy、pandas这类),不要直接用pip安装,大概率会编译失败。建议去PyPI下载对应Windows 64位、Python3.6版本的预编译wheel文件(后缀是
.whl),然后用python -m pip install 本地wheel文件的完整路径来安装,避免编译问题
方式二:在常规Python环境打包后复制(适合复杂依赖场景)
如果你的依赖涉及很多编译组件,或者不想在嵌入式环境里折腾,可以这么做:
- 在本地装一个和嵌入式版本完全一致的Python(比如3.6.5 64位)
- 运行:
pip install --target=./temp_deps 你的依赖包名,把依赖安装到临时文件夹temp_deps里 - 把
temp_deps里的所有文件和文件夹,复制到嵌入式Python目录下的Lib/site-packages文件夹中 - 额外注意:有些依赖会附带动态链接库(
.dll文件),如果运行脚本时提示找不到dll,要把这些dll复制到嵌入式Python的根目录(和python.exe同目录)
第三步:配置嵌入式Python的依赖路径
- 解压后的嵌入式文件夹里有个
python36._pth文件(对应3.6版本),用记事本打开它 - 找到
#Lib/site-packages这一行,把前面的#删掉,保存文件。这样Python启动时才会扫描site-packages目录下的第三方依赖
第四步:打包分发
- 把嵌入式Python的整个文件夹、你的脚本文件放在同一目录下
- 可以用7-Zip等工具打包成自解压压缩包,用户双击就能自动解压运行;或者直接打包成ZIP,用户解压后运行
python 你的脚本名.py即可 - 如果想让用户更方便,写个简单的批处理文件(比如
run_script.bat),内容如下:
@echo off python your_script.py pause
把这个bat文件放在根目录,用户双击就能直接运行你的脚本
避坑提醒
- 必须保证安装依赖的Python版本和嵌入式版本完全一致(包括位数、小版本号),否则会出现奇怪的兼容性错误
- 部分依赖需要系统安装VC运行库,如果用户运行时提示缺失dll,记得提醒他们安装对应版本的VC Redistributable包
内容的提问来源于stack exchange,提问作者feetwet




