Open GoogleCodeExporter opened 9 years ago
I've never developed for Windows, so I can't say for sure.
However I'm certain that windows would need an alternative engine system.
Perhaps first creating a such, and then take out bugs as they appear?
If you'd like to investigate the possibility, feel free to ask questions :)
Doesn't gnome-games run on windows? Or is it only Solaris..
Original comment by lobais
on 27 Sep 2007 at 2:42
Now, only Aisleriot port for Windows http://live.gnome.org/GnomeGames/Windows
I go to make the installer for the Windows, and report the problems that to
appear.
Original comment by leogregianin@gmail.com
on 27 Sep 2007 at 3:37
Hi,
This is the message of the console:
(...)
*** copy data files ***
copying C:\Python25\lib\site-packages\py2exe\run_w.exe -> C:\Documents and Setti
ngs\Administrador\Desktop\pychess\trunk\dist\Main.exe
The following modules appear to be missing
['System.ThreadPool', 'email.Generator', 'email.Iterators', 'email.Utils', 'gdk'
, 'gst', 'gtksourceview', 'ltihooks', 'pychess.Utils.History', 'pygst', 'pysqlit
e2.dbapi2', 'resource', 'cairo.ImageSurface', 'gobject.GObject', 'gobject.SIGNAL
_RUN_FIRST', 'gtk.DEST_DEFAULT_DROP', 'gtk.DEST_DEFAULT_HIGHLIGHT', 'gtk.DEST_DE
FAULT_MOTION', 'gtk.ICON_LOOKUP_USE_BUILTIN']
and the log error:
Traceback (most recent call last):
File "Main.py", line 9, in <module>
File "pychess\System\conf.pyo", line 10, in <module>
File "pychess\System\conf_configParser.pyo", line 2, in <module>
File "pychess\System\Log.pyo", line 4, in <module>
File "pychess\System\prefix.pyo", line 41, in <module>
File "os.pyo", line 429, in __getitem__
KeyError: 'HOME'
"HOME" doesn't exist in win32 platform :-)
Original comment by leogregianin@gmail.com
on 23 Nov 2007 at 12:25
I see.
Try out os.path.expanduser("~")
If it works, we can add:
os.environ["HOME"] = os.path.expanduser("~")
in the start script.
Original comment by lobais
on 23 Nov 2007 at 2:10
I put os.environ["HOME"] = os.path.expanduser("~") in prefix.py and
conf_configParser.py ok.
1. Main.py:
from pychess.System import conf, glock
try:
from pychess.System import gstreamer
except ImportError:
print 'pygst don\'t installed'
pass
because I don't need porting gstreamer to windows.
the gettext problem (include in Main.py):
from pychess.System.prefix import addDataPrefix, getDataPrefix, isInstalled
import gettext, gtk.glade
if isInstalled():
gettext.install("pychess", unicode=1)
gtk.glade.bindtextdomain("pychess")
else:
gettext.install("pychess", localedir=addDataPrefix("lang"), unicode=1)
gtk.glade.bindtextdomain("pychess", addDataPrefix("lang"))
gtk.glade.textdomain("pychess")
win32 package first run lib/pychess/Main.py and the gettext in trunk/pychess.
const.py (getuid and getpwuid run only UNIX):
try:
from os import getuid
from pwd import getpwuid
userdata = getpwuid(getuid())
i = userdata.pw_gecos.find(',')
if i >= 0:
username = userdata.pw_gecos[i:]
else: username = userdata.pw_name
del userdata, i
except:
pass
widgets/gamewidget.py (another gstreamer):
from pychess.System import glock, conf
try:
from pychess.System import gstreamer
except:
pass
and log error, fcntl run only UNIX:
Traceback (most recent call last):
File "Main.py", line 28, in <module>
File "pychess\Players\Human.pyo", line 7, in <module>
File "pychess\widgets\gamewidget.pyo", line 66, in <module>
File "pychess\widgets\BoardControl.pyo", line 8, in <module>
File "pychess\Utils\Cord.pyo", line 1, in <module>
File "pychess\Utils\lutils\lmove.pyo", line 5, in <module>
File "pychess\Utils\lutils\ldata.pyo", line 3, in <module>
File "pychess\Utils\lutils\bitboard.pyo", line 1, in <module>
ImportError: No module named fcntl
Original comment by leogregianin@gmail.com
on 23 Nov 2007 at 4:42
another try..except in conf_configParser.py:
try:
atexit.register(lambda: configParser.write(open(path,"w")))
except:
pass
Log error:
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "atexit.pyo", line 24, in _run_exitfuncs
File "pychess\System\conf_configParser.pyo", line 12, in <lambda>
IOError: [Errno 13] Permission denied: 'C:\\Documents and
Settings\\Administrador'
Original comment by leogregianin@gmail.com
on 23 Nov 2007 at 4:53
1) I don't think you should try...catch gstreamer in Main.py. Better put it in
the
gstreamer module.
2) Can you try to explain the gettext problem again? Does the windows package
run
Main.py before trunk/pychess?
3) http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66314 seams to have a
solution for getting username on windows. Either use a try...catch or a "if
'nt' in
sys.platform"
4) We could either make the windows version star slower, by removing some of the
asynchronous reading from the file, or perhaps the fcntl process locking could
be
substituted by some of this: http://en.wikipedia.org/wiki/File_locking
5) The configParser.write problem, seams to merely be a HOME issue than an
issue that
should be try...catched.
Original comment by lobais
on 25 Nov 2007 at 2:58
Just committed a minimal patch to start win32 support.
Now "python setup.py install" is ok on windows.
After starting it with "python pychess" in c:\Python25\scripts dir, it gives a
traceback telling that (the select) "module object has no attribute poll".
(Maybe the gstreamer module can be substituted with winsound module on win32.)
Original comment by gbtami
on 25 Nov 2007 at 6:23
Super. windsound sounds good.
An idea:
if sys.platform == "win32":
from os.path import dirname, abspath
python_path = os.path.join(dirname(abspath(sys.executable)), python")
else:
python_path = searchPath("python")
Perhaps it would be nicer to add the win32 fix in searchPath rather than where
it is
used?
On the poll thing, does anybody know how windows poll pipes, if their select
and poll
only works on sockets?
Original comment by lobais
on 25 Nov 2007 at 6:47
Fixed the fix in rev 782 :)
Original comment by gbtami
on 25 Nov 2007 at 7:14
Hi All
I did a windows installer for a Python project using Py2exe
(http://code.google.com/p/gmapcatcher/) it is a lot simpler than pyChess, I
thought
that I could give you guys a hand making a windows installer, it seems that
this
project has a LOT more dependencies than GMapCatcher...
To start I set up Python 2.5 in a fresh Win XP and installed the requirements listed
in setup_win32.py, it was missing "gtksourceview" I download it from here:
http://ftp.gnome.org/pub/gnome/binaries/win32/
But no luck!
Has anyone been able to compile this lately?
Original comment by heldersepu
on 17 Jul 2009 at 5:23
Hi Heldersepu,
It would be great to have someone give PyChess for Windows another go. It's
been a
while since somebody worked on that (leogregianin did).
What kind of problems does gtksourceview give you? Perhaps the setup_win32.py
depends
on gtksourceview1 rather than 2. PyChess supports both though.
If the sourceview is a great trouble, we could make it optional. It isn't used
very
heavily in the app.
You can also try to write on the mailinglist if there are other things you need
to
know and discuss (there surely will be)
Cheers, Thomas
Original comment by lobais
on 31 Jul 2009 at 12:49
Hallo Thomas
Attached you can find some of the problems with gtksourceview. It seems that
setup_win32.py depends on gtksourceview1 but for debugging purposes I'm trying
to run
pychess directly.
I will try removing all the "sourceview" dependencies see if compiles in that way...
I'm glad I can help
Helder
Original comment by heldersepu
on 31 Jul 2009 at 1:04
Attachments:
I commented all the "sourceview" dependencies, but I'm still getting errors...
ImportError: No module named rsvg
this might be a solution:
http://cairographics.org/cairo_rsvg_and_python_in_windows/
Original comment by heldersepu
on 19 Aug 2009 at 1:43
Rsvg is used in the Throbber (which appears at discovering) and in the pydock
(which
appears when you move around panels).
We use rsvg like this:
def __loadSvg (self, path, width, height):
svg = rsvg.Handle(path)
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
context = cairo.Context(surface)
context.set_operator(cairo.OPERATOR_SOURCE)
if svg.props.width != width or svg.props.height != height:
context.scale(width/float(svg.props.width),
height/float(svg.props.height))
svg.render_cairo(context)
return surface
Your wrapper seams to handle all functions used in this case, so I say you
should try
copying it in.
At first you will need to copy it into lib/pychess/widgets/Throbber.py as well
as
lib/pychess/widgets/pydock/OverlayWindow.py. If it works well, we can factor it
into
some svg module.
Original comment by lobais
on 19 Aug 2009 at 6:11
After copying the wrapper to both of the files that error is gone.
but now I get new error:
gobject.GError: Icon 'weather-clear' not present in theme
I try commenting the "erroneous" lines but it seems the icons are used
everywhere!
Attached is the full output of the error
In the error there is something about theme not found & You can get a copy
from:
http://icon-theme.freedesktop.org/releases
I downloaded & extracted the files but don't know what to do with them
Original comment by heldersepu
on 16 Sep 2009 at 1:21
Attachments:
Trying to install pygtksourceview for win32:
http://ftp.gnome.org/pub/gnome/binaries/win32/pygtksourceview/
Original comment by leogregianin@gmail.com
on 5 Sep 2010 at 3:38
I have tried to install it on Windows 7 under Python 2.6 and 2.7
- Got GTK+ 2.22 bundle from http://www.gtk.org/download-windows.html and
installed into C:\GTK
- Upated Windows PATH env variable: PATH=C:\GTK\bin;%PATH%
- Installed PyCairo, PyObject, PyGDK from
http://ftp.gnome.org/pub/GNOME/binaries/win32/
- checked that following works:
import gobject
import gtk
import glib
from glib._glib import *
import cairo
Run python setup.py install and got the error (different for Python 2.6 and
2.7):
On Python 2.7.1 the error is:
Traceback (most recent call last):
File "setup.py", line 103, in <module>
msgfmt.make(file+".po", file+".mo")
File "c:\python27\tools\i18n\msgfmt.py", line 174, in make
l = eval(l)
File "<string>", line 1
"Copy text \t
^
SyntaxError: EOL while scanning string literal
------------
On Python 2.6.4
Traceback (most recent call last):
File "setup.py", line 103, in <module>
msgfmt.make(file+".po", file+".mo")
File "C:\Python26\tools\i18n\msgfmt.py", line 151, in make
l = eval(l)
File "<string>", line 1
_plural "There are %d games with unsaved moves."
^
SyntaxError: invalid syntax
---------------------------------------
- Commented out in setup.py lines #103 and #106:
msgfmt.make(file+".po", file+".mo")
DATA_FILES += [("share/locale/"+dir+"/LC_MESSAGES",
["lang/"+dir+"/"+pofile+".mo"])]
- Run python setup.py install again - no errors reported.
- downloaded testing folder from trunk
- run python test/run_tests.py
got error: lib\pychess\System\Log.py", line 57, in _format
t = time.strftime ("%T")
ValueError: Invalid format string
Googled and found that instead "%T" in line above should be "%H:%M:%S"
Fixed it in Log.py an run again:
The following tests failed (difference in YEAR format YY versus YYYY):
FAIL: test1 (ficsmanagers.AdjournManagerTests)
Testing an advanced line
- 'time': '12/23/09 06:58'}],)
+ 'time': '12/23/2009 06:58'}],)
FAIL: test2 (ficsmanagers.AdjournManagerTests)
Testing a double line
- 'time': '11/23/97 06:14'},
+ 'time': '11/23/1997 06:14'},
- 'time': '01/11/09 17:40'}],)
+ 'time': '01/11/2009 17:40'}],)
FAIL: test1 (ficsmanagers.GameListManagerTests)
Seek add
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\2001-MARCH\pychess-0.10\test\ficsmanagers.py", line 171, in test1
self.runAndAssertEquals(signal, lines, (expectedResult,))
File "C:\2001-MARCH\pychess-0.10\test\ficsmanagers.py", line 53, in runAndAsse
rtEquals
self.assertEqual(self.args, expectedResults)
AssertionError: Tuples differ: ({'rt': '1291', 'rmin': '1200'... != ({'rmax':
'1400', 'cp': False,...
First differing element 0:
{'rt': '1291', 'rmin': '1200', 'title': '', 'i': '0', 'manual': False, 'rmax': '
1400', 'gameno': '10', 'tp': 'Blitz', 'r': 'r', 't': '3', 'w': 'warbly', 'cp':
False}
{'rmax': '1400', 'cp': False, 'rt': '1291', 'rmin': '1200', 'i': '0', 'manual':
False, 'gameno': '10', 'tp': 'Blitz', 'r': 'r', 't': '3', 'w': 'warbly'}
({'cp': False,
'gameno': '10',
'i': '0',
'manual': False,
'r': 'r',
'rmax': '1400',
'rmin': '1200',
'rt': '1291',
't': '3',
- 'title': '',
'tp': 'Blitz',
'w': 'warbly'},)
--------------------
Also I o run
python lib/pychess/Players/PyChess.py
And get error at this line
\pychess-0.10\lib\pychess\System\prefix.py", line 50, in __get_user_dir
directory = join(os.environ["HOME"], fallback_dir_path)
I tried this workaround:
set HOME=c:\
and run again: python lib/pychess/Players/PyChess.py
I got:
feature done=0
At this point application wait for valid moves, I do not know what to type here.
Any ideas?
Original comment by mlubin...@gmail.com
on 21 Mar 2011 at 5:04
Update to the last line in my previous post: I figured out that are the valid
commands:
I typed "go" and got back "move d4" , I typed "go" one more time and got "move Nf6"
etc.
Original comment by mlubin...@gmail.com
on 21 Mar 2011 at 5:26
Thx. for your test!
I run into msgfmp.py error with Python 2.6.6 too. Not tested with 2.7 yet.
They fixed it: http://bugs.python.org/issue5464
This is interesting:
got error: lib\pychess\System\Log.py", line 57, in _format
t = time.strftime ("%T")
ValueError: Invalid format string
Python docs doesn't mention %T, but I got no error running tests on my XP.
Our main problem with win32 port described in mailing list:
>> There has been work in the past, on porting PyChess to Windows.
>> The main issue is the process model, which is different / worse from
>> unix systems.
> I talked about this with Matt, and he pointed to the root of our problem:
> http://faq.pygtk.org/index.py?req=show&file=faq20.006.htp
I see.
I guess we could switch all the code back to using idle_add, but we
did switch away from it, because it gave problems. There is a chance
these problems in gtk are fixed, but who knows.
Another possibility could be to make them interchangeable some way.
Anyway I think it would require some overall rewrite of the way we use
threading. Then again, that is one of our high priorities anyway.
Original comment by gbtami
on 21 Mar 2011 at 12:01
You said:
"Python docs doesn't mention %T, but I got no error running tests on my XP"
It depends from Python version: for 2.6 it returns '', for 2.7 it raises the
error
Original comment by mlubin...@gmail.com
on 21 Mar 2011 at 6:53
Fixed in rev 951b4a66185c. Thx!
Original comment by gbtami
on 21 Mar 2011 at 8:26
I have found the reason why setup.py failed on line 103:
msgfmt.make(file+".po", file+".mo")
It is because the Swedish translation does not have pychess.mo file in folder
lang/sv/LC_MESSAGES/pychess/
I just removed the folder lang/sv/ completely and rerun setup.py install
without problems.
Original comment by mlubin...@gmail.com
on 21 Mar 2011 at 9:58
Current show stopper: in file Utils\book.py the error happened on line:
from pychess.Utils.History import History
ImportError: No module named History
Any ideas?
Original comment by mlubin...@gmail.com
on 22 Mar 2011 at 12:29
The following statement exists 2 times in Utils\book.py (lines #36 and #145)
if __name__ == "__main__":
Also the variable PROFILE is not defined but is used on line #146
if not PROFILE:
remake()
Original comment by mlubin...@gmail.com
on 22 Mar 2011 at 12:44
Most of book.py is outdated. It is code used to generate the opening book,
which currently isn't accessible to the user. Additionally Justin Blanchard is
working on making it all obsolete.
Bottom line: Anything that isn't getOpenings or used by it, you can safely
remove.
Original comment by lobais
on 22 Mar 2011 at 7:13
In addition to my comment 23: Swedish translation file
\sv\LC_MESSAGES\pychess.po should be fixed: specifically lines 221-223 contain
garbage which causing the setup.py failure:
"Copy text \t
\n"
"Chattar"
Original comment by mlubin...@gmail.com
on 23 Mar 2011 at 12:50
In addition to comment 21: the same issue should be fixed in file
widgets\LogDialog.py
line 74: instead %T should be %H:%M:%S
wrong line: t = time.strftime("%T",time.localtime(timestamp))
fixed line: t = time.strftime("%H:%M:%S",time.localtime(timestamp))
Original comment by mlubin...@gmail.com
on 23 Mar 2011 at 3:44
In addition to my comment 23:
remove garbage in line 618-619; 942-.. in file \sv\LC_MESSAGES\pychess.po
"Copy text \t" <--- this is an issue.
It breaks setup.py install as I described before
Original comment by mlubin...@gmail.com
on 23 Mar 2011 at 4:45
Follow-up to my comment 18: I finally got Welcome-Pychess main window!
Instead first 3 steps described in comment #18 I used pygtk-all-in-one
installer:
http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/pygtk-all-in-one-2.22.6
.win32-py2.6.msi (also there is a version for Python 2.7)
It is important to read first
http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.22/pygtk-all-in-one.README
Also fixes for strftime("%T") should be applied in LogDialog.py and Log.py
files and \sv\LC_MESSAGES\pychess.po should be fixed.
From Welcome-Pychess there are 2 options:
Option 1: Start Game
Opponent: human being (drop down has no other options - why?)
In file ionest.py, line #80, I found that the following list is empty
anaengines = list(discoverer.getAnalyzers())
and on line 83 it fails: Index Error - list index out of range
if engine is None: engine = anaengines[0]
I dig into engineNest.py to understand how to fix it, but I need help from
somebody here. Please explain me how to configure local chess engine to be
recognized by engineNest!
Option 2: Connect to FICS
I tried connect to FICS as guest: I got 2 additional windows
one named "Connect to Internet Chess" with nice Earth picture and after few sec
the 2nd window appeared "Internet Chess: FICS" which is totally white inside.
Both windows are having line "Not Responding" in the title. So I have to kill
both.
Original comment by mlubin...@gmail.com
on 23 Mar 2011 at 5:50
mlubin: Congratulations on getting it up running!
On your question: PyChess expects there to always be at least one engine,
namely the PyChess chess engine. It sounds to me like it has failed being
initialized by engineNest. Have you checked if you can run it stand alone? (see
the INSTALL file).
In general the engines.xml file is used to configure local engines. The script
uses the system path a lot, I don't know if that might introduce troubles under
windows.
Original comment by lobais
on 23 Mar 2011 at 7:47
Fixed the strftime() param and sv garbage bugs. Thx!
I think you arrived to the main problem here.
PyChess failed to discover engines (we have at least 1, pychess own engine).
The reason is here:
http://faq.pygtk.org/index.py?req=show&file=faq20.006.htp
As Thomas said we tried method 1. before, but had problems. Now we use method
2., but this failed in win32.
Original comment by gbtami
on 23 Mar 2011 at 7:51
The issue mentioned in comment #28 aslo should be fixed in ChatView.py lines
#106 and #116
Original comment by mlubin...@gmail.com
on 23 Mar 2011 at 7:19
Fixed in hg. Thx!
Original comment by gbtami
on 23 Mar 2011 at 8:49
The default PyChess.py engine is not picked up because in the engineNest.py the
method
__findRundata the variable altpath always become None:
if engine.find('vm') is not None:
altpath = engine.find('vm').find('path') # this returns None !
I do not understand what .find('path') stands for in line abobe.
Any idea how to fix it?
Original comment by mlubin...@gmail.com
on 24 Mar 2011 at 4:50
Fixed in hg. Thx!
Original comment by gbtami
on 24 Mar 2011 at 11:46
Tested with latest engineNest.py code on Windows XP. Previous error gone, I got
this error down the road:
File "SubProcess.py", line 94, in _initChannel
channel.set_flags(gobject.IO_FLAG_NONBLOCK)
<class 'glib.GError'> Not implemented on Win32
Looked on set_flags doc here
http://library.gnome.org/devel/gtkmm/2.21/classGtk_1_1Widget.html - this
method marked as deprecated.
Also looked on valid WidgetsFlags
http://library.gnome.org/devel/gtkmm/2.21/group__gtkmmEnums.html#ga3d42e9e6671e4
8764b3b42bcc8da0b47
and Googled - looks like we do not need to call
channel.set_flags(gobject.IO_FLAG_NONBLOCK) on Windows at all: this is default
behavior.
So I commented this line in SubProcess.py and rerun. I got next error dump:
------------------
debug: xboard
debug:
debug: protover 2
debug:
warn: Got timeout error
13:58:22 ('Python.exe', '13:03:12.829') Warning: Got timeout error
debug: quit
debug:
threading.py", line 503, in __bootstrap self.__bootstrap_inner()
threading.py", line 530, in __bootstrap_inner self.run()
ThreadPool.py", line 76, in run self.func()
ThreadPool.py", line 49, in <lambda> a.func = lambda: func(*args, **kw)
engineNest.py", line 444, in run self.__discoverE(engine)
engineNest.py", line 257, in __discoverE subproc.start()
CECPEngine.py", line 169, in start self.__startBlocking()
CECPEngine.py", line 183, in __startBlocking self.emit("readyForOptions")
engineNest.py", line 274, in __discoverE2 exitcode = subproc.kill(UNKNOWN_REASON)
CECPEngine.py", line 249, in kill self.engine.gentleKill()
SubProcess.py", line 193, in gentleKill pool.start(self.__gentleKill_inner, first, second)
SubProcess.py", line 196, in __gentleKill_inner self.resume()
SubProcess.py", line 217, in resume self.sendSignal(signal.SIGCONT)
<type 'exceptions.AttributeError'> 'module' object has no attribute 'SIGCONT'
Save xml C:\Documents and Settings\lubinsky\Application Data\pychess\engines.xml
debug: nopost
debug:
error: Invalid argument. Last line wasn't sent.
--------------------------------------------------------
From http://docs.python.org/library/signal.html I see that SIGCONT is not valid
argument on Windows:
On Windows, signal() can only be called with SIGABRT, SIGFPE, SIGILL, SIGINT,
SIGSEGV, or SIGTERM.
Any idea how to fix it?
Original comment by mlubin...@gmail.com
on 24 Mar 2011 at 9:33
SIGPAUSE/SIGCONT are used for pausing and resuming a process. I did a bit of
searching, but there doesn't seam to be an api way in Windows to do this.
You can try to search as well. There were some ideas around.
Alternatively I think the engine api's will still work, even if the processes
aren't actually paused. Maybe some bad engines will have problems, and we'll
probably have a large cpu usage when a game is paused, but you could give it a
try and comment the lines out.
Original comment by lobais
on 24 Mar 2011 at 10:36
I commented out the calls signal.SIGCONT but it does not help :(
Here is the dump with some my print statements:
subrocess init path= C:\Python27\python.exe
subrocess init self.defname= ('Python.exe', '16:03:14.448')
subrocess argv= ['C:\\Python27\\python.exe', '-u',
'C:\\Python27\\lib\\site-packages\\pychess\\Players\\PyChess.py
C:\Python27\lib\site-packages\pychess\System\SubProcess.py:77: Warning: passing
a child setup function to the g_spawn functions is pointless on Windows and it
is ignored
flags=gobject.SPAWN_DO_NOT_REAP_CHILD|gobject.SPAWN_SEARCH_PATH)
__startBlocking Queue.Empty
warn: Got timeout error
16:54:54 ('Python.exe', '16:03:14.448') Warning: Got timeout error
func kill
debug: quit
debug:
DO NOT CALL SIGCONT
Save xml C:\Documents and Settings\lubinsky\Application Data\pychess\engines.xml
warn: Chan closed for 'nopost'
16:54:54 ('Python.exe', '16:03:14.448') Warning: Chan closed for 'nopost'
warn: Chan closed for '\n'
16:54:54 ('Python.exe', '16:03:14.448') Warning: Chan closed for '\n'
end func __discoverE
Original comment by mlubin...@gmail.com
on 25 Mar 2011 at 12:33
The latest all-in-one-runtime is for 2.24.x now:
http://ftp.gnome.org/pub/gnome/binaries/win32/pygtk/2.24/
Original comment by gbtami
on 24 Jun 2013 at 11:56
Original issue reported on code.google.com by
leogregianin@gmail.com
on 27 Sep 2007 at 12:30