日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Ubuntu20.04 pycharm python打包制作DEB包详细步骤及雷区

發布時間:2025/3/11 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu20.04 pycharm python打包制作DEB包详细步骤及雷区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

記錄一次Deb打包過程及踩雷警示

最近寫了一個python的小程序,希望能打包成deb文件,便于將寫好的軟件安裝 在其他沒有安裝工作環境的電腦上,把這安裝deb后可以在應用列表和桌面看到。下面介紹一個python工程的打包過程, 分為兩大步驟:

1、將工程打包生成一個可執行文件;
2、將可執行文件和工程依賴的所有文件制作成.deb安裝包。

需要準備的

1、源代碼(前提要可執行)或者編譯好的程序,這里只介紹python
2、能用的ubuntu系統
3、用戶的密碼
4、圖標(一定要有!)

這里給大家介紹一個案例,包名叫做debpacktest,整個過程中所有用到名字的地方,統統都是這個名字。xxx也指代這個名字。

一、 將工程打包生成一個可執行文件
1.在pycharm中安裝pyinstaller

2.在工作代碼區,鼠標右鍵調出terminal終端,輸入命令pyinstaller -F -w main.py 點擊回車,會看到成功提示(main.py 是主文件名)

備注:

pyinstaller -F main.py 打包ubuntu下的可執行文件 pyinstaller -F -w main.py 不帶控制臺的打包 pyinstaller -F -w -i Aplication.ico main.py 打包指定ubuntu下的可執行文件的圖標打包

3.將工程里面除了.py文件(作用:保留源碼)外的所有依賴文件(如數據文件)按原來在工程中的目錄 拷貝到當前目錄的/test/dist/test下,在其他工作目錄下運行可執行文件(如/usr/test(絕對路徑)),看是否可以執行,若不能運行,可能是以下原因:
(1)、路徑中有漢字;
(2)、你的python程序中有路徑不會隨文件目錄變化而變化;
(3)、依賴文件沒有拷貝或拷貝不完整。

二、將可執行文件和工程依賴的所有文件制作成.deb安裝包。

1.建立目錄架構

程序是要放到一個系統中的各個部分去的。其實這個并沒有那么嚴格,不一定全都要擠到/usr/lib里邊去,放到/home等都沒有太大的問題。這里你需要用一個文件夾模擬出linux的文件架構,只需要模擬你程序需要安放到的位置就行了。比如說我有可執行文件和工程依賴的所有文件,放到的文件夾是/usr/lib/debpacktest。那么我只需要建一個大文件夾(命名隨意),cd到這個大文件夾,直接一個mkdir新建/usr /lib /debpacktest,然后把可執行文件和工程依賴的所有文件丟進debpacktest文件夾。下面羅列出來的是目錄結構,多余出來的是需要手工添加的deb包配置文件(夾)。(share部分和DEBIAN部分)

├── debpackTotal │ ├── DEBIAN(這個目錄要添加control文件(無后綴名),可選添加postinst等) │ └── usr │ ├── lib │ │ └── debpacktest(預定要安裝到系統中的可執行文件和工程依賴的所有文件) │ │ └── main等 │ └── share │ ├── applications(在這里添加xxx.desktop,使應用中能夠加載出你的應用) │ └── icons(你的圖標,這個必須有) **踩雷一**

在DEBIAN目錄下制作control文件

cd到DEBIAN,在命令行輸入(當然,你用gedit也行)

vim control

在其中粘貼:

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

Package:你的包名
Version:版本
Architecture:架構
Maintainer:維護者
Description:解釋

括號后的內容 根據你自己的需要去改變
然后保存

2.在/usr/share/applications下制作桌面圖標 debpacktest.desktop

這一步非常重要 關系到你能否在應用列表出現你自己的程序,清一定按照下面的步驟完成。
首先在/usr/share/applications/下新建debpacktest.desktop這個文件。
里面的內容是:

[Desktop Entry] Name=debpacktest Comment=An example Exec=/usr/lib/debpacktest/main Icon=/usr/share/icons/debpacktest.ico Terminal=false Type=Application X-Ubuntu-Touch=true Categories=Development

Name:你的包名

Comment:評論 注釋

Exec:這里非常重要!這里如果不對 會直接導致這個圖標沒有辦法顯示。對于python來說,一定要具體到執行哪個可執行文件。這里執行的是main。不要忘記chmod +x 文件名,給main加上可執行權限(用pyinstaller打包生成都有可執行權限)。踩雷二

Icon:圖標,不可以忽略 踩雷三

Terminal:是否在終端執行。這里是QtPy窗體,不需要。如果需要的話可以參考vim的desktop文件 踩雷四

X-Ubuntu-Touch這個暫時我也不知道是什么用的

Categories:分類。Categories可以取以下值,表示程序的啟動快捷方式放在哪個菜單下:應用菜Application; Network放在 互聯網 (Internet);辦公 Office;圖形 Graphics;聲音和視AudioVideo; 系統工具 System;編程 Development; 附件Utility;影音 AudioVideo;游戲 Game;首 選項 Settings(GNOME;GTK;Settings;HardwareSettings;); 系統管理System。

剩下的東西 都不要動 都不要動
文件不能有多余的空格! 踩雷五
desktop文件要有可執行權限!

為一個文件添加可執行權限

chmod +x filename

3.打包

到這里,一個基本的deb軟件包就大功告成了。
我們返回到debpackTotal的上級目錄。我們執行

sudo dpkg -b debpackTotal debpacktest_1.0.0_amd64.deb

包的命名要符合規范,我這里是隨便打的。
檢驗的話,可以輸入(安裝deb包)

sudo dpkg -i debpacktest_1.0.0_amd64.deb

在我的ubuntu機器上,運行很完美,我在應用列表里看到了我的程序。
如果要卸載,請執行

sudo dpkg -r debpacktest

注意 這里面的參數 是包名,并非包的文件名,就是一開始我讓你們注意的那個全局命名。

關于postinst文件(即制作桌面圖標)

cd到DEBIAN目錄,新建postinst文件,沒有后綴。這個文件是在安裝完包以后執行的腳本
復制以下內容:

#!/bin/bash sudo cp /usr/share/applications/debpacktest.desktop ~/桌面 echo POST INSTALLATION FUNCTION EXECUTED

這里是在包安裝完成后,執行代碼,將desktop文件復制到桌面。不同語言的發行版需要注意桌面的路徑。踩雷六
postinst要有可執行權限。踩雷七

重新打包,安裝,檢驗,發現桌面上多了個東東,是我們復制過去的文件,但并沒有顯示圖標。
我們需要右擊它,選擇允許執行。你想要的結果便出現了。

總結:
以上就是簡單制作一個基本的deb文件的全部步驟以及部分擴展。需要耐心。Enjoy it.

GLIBC問題:
這兩天我在本公司服務器上(Linux)打包Python代碼,然后拷貝到我自己的虛擬機上就無法執行,報錯內容如下:

[3513] Error loading Python lib ‘/tmp/_MEIwj9Y1X/libpython3.6m.so.1.0’: dlopen: /lib64/libc.so.6: version `GLIBC_2.25’ not found (required by /tmp/_MEIwj9Y1X/libpython3.6m.so.1.0)

大體意思是:libpython3.6m.so.1.0這個依賴庫需要依賴2.25版本或者以上的GLIBC。于是我在命令終端

ldd --version

查了一下我自己虛擬機的GLIBC和公司服務器上的GLIBC 發現我自己的虛擬機上是2.17版本,公司服務器上是2.27版本 于是原因就明白了

原因是:打包時的GLIBC是高版本,因此打包出來的可執行文件所依賴的也是高版本,所以在GLIBC低版本的 Linux系統中就無法執行

我的解決方法:在低版本GLIBC的系統上打包好,這樣就都可以運行了

參考&引用:
https://my.oschina.net/u/4323266/blog/4537886
https://blog.csdn.net/yangjian131/article/details/78078853
https://blog.csdn.net/wangziyang777/article/details/107365606

總結

以上是生活随笔為你收集整理的Ubuntu20.04 pycharm python打包制作DEB包详细步骤及雷区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。