Como criar um pacote deb para um script python3?

6

Eu tenho um arquivo Python, main.py. Eu gostaria de poder fazer um pacote .deb dele, e então poder rodar o main.py digitando o nome do pacote no terminal. Está escrito em Python 3, então o nome do pacote deve ser executado:

python3 main.py

A única dependência que eu conheço é o python3.

Eu tentei criar um deb com uma dependência de python3 e, em seguida, executar python3 packagename , mas recebo:

/usr/bin/python3: can't find '__main__' module in 'packagename'

Tentando usar o Debreate para a criação de pacotes falha ao abrir com:

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
    
por meecoder 03.01.2014 / 17:02

2 respostas

9

Criar um .deb para um script python3 é muito simples, e requer apenas algumas mudanças em debian / rules e debian / control se você estiver familiarizado com o empacotamento python2.

Em poucas palavras:

  1. Crie o diretório de origem do pacote

    mkdir myscript-0.1
  2. Copie seu script python3 (ou o script de exemplo abaixo) para o diretório de origem

    cp ~/myscript myscript-0.1
    cd myscript-0.1

    Exemplo de script:

    #!/usr/bin/python3
    
    if __name__ == '__main__':
        print("Hello world")
  3. Crie o esqueleto da embalagem (debian / *)

    dh_make -s --indep --createorig
  4. Remova os arquivos de exemplo

    rm debian/*.ex debian/*.EX debian/README.*
  5. Edite o debian / control

    Substitua seu conteúdo pelo seguinte texto:

    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 deve conter o script para instalar, bem como o diretório de destino

    echo myscript usr/bin > debian/install
  7. Edite debian / rules

    Substitua seu conteúdo pelo seguinte texto:

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

    Nota: é uma TAB antes de dh $@ , não de quatro espaços!

  8. Construa o pacote

    debuild -us -uc

Você receberá alguns avisos / erros de Lintian, mas seu pacote está pronto para ser usado:

../myscript_0.1-1_all.deb
    
por Sylvain Pineau 10.03.2014 / 10:01
0

Para o erro que você encontra em debreate ,

sudo apt-get install python-wxgtk2.8

source: fonte da solução acima

    
por linuxandunix 27.08.2014 / 12:59