如何为ppa打包一个Python应用程序?

我计划将FBuntu打包成PPA,以便更方便地分发。
这个应用的特点是用户必须对auth.py文件进行特定的编辑才能使其正常工作,因此我无法继续进行下去。
auth.py的默认前几行如下所示:
import facebook

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

用户在从Bazaar分支FBuntu之后,必须手动编辑URL,使用在与Facebook进行身份验证后获得的URL。我不知道如何在生成deb软件包后编辑应用程序。
对于如何继续打包此应用程序的任何指导都将受到欢迎。

2+1 ...对那些不熟悉fbuntu的人(比如我!),你能举例说明需要在auth.py中编辑什么吗?听起来auth.py应该从配置文件中读取而不是硬编码。 - fossfreedom
@fossfreedom 是的,我希望它从配置文件中读取而不是硬编码,因为它是一个非常用户特定的 URL。 - jokerdino
2只是一条注释,我正在制作一个全面的包装教程来解决这个问题。 - RobotHumans
作为编写FBuntu的人,我非常清楚它并不是很用户友好,而且我很想通过PPA来进行分发。我认为我应该从这个问题的答案中吸取一些建议! - 8128
@fluteflute 哎呀,没想到你会看到这个问题。我本来打算完成工作后再联系你的.. - jokerdino
@jokerdino 如果你有任何进展,请告诉我! - 8128
@fluteflute 当然可以。我只是在等待aking完成他的教程。他似乎在做得非常出色。 - jokerdino
@jokerdino 你可能对我(有限的)努力感兴趣,做类似的事情 - 8128
2个回答

我不确定这个问题与打包有什么关系。用户不应该直接编辑Python文件,当然也需要root权限才能安装。你真正想要的是在用户的主目录中安装一个正确的配置文件。例如:
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)

当然,如果这是一个图形用户界面应用程序,对于用户来说可能有点过多。您可能希望实现一个首选项窗口。

我差点忘了这个问题。谢谢你的指导。 :) - jokerdino

因为你提到了“非常具体的URL”,我猜想使用gwibber可能不是一个选择。
我维护着一个几年前用Quickly编写的Python应用程序。即使你不想使用Quickly来创建你的应用程序,Quickly仍然使用一个修改过的setup.py文件来修改一个非常小的Python模块。当应用程序被构建时,setup.py会从make序列(通常)中调用,并且对setup.py的修改会改变一个小但重要的细节,即程序是否已安装或正在进行测试。我想你可以使用相同的方法来改变其他类型的细节。
不过,如果有可能的话,将应用程序保持通用并让它读取一个配置(偏好)文件将是定制程序操作的标准方式。所以,如果你能使用andrewsomething的建议,我认为那会更好。