ubuntu下使用python生成.deb安装包

前一节介绍看在windows下python生成安装包的方法windows下使用python生成安装包(可实现安装和卸载等).
在ubuntu系统下,安装包一般都是.deb格式,只有这样才能实现在系统上的安装和卸载.那么怎么把python代码转换成.deb包呢?
实现步骤如下:
一.使用pyinstaller 把python代码转成可执行文件
二.使用dpkg工具,把可执行程序和依赖文件打包成.deb文件.
具体实现过程如下:

一.使用pyinstaller 把python代码转换成可执行文件

首先安装:

pip install pyinstaller
#检查pyinstaller安装成功与否:
#只需要执行如下命令:
pyinstaller -v

这里注意其版本,最新的版本生成共享库(4.3版本),较低的版本生成的是可执行程序(3.6版本),可根据需要制定版本安装.
pyinstaller参数作用
-F 表示生成单个可执行文件
-D –onedir 创建一个目录,包含可执行程序,但会依赖很多文件(默认选项)
-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧
-c –console, –nowindowed 使用控制台,无界面(默认)
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标,这个ico图标可以在网上使用jpg或者png图片在线生成.
其他参数,可以通过pyinstaller --help查看
开始打包
进入python需要打包的脚本所在目录,然后执行下面的命令即可:
pyinstaller -F pintu.py -i gyx1.ico -w
打包结果
打包完成后,进入到当前目录下,会发现多了__pycache__、build、dist、nhdz.spec这四个文件夹或者文件,其中打包好的可执行程序在dist目录下面,进入即可看到,可以把他拷贝到其他地方直接使用,如下图所示,是打包完成后的目录:
在这里插入图片描述
在这里插入图片描述
进入dist文件,其中resources是后来自己拷贝进去的,因为需要从里面读文件,点击生成的可执行程序即可运行.

二.使用dpkg工具,把可执行程序和依赖文件打包成.deb文件

在这一步,就是要将生成的可执行程序和依赖的文件打包成.deb文件,用来安装和卸载.
程序是要放到一个系统中的各个部分去的.
因此依次建立下面的文件夹和文件.文件组织结构如下.

pintu_deb/
├── DEBIAN
│   └── control
└── usr
    ├── lib
    │   └── pintugame
    │       ├── pintu  #可执行程序
    │       └── resources#依赖的文件
    │           ├── font
    │           │   └── simhei.ttf
    │           └── pictures
    │               ├── 04.jpg
    │               ├── 06.jpg
    │               ├── 1120500964.jpg
    │               ├── 5.jpg
    │               ├── 微信图片_20210617160545.jpg
    │               ├── 微信图片_20210617160622.jpg
    │               ├── 微信图片_20210617160628.jpg
    │               ├── 微信图片_20210617160633.jpg
    │               ├── 微信图片_20210617160638.jpg
    │               ├── 微信图片_20210617160644.jpg
    │               ├── 微信图片_20210617160648.jpg
    │               ├── 微信图片_20210617160652.jpg
    │               ├── 微信图片_20210617160656.jpg
    │               ├── 微信图片_20210617160702.jpg
    │               └── 微信图片_20210617160706.jpg
    └── share
        ├── applications
        │   └── pintugame.desktop
        └── icons
            └── gyx.ico

这是使用一个文件夹模拟出linux的文件架构。比如说我有可执行文件和工程依赖的所有文件,放到文件夹/usr/lib/pintugame里面。那么只需要把可执行文件和工程依赖的所有文件丢进pintugame文件夹。多余出来的是需要手工添加的deb包配置文件(夹),(share部分和DEBIAN部分).
如图所示:
在这里插入图片描述
其中各文件的内容添加如下:
打开control文件粘贴:

Package: debpacktest
Version: 1.0.0
Architecture: amd64
Maintainer: gao
Description: just a test

Package:你的包名
Version:版本
Architecture:架构
Maintainer:维护者
Description:解释
括号后的内容 根据你自己的需要去改变
然后保存.

在/usr/share/applications下制作桌面图标 pintugame.desktop,

打开或者创建文件:

sudo gedit pintugame.desktop

这一步非常重要 关系到你能否在应用列表出现你自己的程序,清一定按照下面的步骤完成。

填写的内容是(注释不要):

[Desktop Entry]
Name=PintuGame
Comment=game
Path=/usr/lib/pintugame   #表示可执行程序读取的依赖文件所在的路径,不加的话,会找不到这个resoures,导致无法运行,这个尤其要注意填写.
Exec=/usr/lib/pintugame/pintu #可执行文件的.
Icon=/usr/share/icons/gyx.ico #程序图标
Terminal=false   #是否运行同时打开终端
Type=Application    
X-Ubuntu-Touch=true
Categories=Game  #分类。Categories可以取以下值,表示程序的启动快捷方式放在哪个菜单下:应用 Application;Network互联(Internet);办公 Office;图形 Graphics;声音和视AudioVideo; 系统工具 System;编程 Development; 附件 Utility;影音 AudioVideo;游戏 Game;首 选项 Settings(GNOME;GTK;Settings;HardwareSettings;); 系统管理System。
Name[en_US]=PintuGame  #运行desktop显示的名字.

现在就可以进行调试这个desktop文件的可行性了,点击这个文件右键打开属性,设置权限为可执行文件,如下图,
在这里插入图片描述

点击图标,如果正常运行了,那就可以进行下一步打包成.deb文件了.
执行如下命令,将整个文件打包成.deb文件.
sudo dpkg -b pintu_deb pintuigame_1.0.0_amd64.deb
包的命名要符合规范。
检验的话,可以输入(安装deb包)
sudo dpkg -i pintuigame_1.0.0_amd64.deb
在我的ubuntu机器上,运行很完美,我在应用列表里看到了我的程序。
如果要卸载,请执行
sudo dpkg -r pingtugame (这个pintugame是lib下的那个文件夹名)

现在安装完之后可以去本机电脑上看到pingtugame这个包被安装到了/usr/lib下,
pintugame.desktop被安装到了/usr/share/applications下,如图所示.

在这里插入图片描述
在这里插入图片描述
至此转换完毕.
要注意GLIBC版本问题,一般来说要想提高兼容性,最好是在ubuntu系统低版本上生成比较好,因为高版本系统的GLIBC较高,而生成.deb包依赖GLIBC,低版本系统一般支持不了高版本GLIBC,所以会导致在低版本上无法运行.

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能学习者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值