Como faço para empacotar um aplicativo python para ppa?

5

Estou planejando empacotar o FBuntu no PPA para facilitar a distribuição.

A natureza deste aplicativo é que o usuário tem que fazer edições específicas no arquivo auth.py para fazê-lo funcionar e, portanto, estou impedido de prosseguir.

Um primeiro par de linhas padrão de auth.py se parece com isto:

import facebook

class facebookAuthentication:
    def __init__(self):
        url = "https://..."
        self.parse_url(url)

O usuário após a ramificação do FBuntu do bazar, tem que editar manualmente o URL com o que você obtém depois de autenticar com o Facebook. Eu não tenho idéia de como fazer um aplicativo ser editado depois que um pacote deb foi gerado.

Qualquer orientação sobre como proceder com a embalagem seria bem-vinda.

    
por jokerdino 26.05.2012 / 10:11

2 respostas

3

Não sei o que essa pergunta tem a ver com embalagem. Os usuários não deveriam ter que editar os arquivos python diretamente e, claro, precisariam ser root para fazer isso. O que você realmente quer é um arquivo conf adequado instalado no diretório inicial do usuário. Algo como:

import os
import ConfigParser

try:
    import xdg.BaseDirectory
except ImportError:
    home = os.environ.get('HOME')
    xdg_config_home = os.path.join(home, '.config/')
else:
    xdg_config_home = xdg.BaseDirectory.xdg_config_home

confDir =  os.path.join(xdg_config_home, 'myApp')
confFile =  os.path.join(confDir, 'conf.ini')

config = ConfigParser.ConfigParser()

if os.path.isfile(confFile):
    config.read(confFile)
    print "The URL is " + config.get('Section', 'url')
else:
    print "URL not set. Please edit " + confFile
    if not os.path.exists(confDir):
        os.makedirs(confDir)
    config.add_section('Section')
    config.set('Section', 'url', ' ')
    with open(confFile, 'wb') as confFile:
        config.write(confFile)

É claro que, se este for um aplicativo GUI, isso ainda é um pouco demais para o usuário. Você pode querer implementar uma janela de preferências.

    
por andrewsomething 27.05.2012 / 18:33
0

Por causa do seu comentário "muito específico", eu recolho usando o gwibber não é uma opção.

Eu mantenho um aplicativo python de dois anos originalmente montado junto com o Quickly. Mesmo que você não queira usar o Quickly para montar seu aplicativo, use rapidamente um arquivo setup.py modificado para modificar um módulo Python muito pequeno. Como o app. é construído setup.py é chamado a partir da seqüência de make (usual) e uma modificação para setup.py muda um detalhe pequeno, mas importante, sobre se o programa foi instalado ou se está sendo testado. Suponho que você poderia usar a mesma abordagem para alterar um tipo diferente de detalhe.

Ainda assim, deixar um aplicativo generalizado e fazer com que ele leia um arquivo de configuração (preferência) seria a maneira padrão de personalizar a operação de um programa, se possível. Então, se você puder usar a sugestão de Andrews, acho que seria melhor.

    
por John S Gruber 28.05.2012 / 03:02