mee*_*der 8 packaging command-line deb python3
我有一个 Python 文件 main.py。我希望能够从中制作一个 .deb 包,然后能够通过从终端输入包名来运行 main.py。它是用 Python 3 编写的,所以包名应该运行:
python3 main.py
Run Code Online (Sandbox Code Playgroud)
我知道的唯一依赖项是 python3。
我曾尝试创建一个依赖于 python3 的 deb,然后运行python3 packagename,但我得到:
/usr/bin/python3: can't find '__main__' module in 'packagename'
Run Code Online (Sandbox Code Playgroud)
尝试使用 Debreate 创建包无法打开:
Traceback (most recent call last):
File "/usr/bin/debreate", line 12, in <module>
import wx, sys, os, debreate, db, language, shutil
File "/usr/share/debreate/debreate.py", line 23, in <module>
import os, sys, wx.lib.dialogs, db, webbrowser, language, shutil, subprocess
File "/usr/share/debreate/db.py", line 5, in <module>
import wx, wx.combo, wx.lib.mixins.listctrl as LC, os, sys, language
ImportError: No module named combo
Run Code Online (Sandbox Code Playgroud)
Syl*_*eau 11
为 python3 脚本创建 .deb 非常简单,如果您熟悉 python2 打包,只需要在 debian/rules 和 debian/control 中进行一些更改。
简而言之:
创建包源目录
mkdir myscript-0.1Run Code Online (Sandbox Code Playgroud)将您的 python3 脚本(或下面的示例脚本)复制到源目录
cp ~/myscript myscript-0.1
cd myscript-0.1Run Code Online (Sandbox Code Playgroud)
示例脚本:
#!/usr/bin/python3
if __name__ == '__main__':
print("Hello world")Run Code Online (Sandbox Code Playgroud)创建打包框架 (debian/*)
dh_make -s --indep --createorigRun Code Online (Sandbox Code Playgroud) 删除示例文件
rm debian/*.ex debian/*.EX debian/README.*Run Code Online (Sandbox Code Playgroud) 编辑 debian/control
将其内容替换为以下文本:
Source: myscript
Section: utils
Priority: optional
Maintainer: Name,
Build-Depends: debhelper (>= 9), python3
Standards-Version: 3.9.5
X-Python3-Version: >= 3.2
Package: myscript
Architecture: all
Depends: ${misc:Depends}, ${python3:Depends}
Description: insert up to 60 chars description
insert long description, indented with spaces
Run Code Online (Sandbox Code Playgroud)debian/install 必须包含要安装的脚本以及目标目录
echo myscript usr/bin > debian/installRun Code Online (Sandbox Code Playgroud) 编辑 debian/规则
将其内容替换为以下文本:
#!/usr/bin/make -f
%:
dh $@ --with=python3Run Code Online (Sandbox Code Playgroud)
注意:前面是TAB dh $@,不是四个空格!
构建包
debuild -us -ucRun Code Online (Sandbox Code Playgroud) 您将收到一些 Lintian 警告/错误,但您的包已准备好使用:
../myscript_0.1-1_all.deb
Run Code Online (Sandbox Code Playgroud)