我有一个 Python 文件 main.py。我希望能够从中创建一个 .deb 包,然后能够通过从终端输入包名称来运行 main.py。它是用 Python 3 编写的,因此包名称应该运行:
python3 main.py
我所知道的唯一依赖项是 python3。
我尝试创建一个具有 python3 依赖项的 deb,然后运行python3 packagename
,但是得到:
/usr/bin/python3: can't find '__main__' module in 'packagename'
尝试使用 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
答案1
为 python3 脚本创建 .deb 非常简单,如果您熟悉 python2 打包,则只需要在 debian/rules 和 debian/control 中进行一些更改。
简而言之:
创建包源目录
mkdir myscript-0.1
将您的 python3 脚本(或下面的示例脚本)复制到源目录
cp ~/myscript myscript-0.1 cd myscript-0.1
示例脚本:
#!/usr/bin/python3 if __name__ == '__main__': print("Hello world")
创建包装骨架 (debian/*)
dh_make -s --indep --createorig
删除示例文件
rm debian/*.ex debian/*.EX debian/README.*
编辑 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
debian/install 必须包含要安装的脚本以及目标目录
echo myscript usr/bin > debian/install
编辑 debian/rules
将其内容替换为以下文本:
#!/usr/bin/make -f %: dh $@ --with=python3
笔记:前面是一个 TAB
dh $@
,而不是四个空格!构建包
debuild -us -uc
您将收到一些 Lintian 警告/错误,但您的软件包已可以使用:
../myscript_0.1-1_all.deb