Python 嵌入式打包 (图文)

Python嵌入式打包过程

------------------------------------------------------------------------------ 转载请声明原作者 ------------------------------------------------------------------------------
原作者地址: https://www.cnblogs.com/Free-A/p/16835784.html

python嵌入式打包:将python环境与项目代码打包到同一个文件夹中,在其他没有项目依赖的电脑中运行项目

对比pyinstaller

对于我个人来说,嵌入式打包比pyinstaller打包成exe更容易调试。pyinstaller对于多文件的项目来说,打包后会导致文件位置改变,项目依赖不容易同时打包进去。而嵌入式打包就完美的解决了项目文件位置的改变和依赖问题。

image-20221028110210535

首先看项目结构,只有一个run.py文件,需求是要将这个服务可以部署到其他windows电脑中

下载嵌入式包

点击这里,下载你想要的版本

我选择的是3.7.5这个版本,可以根据不同需求下载不同版本

image-20221028110744056

解压和配置

下载后将这个zip包解压到项目同一目录

image-20221028111044326

找到并进入解压后的文件夹然后编辑以.pth._pth为后缀的文件

image-20221028111519083

将import site取消注释并保存关闭文件

在此目录新建get-pip.py这个文件,然后将这个页面中的所有文本复制到这个文件,注意,一定是所有文本

image-20221028112226901

安装pip和其他依赖

image-20221028112454108

在这里输入cmd回车

然后输入python.exe get-pip.py

image-20221028112708219

警告不用管

image-20221028112812000

安装完成后就会看到这两个文件夹Lib里面装的是pip安装的包Script里面装的是pip这个可执行文件

image-20221028113125113

在当前目录使用Script\pip.exe install xxx

image-20221028130539283

在这里就可以看到你安装的第三方库了

image-20221028130631255

启动项目

回到项目根目录,然后创建一个bat脚本

image-20221028132140703

打开编辑

image-20221028132208384

%~dp0是求出当前脚本的绝对路径,然后后面拼接上你要使用的文件

在cmd里使用这个脚本就可以使用了

最后将这个目录打包起来,这个项目就可以在其他电脑快速使用了

启动项目可能遇到的问题

有些同学的项目可能使用的是tkinter搭建的窗口程序, 而在python3中,tkinter这个包已经内嵌了, 但是我们刚刚下载的嵌入式python不包含tkinter这个包

解决方案如下:

  1. 首先电脑中要有一个正常安装并且和我们嵌入式python的大版本一致的环境, 在这个环境中找到tkinter这个文件夹

    如图:

    image-20230519140023062

  2. 将这个文件夹复制到embedded_distribution_folder\Lib\site-packages目录下

    如图:

    image-20230519140243721

  3. 把正常目录的tcl文件夹复制到embedded_distribution_folder

    如图:

    image-20230519140444958

  4. 最后将正常DLLs/目录下的 _tkinter.pyd, tcl86t.dll, tk86t.dll这三个dll复制到embedded_distribution_folder

    如图:

    image-20230519140813828

这样就可以解决no module named tkinter这个错误了

感谢https://blog.csdn.net/weixin_43320381/article/details/126487822提供的解决方案

posted @ 2022-10-28 13:28  Free_A  阅读(818)  评论(0编辑  收藏  举报