我写了一个小程序,现在想用.deb
它做一个包。运行时quickly --verbose package
我得到了这个:
quickly --verbose package
/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
import gobject._gobject
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: specified class size for type `PyGtkGenericCellRenderer' is smaller than the parent type's `GtkCellRenderer' class size
from gtk import _gtk
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertion `node != NULL' failed
from gtk import _gtk
setup.py install_egg_info failed
An error has occurred when creating debian packaging
ERROR: can't create or update ubuntu package
ERROR: package command failed
Aborting
我读Jono Bacon 在 Quickly 开发者网站上提出的问题他遇到了和我一模一样的问题,但尽管他解释了如何修复,我还是不明白我该怎么做。我也是 Quickly 和 Python 的新手。我需要做什么?
答案1
我认为这意味着您正在使用一些基于 gtk2 的元素,也许是 pygtk,以及一些带有 gobject 自省的 gtk3 元素。这些东西不能混合。一旦您使用 gtk3 并因此使用 gobject 自省,就必须抛弃所有 pygtk 和 gtk2。
快速生成的程序使用了 pygtk 和 gtk2,但我认为最近的快速版本生成了 gtk3 和 gobject 自省。
您使用的库可能使用 gtk2 或 gtk3。在您提到的答案中,Jono 表示 PyNotify 使用 gtk2。他显然决定让一个程序专门使用 gtk2,另一个程序专门使用 gtk3——我认为这就是他所说的拥有独立代码库的意思。
要做的就是选择一个,可能是 gtk3 和自省,然后完成你需要做的事情,小心只使用那些已经转换为使用 gtk3 和 gobject 自省的库。
答案2
我通过在不同的目录中创建具有相同名称的新应用程序并将一些文件从旧应用程序目录复制到新应用程序目录来解决这个问题:
/old_aap_name/data/ui/* to /new_aap_name/data/ui/*
并且
/old_aap_name/old_app_name/*.py to /new_aap_name/new_app_name/*.py
此包生成后没有任何问题。
我认为问题一定是因为我创建了新的对话框,然后我删除了此对话框中的文件,因为它不再需要了。
感谢您为我指明正确的方向。