Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > PyGTK and pyexe

Reply
Thread Tools

PyGTK and pyexe

 
 
Viktor
Guest
Posts: n/a
 
      03-18-2005
Did anybody managed to "pack", a program that uses pygtk with pyexe?

The best result I got was:

Pango-ERROR **: file shape.c: line 75 (pango_shape): assertion faled:
(glyphs->num_glyphs > 0) aborting...

I'm using python2.4, pygtk-2.6.1-1.win32-py2.4, gtk-win32-2.6.4-rc1.

Thanks in advance.

 
Reply With Quote
 
 
 
 
Tom Cocagne
Guest
Posts: n/a
 
      03-19-2005
I used the instructions in the PyGTK FAQ and managed to get it working.
Take a look at:

http://www.async.com.br/faq/pygtk/in...=faq21.005.htp

Cheers,

Rakis

Viktor wrote:

> Did anybody managed to "pack", a program that uses pygtk with pyexe?
>
> The best result I got was:
>
> Pango-ERROR **: file shape.c: line 75 (pango_shape): assertion faled:
> (glyphs->num_glyphs > 0) aborting...
>
> I'm using python2.4, pygtk-2.6.1-1.win32-py2.4, gtk-win32-2.6.4-rc1.
>
> Thanks in advance.


 
Reply With Quote
 
 
 
 
Viktor
Guest
Posts: n/a
 
      03-19-2005
Nope, it doesn't work... I've tried that and the only thing I got was:

ImportError: could not import pango
ImportError: could not import pango
Traceback (most recent call last):
File "test.py", line 5, in ?
File "gtk\__init__.pyc", line 113, in ?
AttributeError: 'module' object has no attribute 'Font'

But it has:

>>> import pango
>>> dir(pango).index('Font')

71


The only way it works is with this setup.py:

.................................................. .......................

from distutils.core import setup
import py2exe
import glob

opts = {
"py2exe": {
"includes": ["pango", "atk", "gobject", "gtk"],
"dll_excludes": ["iconv.dll", "intl.dll",
"libatk-1.0-0.dll", "libgdk_pixbuf-2.0-0.dll",
"libgdk-win32-2.0-0.dll", "libglib-2.0-0.dll",
"libgmodule-2.0-0.dll", "libgobject-2.0-0.dll",
"libgthread-2.0-0.dll", "libgtk-win32-2.0-0.dll",
"libpango-1.0-0.dll", "libpangowin32-1.0-0.dll"]
}
}

setup(
name = "test",
description = "Test GUI programm",
version = "0.1",
windows = [{
"script": "test.py",
"icon_resources": [(1, "test.ico")]
}],
options=opts,
data_files=[("pixmaps", glob.glob("pixmaps/*.png")),
("glade", glob.glob("glade/*.*"))
],
)

.................................................. .......................

But it's not stand-alone, it needs GTK, and when I copy all the dlls
needed in the dist directory, I get the same message as before.

Pango-ERROR **: file shape.c: line 75 (pango_shape): assertion faled:
(glyphs->num_glyphs > 0) aborting...

By the way, I'm allways getting this message at the end:

The following modules appear to be missing
['gdk', 'ltihooks']

 
Reply With Quote
 
Tom Cocagne
Guest
Posts: n/a
 
      03-20-2005
Hmmmm. Well, the way I did it, if I remember correctly (the files are at
work), was to run the line "python setup.py py2exe --force --excludes gtk,
gobject,pango" and then copied the entire GTK directory into the
distribution directory. Just copying the DLLs doesn't suffice since there
are other files required for GTK to operate properly (config files, icons,
etc, etc). Once I got it working, I tried removing files from the GTK tree
that didn't look important and was able to halve the size of the resulting
package.

It took a while to figure out the first time but all subsequent builds have
been as simple as running that one python command and copying my custom GTK
directory into the dist directory.

Without being at my desk, that's the best I explanation I can give. If
Monday rolls around and you still don't have it working, send an e-mail to
my work account: tom [dot] cocagne [at] navy [dot] mil and I'll give you a
few more specifics.

Cheers,

Tom


Viktor wrote:

> Nope, it doesn't work... I've tried that and the only thing I got was:
>
> ImportError: could not import pango
> ImportError: could not import pango
> Traceback (most recent call last):
> File "test.py", line 5, in ?
> File "gtk\__init__.pyc", line 113, in ?
> AttributeError: 'module' object has no attribute 'Font'
>
> But it has:
>
>>>> import pango
>>>> dir(pango).index('Font')

