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

如何为 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 包后编辑应用程序。

欢迎提供关于如何进行包装的任何指导。

答案1

我不确定这个问题与打包有什么关系。用户不应该直接编辑 python 文件,当然需要 root 权限才能安装。你真正想要的是安装到用户主目录中的正确 conf 文件。类似于:

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)

当然,如果这是一个 GUI 应用程序,那么对用户来说还是有点太多了。您可能需要实现一个首选项窗口。

答案2

由于您的“非常具体的 url”评论,我认为使用 gwibber 不是一个选择。

我维护了一个几年前的 Python 应用程序,最初是用 Quickly 组装的。即使您不想使用 Quickly 组装应用程序,Quickly 也会使用修改后的 setup.py 文件来修改一个非常小的 Python 模块。在构建应用程序时,setup.py 会从 make 序列中调用(通常),对 setup.py 的修改会更改一个小而重要的细节,即程序是否已安装或是否正在测试。我想您可以使用相同的方法来更改不同类型的细节。

尽管如此,如果可能的话,让应用程序通用化并让其读取配置(首选项)文件将是自定义程序操作的标准方法。因此,如果您可以使用 andrewsomething 的建议,我认为那会更好。

相关内容