码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python 嵌入式打包 (图文)


    Python嵌入式打包过程

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

    目录
    • Python嵌入式打包过程
      • 下载嵌入式包
      • 解压和配置
      • 安装pip和其他依赖
      • 启动项目
        • 启动项目可能遇到的问题

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

  • 相关阅读:
    MATLAB算法实战应用案例精讲-【工具应用篇】matlab遗传算法工具箱使用方法
    U++ Slate学习笔记 ------ Editor Standalone Window
    健与美杂志健与美杂志社健与美编辑部2022年第7期目录
    Netty 高性能原因之一 采用了高性能的NIO 模式
    高性能分布式限流:Redis+Lua真香
    Apache zookeeper kafka 开启SASL安全认证
    JAVA直播购物平台计算机毕业设计Mybatis+系统+数据库+调试部署
    QT web 开发 - video -- 笔记
    DIN论文精读
    [Go WebSocket] 单房间的聊天室
  • 原文地址:https://www.cnblogs.com/Free-A/p/16835784.html
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号