如何为python3脚本创建deb包?
我有一个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 import wx, sys, os, debreate, db, language, shutil File "/usr/share/debreate/debreate.py", line 23, in import os, sys, wx.lib.dialogs, db, webbrowser, language, shutil, subprocess File "/usr/share/debreate/db.py", line 5, in import wx, wx.combo, wx.lib.mixins.listctrl as LC, os, sys, language ImportError: No module named combo
为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 /规则
用以下文字替换其内容:
#!/usr/bin/make -f %: dh $@ --with=python3
注意:它是
dh $@
之前的TAB,而不是四个空格! -
构建包
debuild -us -uc
您将收到一些Lintian警告/错误,但您的包已准备好使用:
../myscript_0.1-1_all.deb
对于你在debreate中遇到的错误,
sudo apt-get install python-wxgtk2.8
来源: 上述解决方案的来源