首页 > Python资料 博客日记
python嵌入式打包即embed版安装使用
2024-08-07 06:00:07Python资料围观177次
一、下载安装
官网直接下载对应的embed版本的文件包,解压即可。官网。我这里把解释器python-3115-embed-amd64和代码program文件夹放在同一层级,文件目录如下,后面的路径也以此为准。
二、库加载索引修改
在解压的python环境文件夹里找到python311._pth(因为我下的是3.11.5版本,因此此处是python311,不同版本的名称后面数字不同),修改内容:将import 前面的# 去掉。完成之后,便于运行中检索到该环境。
# Uncomment to run site.main() automatically
#import site
修改为:
# Uncomment to run site.main() automatically
import site
三、安装pip
下载get-pip.py在python环境文件夹内和python.exe在同一个文件夹内。
进入该文件夹,如我的解压路径为D:\python_program\python-3115-embed-amd64,则进入该文件夹,在文件夹路径处输入cmd,即可打开cmd,并运行以下命令:
.\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的范列:
.\python-3115-embed-amd64\python.exe -m pip install pandas -t .\python-3115-embed-amd64\Lib\site-packages
注意:
6.1 解释器必须是嵌入式解释器.\python-3115-embed-amd64\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
八、导入自定义模块
试了网上的很多种代码方案都没成功,忽然想到其本身就一个索引文件路径,将自定义模块的路径引入即可,省去了各种写代码等,下面是完整版的pth文件内容,第八行是导入自定义模块。
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
九、编写启动脚本
@echo off
chcp 65001
echo 开始运行
.\python-3115-embed-amd64\python.exe .\program\test.py
pause
这里chcp命令用来声明编码,防止中文提示乱码。
注意解释器必须使用项目内置的嵌入式解释器.\python-3115-embed-amd64\python.exe
十、搭建过程中出现的问题:
10.1 本地环境变量的干扰
本地装有python环境,在第一次进行依赖包安装时总是出现异常报错,删掉本地环境配置后出错减少。重要的是一定要用嵌入式解释器.\python-3115-embed-amd64\python.exe来进行安装运行等,否则环境干扰会混乱。
10.2 tar格式依赖包报错。
安装tar格式依赖包时总是出错无法安装,可以直接网上查找相关的wheel包进行本地化安装。
10.3 图片相对路径读取失败。
用相对路径的图片在IDE中会正常识别,但在这里会报路径错误,要注意路径的层次。
比如我的图片是放在\program\下的,与运行的代码py在同一文件夹,在IDE中路径为同一层级,均为当前路径,可以直接文件名引用,但在embed中运行时,因为主路径为python_program为起点,因此图片路径需要加入上级文件路径,和运行py文件的路径方式一致,路径为:.\program\xxx.png。
我的文件结构为:
D:\python_program
-program
-python-3115-embed-amd64
10.4 默认保存文件的路径
默认保存文件在bat运行相对路径的起点,比如我默认保存的excel文件出现在python_program内。
10.5 VScode中模块导入失败
两种处理方法:
10.5.1 代码顶部动态地将当前工作目录添加到 sys.path 中。
import sys
import os
sys.path.append(os.getcwd())
10.5.2 修改 VSCode 的 settings.json 文件,设定当前解释器的环境变量
通过VSCode 的 settings.json设置了 PYTHONPATH 环境变量,确保了我的项目路径 my_project 被加入到模块搜索路径中。
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python 调试程序: 当前文件",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal"
}
// PYTHONPATH 环境变量
{
"terminal.integrated.env.windows":
{"PYTHONPATH": "/python_program"},
"terminal.integrated.env.linux":
{"PYTHONPATH": "/path/to/your/project"},
"terminal.integrated.env.osx":
{"PYTHONPATH": "/path/to/your/project"}
}
]
}
原文发布于:https://www.tndyx.cc/docs/程序代码/python/2024-03-30python嵌入式打包即embed版安装使用/
参考:
一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)_python 整合包怎么做-CSDN博客
Python安装包–embedded版本安装及pip配置_python_embeded-CSDN博客
制作轻量级Python环境指南(包含在Python Embeddable版本中增加Tkinter:Tk支持) - 知乎 (zhihu.com)
Python打包,嵌入式方式打包,而且是官方推荐的打包方式-Python嵌入式打包真的不如pyinstaller吗?_python嵌入版-CSDN博客
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj