发布pygtk应用程序
我开发了一个pygtk应用程序,现在需要把它发布给客户。我使用的是python 2.7和pygtk 2.2,运行在ubuntu系统上。
我想问的是,怎么把所需的包(比如python、pygtk、gobject)和我的应用程序打包在一起,这样即使客户的电脑上没有安装这些包,我的应用程序也能正常运行。
我试过用pyinstaller,但生成的可执行文件依赖于glibc,也就是说,如果我用高版本的glibc创建了可执行文件,它就不能在低版本glibc的机器上运行。
所以有没有办法创建一个发布目录,把所有需要的包都放在里面,这样我就可以在任何系统上运行我的应用程序,而不需要安装这些包。
提前谢谢你们!
1 个回答
0
我只是想把我自己问题的解决方法分享出来!
根据上面评论的建议,我下载了源代码并在一个装有glibc2.5的机器上编译了这些包,然后用pyinstaller创建了我的pygtk应用的可执行文件。
我之前也尝试过编译这些包,但没有仔细查看./configure的输出。问题在于,我试图安装gtk和pygtk,但没有先安装cairo和pango。所以pygtk在找不到cairo包的情况下跳过了gtk包的构建。这个问题在./configure脚本中提到过,但我没有注意到。
总结一下:
要把pygtk配置到python中,需要按照以下步骤进行:
- 安装sqlite-devel #如果需要sqlite的话
- 安装python(2.7)
- 安装gtk(2.24.0) -> 需要glib(2.27.3)、atk(1.29.2)、cairo(1.8.10)、pango(1.22.4)、gdk-pixbuf(2.21.3)
- 安装pygtk(2.24.0) -> 需要pygobject-2.28.3、pycairo(1.8.10)
以上所有包都必须编译到同一个前缀下,并且需要设置PYTHON和PYTHONPATH环境变量。包的版本也很重要。我在括号中添加了对我有效的版本。
在安装某些包时有很多依赖关系,所以我还需要通过yum安装以下包:libxext、librender、gettext、zlib、libgtk2-devel。