• 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提供的解决方案

  • 相关阅读:
    linux快捷操作方式
    leetcode:2089. 找出数组排序后的目标下标
    【.net core】yisha框架 SQL SERVER数据库 反向递归查询部门(子查父)
    Python测试进阶(一)
    Docker安装redis
    AdsPower RPA一些编写思路(进阶)
    什么是单臂路由技术?
    无人驾驶运用了什么技术,无人驾驶技术是
    (185)Verilog HDL:设计一个移位功能Lfsr5
    pkg 打包 nodejs
  • 原文地址:https://www.cnblogs.com/Free-A/p/16835784.html