如何为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进行一些更改。

简而言之:

  1. 创建包源目录

     mkdir myscript-0.1 
  2. 将python3脚本(或下面的示例脚本)复制到源目录

     cp ~/myscript myscript-0.1 cd myscript-0.1 

    示例脚本:

     #!/usr/bin/python3 if __name__ == '__main__': print("Hello world") 
  3. 创建包装骨架(debian / *)

     dh_make -s --indep --createorig 
  4. 删除示例文件

     rm debian/*.ex debian/*.EX debian/README.* 
  5. 编辑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 
  6. debian / install必须包含要安装的脚本以及目标目录

     echo myscript usr/bin > debian/install 
  7. 编辑debian /规则

    用以下文字替换其内容:

     #!/usr/bin/make -f %: dh $@ --with=python3 

    注意:它是dh $@之前的TAB,而不是四个空格!

  8. 构建包

     debuild -us -uc 

您将收到一些Lintian警告/错误,但您的包已准备好使用:

 ../myscript_0.1-1_all.deb 

对于你在debreate中遇到的错误,

 sudo apt-get install python-wxgtk2.8 

来源: 上述解决方案的来源