Python 嵌入式打包 (图文)
Python嵌入式打包过程
------------------------------------------------------------------------------ 转载请声明原作者 ------------------------------------------------------------------------------
原作者地址: https://www.cnblogs.com/Free-A/p/16835784.html
python嵌入式打包:将python环境与项目代码打包到同一个文件夹中,在其他没有项目依赖的电脑中运行项目
对比pyinstaller
对于我个人来说,嵌入式打包比pyinstaller打包成exe更容易调试。pyinstaller对于多文件的项目来说,打包后会导致文件位置改变,项目依赖不容易同时打包进去。而嵌入式打包就完美的解决了项目文件位置的改变和依赖问题。
首先看项目结构,只有一个run.py文件,需求是要将这个服务可以部署到其他windows电脑中
下载嵌入式包
点击这里,下载你想要的版本
我选择的是3.7.5这个版本,可以根据不同需求下载不同版本
解压和配置
下载后将这个zip包解压到项目同一目录
找到并进入解压后的文件夹然后编辑以.pth
或._pth
为后缀的文件
将import site取消注释并保存关闭文件
在此目录新建get-pip.py
这个文件,然后将这个页面中的所有文本复制到这个文件,注意,一定是所有文本
安装pip和其他依赖
在这里输入cmd回车
然后输入python.exe get-pip.py
警告不用管
安装完成后就会看到这两个文件夹Lib
里面装的是pip安装的包Script
里面装的是pip
这个可执行文件
在当前目录使用Script\pip.exe install xxx
在这里就可以看到你安装的第三方库了
启动项目
回到项目根目录,然后创建一个bat脚本
打开编辑
%~dp0
是求出当前脚本的绝对路径,然后后面拼接上你要使用的文件
在cmd里使用这个脚本就可以使用了
最后将这个目录打包起来,这个项目就可以在其他电脑快速使用了
启动项目可能遇到的问题
有些同学的项目可能使用的是tkinter搭建的窗口程序, 而在python3中,tkinter
这个包已经内嵌了, 但是我们刚刚下载的嵌入式python不包含tkinter
这个包
解决方案如下:
-
首先电脑中要有一个正常安装并且和我们嵌入式python的大版本一致的环境, 在这个环境中找到
tkinter
这个文件夹如图:
-
将这个文件夹复制到
embedded_distribution_folder\Lib\site-packages
目录下如图:
-
把正常目录的tcl文件夹复制到
embedded_distribution_folder
如图:
-
最后将正常
DLLs/
目录下的_tkinter.pyd
,tcl86t.dll
,tk86t.dll
这三个dll复制到embedded_distribution_folder
如图:
这样就可以解决no module named tkinter
这个错误了
感谢https://blog.csdn.net/weixin_43320381/article/details/126487822提供的解决方案