找回密码
 会员注册
查看: 21|回复: 0

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

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
72245
发表于 2024-9-7 17:25:17 | 显示全部楼层 |阅读模式
一、下载安装官网直接下载对应的embed版本的文件包,解压即可。官网。我这里把解释器python-3115-embed-amd64​和代码program文件夹放在同一层级,文件目录如下,后面的路径也以此为准。二、库加载索引修改在解压的python环境文件夹里找到python311._pth(因为我下的是3.11.5版本,因此此处是python311,不同版本的名称后面数字不同),修改内容:将import前面的#去掉。完成之后,便于运行中检索到该环境。#Uncommenttorunsite.main()automatically#importsite修改为:#Uncommenttorunsite.main()automaticallyimportsite12345三、安装pip下载get-pip.py​在python环境文件夹内和python.exe​在同一个文件夹内。进入该文件夹,如我的解压路径为D:\python_program\python-3115-embed-amd64​,则进入该文件夹,在文件夹路径处输入cmd,即可打开cmd,并运行以下命令:.\python.exeget-pip.py1会生成两个文件夹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.com1234五、添加环境变量(可选)这里是个可选操作,可加也可不加。加入环境变量可以减少后面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-mpipinstallpandas-t.\python-3115-embed-amd64\Lib\site-packages1注意:6.1解释器必须是嵌入式解释器.\python-3115-embed-amd64\python.exe,同时通过-t参数来指定三方库的位置,也就是说,必须安装到项目的目录中,而不是系统的默认开发环境目录。如果前面配置了是嵌入式解释器的环境变量,解释器就不用再输入路径,可以简化命令长度。6.2embed版的python过于精简,可能tar包也无法安装,可以下载wheel格式的直接安装。一个查找wheel的网址:piwheels-PackageList七、安装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-packagesDLLslibstcl#Uncommenttorunsite.main()automaticallyimportsite123456789八、导入自定义模块试了网上的很多种代码方案都没成功,忽然想到其本身就一个索引文件路径,将自定义模块的路径引入即可,省去了各种写代码等,下面是完整版的pth文件内容,第八行是导入自定义模块。python311.zip.#下面四个是tk的引入包放置位置,从python安装包里拆出来的,Lib中idlelib、tkinter和turtledemo放置在site-packages里Lib/site-packagesDLLslibstcl../program#自定义模块路径,这里用了..表示program文件夹与解释器所在的python-3115-embed-amd64同级。#Uncommenttorunsite.main()automaticallyimportsite12345678910九、编写启动脚本@echooffchcp65001echo开始运行.\python-3115-embed-amd64\python.exe.\program\test.pypause12345这里chcp命令用来声明编码,防止中文提示乱码。注意解释器必须使用项目内置的嵌入式解释器.\python-3115-embed-amd64\python.exe​十、搭建过程中出现的问题:10.1本地环境变量的干扰本地装有python环境,在第一次进行依赖包安装时总是出现异常报错,删掉本地环境配置后出错减少。重要的是一定要用嵌入式解释器.\python-3115-embed-amd64\python.exe​来进行安装运行等,否则环境干扰会混乱。10.2tar格式依赖包报错。安装tar格式依赖包时总是出错无法安装,可以直接网上查找相关的wheel包进行本地化安装。10.3图片相对路径读取失败。用相对路径的图片在IDE中会正常识别,但在这里会报路径错误,要注意路径的层次。比如我的图片是放在\program\​下的,与运行的代码py在同一文件夹,在IDE中路径为同一层级,均为当前路径,可以直接文件名引用,但在embed中运行时,因为主路径为python_program​为起点,因此图片路径需要加入上级文件路径,和运行py文件的路径方式一致,路径为:.\program\xxx.png​。我的文件结构为:\python_program-program-python-3115-embed-amd6410.4默认保存文件的路径默认保存文件在bat运行相对路径的起点,比如我默认保存的excel文件出现在python_program内。10.5VScode中模块导入失败两种处理方法:10.5.1代码顶部动态地将当前工作目录添加到sys.path中。importsysimportossys.path.append(os.getcwd())123'运行运行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"} }]}12345678910111213141516171819202122232425原文发布于:https://www.tndyx.cc/docs/程序代码/python/2024-03-30python嵌入式打包即embed版安装使用/参考:一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)_python整合包怎么做-CSDN博客Python安装包–embedded版本安装及pip配置_python_embeded-CSDN博客制作轻量级Python环境指南(包含在PythonEmbeddable版本中增加Tkinter:Tk支持)-知乎(zhihu.com)Python打包,嵌入式方式打包,而且是官方推荐的打包方式-Python嵌入式打包真的不如pyinstaller吗?_python嵌入版-CSDN博客从根本上优雅地解决VSCode中的Python模块导入问题-CSDN博客
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-11 06:03 , Processed in 0.440476 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表