> 71
>
>
> The only way it works is with this setup.py:
>
> .................................................. ......................
>
> from distutils.core import setup
> import py2exe
> import glob
>
> opts = {
> "py2exe": {
> "includes": ["pango", "atk", "gobject", "gtk"],
> "dll_excludes": ["iconv.dll", "intl.dll",
> "libatk-1.0-0.dll", "libgdk_pixbuf-2.0-0.dll",
> "libgdk-win32-2.0-0.dll", "libglib-2.0-0.dll",
> "libgmodule-2.0-0.dll", "libgobject-2.0-0.dll",
> "libgthread-2.0-0.dll", "libgtk-win32-2.0-0.dll",
> "libpango-1.0-0.dll", "libpangowin32-1.0-0.dll"]
> }
> }
>
> setup(
> name = "test",
> description = "Test GUI programm",
> version = "0.1",
> windows = [{
> "script": "test.py",
> "icon_resources": [(1, "test.ico")]
> }],
> options=opts,
> data_files=[("pixmaps", glob.glob("pixmaps/*.png")),
> ("glade", glob.glob("glade/*.*"))
> ],
> )
>
> .................................................. ......................
>
> But it's not stand-alone, it needs GTK, and when I copy all the dlls
> needed in the dist directory, I get the same message as before.
>
> Pango-ERROR **: file shape.c: line 75 (pango_shape): assertion faled:
> (glyphs->num_glyphs > 0) aborting...
>
> By the way, I'm allways getting this message at the end:
>
> The following modules appear to be missing
> ['gdk', 'ltihooks']


 
Reply With Quote
 
Viktor
Guest
Posts: n/a
 
      03-21-2005
I succeeded ))

And the winner is:

.................................................. .......................

from distutils.core import setup
import py2exe

opts = {
"py2exe": {
"includes": ["pango", "atk", "gobject", "gtk","gtk.glade"],
"dll_excludes": ["iconv.dll", "intl.dll",
"libatk-1.0-0.dll", "libgdk_pixbuf-2.0-0.dll",
"libgdk-win32-2.0-0.dll", "libglib-2.0-0.dll",
"libgmodule-2.0-0.dll", "libgobject-2.0-0.dll",
"libgthread-2.0-0.dll", "libgtk-win32-2.0-0.dll",
"libpango-1.0-0.dll", "libpangowin32-1.0-0.dll",
"libxml2", "libglade-2.0-0", "zlib1"]
}
}

setup(
name = "PyGTKTest",
description = "PyGTK Test Application",
version = "0.1",
windows = [{"script": "test.py", "icon_resources": [(1,
"test.ico")]}],
options=opts,
data_files=[("", ["test.glade"])]
)

.................................................. ......................

Py2exe reports an error if I try to use --force (the command doesn't
exist), so I use only:

python setup.py py2exe --exclude
gobject,glib,gtk,glade,pango,atk,libglade,xml2,zli b

After that I make a new directory, say MyApp, copy the entire content
of
the GTK folder (I'm using the GTK Runtime Enviroment from
gladewin32.sourceforge.net) in MyApp, and then copy the content of the
dist folder into MyApp\bin.

Now I can uninstall GTK Runtime Enviroment, and Python, and it works
.

But it's pretty big, what files can I remove? (OK, I know... locales,
man
pages, examples , but what more - it's still > 20 MB?)

 
Reply With Quote
 
Tom Cocagne
Guest
Posts: n/a
 
      03-21-2005
I remember removing the locales and all of the documentation. Beyond that
I can't remember. If your app falls under the common case of running on
machines with ample disk space, I wouldn't worry too much about the size.
WinZip does a pretty good job of shrinking my distribution file to a
managable size for network transfer.

Tom

Viktor wrote:

> I succeeded ))
>
> And the winner is:
>
> .................................................. ......................
>
> from distutils.core import setup
> import py2exe
>
> opts = {
> "py2exe": {
> "includes": ["pango", "atk", "gobject", "gtk","gtk.glade"],
> "dll_excludes": ["iconv.dll", "intl.dll",
> "libatk-1.0-0.dll", "libgdk_pixbuf-2.0-0.dll",
> "libgdk-win32-2.0-0.dll", "libglib-2.0-0.dll",
> "libgmodule-2.0-0.dll", "libgobject-2.0-0.dll",
> "libgthread-2.0-0.dll", "libgtk-win32-2.0-0.dll",
> "libpango-1.0-0.dll", "libpangowin32-1.0-0.dll",
> "libxml2", "libglade-2.0-0", "zlib1"]
> }
> }
>
> setup(
> name = "PyGTKTest",
> description = "PyGTK Test Application",
> version = "0.1",
> windows = [{"script": "test.py", "icon_resources": [(1,
> "test.ico")]}],
> options=opts,
> data_files=[("", ["test.glade"])]
> )
>
> .................................................. .....................
>
> Py2exe reports an error if I try to use --force (the command doesn't
> exist), so I use only:
>
> python setup.py py2exe --exclude
> gobject,glib,gtk,glade,pango,atk,libglade,xml2,zli b
>
> After that I make a new directory, say MyApp, copy the entire content
> of
> the GTK folder (I'm using the GTK Runtime Enviroment from
> gladewin32.sourceforge.net) in MyApp, and then copy the content of the
> dist folder into MyApp\bin.
>
> Now I can uninstall GTK Runtime Enviroment, and Python, and it works
> .
>
> But it's pretty big, what files can I remove? (OK, I know... locales,
> man
> pages, examples , but what more - it's still > 20 MB?)


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
pyexe "format" hg Python 4 06-10-2007 06:04 PM
pyGTK, Buttons and Pixmaps problem Fulko van Westrenen Python 2 11-28-2003 09:49 AM
PyGTK website is down. Anybody knows why and when it will be brought up? Hans Deragon Python 2 10-11-2003 04:42 PM
freezy.py and pygtk Luca Masini Python 0 10-04-2003 09:22 PM
PyGTK and fonts Tad Marko Python 2 09-09-2003 09:22 AM



Advertisments