Skip to content

python 嵌入式打包即 embed 版安装使用

一、下载安装

官网直接下载对应的 embed 版本的文件包,解压即可。

把解释器 python-3115-embed-amd64 和代码 program 文件夹放在同一层级,文件目录如下,后面的路径也以此为准。

二、库加载索引修改

在解压的 python 环境文件夹里找到 python312._pth(因为我下的是 3.12.7 版本,因此此处是 python312,不同版本的名称后面数字不同), 修改内容:将 import 前面的 # 去掉。完成之后,便于运行中检索到该环境。

python
# Uncomment to run site.main() automatically
# import site
import site  

三、安装 pip

下载 get-pip.py 在 python 环境文件夹内和 python.exe 在同一个文件夹内。

shell
curl -sSL https://bootstrap.pypa.io/get-pip.py -o get-pip.py

进入该文件夹,如我的解压路径为 D:\python_program\python-3115-embed-amd64 , 则进入该文件夹,在文件夹路径处输入 cmd,即可打开 cmd ,并运行以下命令:

shell
python.exe get-pip.py

会生成两个文件夹 Lib 和 Scripts。

四、配置pip阿里源(可选)

在 python 环境文件夹:D:\python_program\python-3115-embed-amd64 ,新建一个 pip.ini 文件,内容输入:

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

五、添加环境变量(可选)

这里是个可选操作,可加也可不加。加入环境变量可以减少后面pip时路径带入。这里要注意的是,如果本身配置有其他python环境,可能会带来干扰,先把本机的 python 环境变量去掉。 在环境变量 path 里增加三个路径:

  • D:\python_program\python-3115-embed-amd64
  • D:\python_program\python-3115-embed-amd64\Lib\site-packages
  • D:\python_program\python-3115-embed-amd64\Scripts

六、安装依赖包 我们需要安装依赖时,必须用嵌入式的解释器进行安装,下面是个安装pandas的范列:

shell
.\python.exe -m pip install pandas -t .\Lib\site-packages

注意:

6.1 解释器必须是嵌入式解释器.\python.exe,同时通过 -t 参数来指定三方库的位置,也就是说,必须安装到项目的目录中,而不是系统的默认开发环境目录。如果前面配置了是嵌入式解释器的环境变量,解释器就不用再输入路径,可以简化命令长度。

6.2 embed版的 python 过于精简,可能 tar 包也无法安装,可以下载 wheel 格式的直接安装。一个查找 wheel 的网址:piwheels - Package List

七、安装 Tkinter

从标准版安装包中解析出 Tkinter 文件并放入合适部位。我安装的是 python3.11.5,因此下载 python-3.11.5 的 exe 安装包, 用 UniExtract进行解包,第一层解包到 tcltk.msi 文件,再对 tcltk.msi 继续解析,得到 Lib、tcl、Dlls 和 libs 四个文件包。 把 Lib 中的三个文件夹:idlelib、tkinter 和 turtledemo 放入 D:\python_program\python-3115-embed-amd64\Lib\site-packages 中,tcl、Dlls 和 libs 三个文件夹放入 D:\python_program\python-3115-embed-amd64 中。并修改 python311._pth 文件,加入四个文件的位置索引。

python311.zip
.
#下面四个是tk的引入包放置位置,从python安装包里拆出来的,Lib中idlelib、tkinter和turtledemo放置在site-packages里
Lib/site-packages
DLLs
libs
tcl
# Uncomment to run site.main() automatically
import site

八、导入自定义模块

试了网上的很多种代码方案都没成功,忽然想到其本身就一个索引文件路径,将自定义模块的路径引入即可,省去了各种写代码等,下面是完整版的 path 文件内容,第八行是导入自定义模块。

python311.zip
.
# 下面四个是tk的引入包放置位置,从 python 安装包里拆出来的,Lib 中 idlelib、tkinter 和 turtledemo 放置在 site-packages 里
Lib/site-packages
DLLs
libs
tcl
../program # 自定义模块路径,这里用了 .. 表示 program 文件夹与解释器所在的 python-3115-embed-amd64 同级。
# Uncomment to run site.main() automatically
import site

九、编写启动脚本

bash
@echo off
chcp 65001
echo 开始运行
.\python-3115-embed-amd64\python.exe      .\program\test.py
pause

这里 chcp 命令用来声明编码,防止中文提示乱码。 注意解释器必须使用项目内置的嵌入式解释器 .\python-3115-embed-amd64\python.exe