From: Steve F. <sf...@ih...> - 2007-02-09 05:08:14
|
Hi all, I'm new to the list, and I'm having a problem in a Twisted app that seems to be py2exe-related. When not in py2exe, the following code runs just fine for me: s = subprocess.Popen(os.path.join(subroot, build_name, 'install.bat'), cwd=os.path.join(subroot, build_name), stdout=subprocess.PIPE) # This is line 289 When in py2exe, the same code falls over with this: Traceback (most recent call last): File "client.pyc", line 289, in myFunction File "subprocess.pyc", line 586, in __init__ File "subprocess.pyc", line 681, in _get_handles File "subprocess.pyc", line 722, in _make_inheritable TypeError: an integer is required The problem seems to be Popen() stdout argument. I changed it to sys.stdout but that had no effect. I looked around a bit for a fix, but only came up with a few people mentioning that py2exe does something unconventional with stdout/err. I'm using the latest py2exe with Python 2.5 and Twisted 2.5. Any help would be appreciated! Thanks, Steve |
From: Thomas H. <th...@ct...> - 2007-02-09 07:04:00
|
Steve Freitas schrieb: > Hi all, > > I'm new to the list, and I'm having a problem in a Twisted app that > seems to be py2exe-related. When not in py2exe, the following code runs > just fine for me: > > s = subprocess.Popen(os.path.join(subroot, build_name, 'install.bat'), > cwd=os.path.join(subroot, build_name), > stdout=subprocess.PIPE) # This is line 289 > > When in py2exe, the same code falls over with this: > > Traceback (most recent call last): > File "client.pyc", line 289, in myFunction > File "subprocess.pyc", line 586, in __init__ > File "subprocess.pyc", line 681, in _get_handles > File "subprocess.pyc", line 722, in _make_inheritable > TypeError: an integer is required > > The problem seems to be Popen() stdout argument. I changed it to > sys.stdout but that had no effect. I looked around a bit for a fix, but > only came up with a few people mentioning that py2exe does something > unconventional with stdout/err. This is not a py2exe problem, it is a subprocess problem. I believe that it will be fixed in Python 2.5.1 when it comes out. The same problem will occur when you run your script with pythonw.exe instead of python.exe. One solution is here (haven't tried that one out): http://www.py2exe.org/index.cgi/Py2ExeSubprocessInteractions and IIRC I have also posted another solution to this mailing list some time ago. Thomas |
From: Steve F. <sf...@ih...> - 2007-02-09 07:36:02
|
On Fri, 2007-02-09 at 08:03 +0100, Thomas Heller wrote: > This is not a py2exe problem, it is a subprocess problem. I believe that > it will be fixed in Python 2.5.1 when it comes out. > The same problem will occur when you run your script with pythonw.exe > instead of python.exe. Whoops! Sorry for not seeing that. I'll go in a different direction -- thanks for the tip. Steve |
From: Alexander B. <bi...@uk...> - 2007-02-09 08:14:34
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Thomas Heller пишет: > > http://www.py2exe.org/index.cgi/Py2ExeSubprocessInteractions > > and IIRC I have also posted another solution to this mailing list some time ago. Is there any way to redirect stdout and stderr manually in Windows application instead of Blackhole std implementation? I'd like to convert console application with Tkinter GUI to py2exe'd windows application but I want to have access to stdout/stderr of this program. - -- Alexander -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFzC3KzYr338mxwCURAhLwAJ4gHe1slSW93ELzmK4tErf+EDYR8wCfVwPV W1Znmw9doqqP0uPvZDOLF3U= =Nc3C -----END PGP SIGNATURE----- |
From: Thomas H. <th...@ct...> - 2007-02-09 10:11:05
|
Alexander Belchenko schrieb: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Thomas Heller пишет: >> >> http://www.py2exe.org/index.cgi/Py2ExeSubprocessInteractions >> >> and IIRC I have also posted another solution to this mailing list some time ago. > > Is there any way to redirect stdout and stderr manually in Windows application > instead of Blackhole std implementation? I'd like to convert console application > with Tkinter GUI to py2exe'd windows application but I want to have access to > stdout/stderr of this program. Sure. As usual in Python, you can assign whatever you want to sys.stdout and sys.stderr; and the output will go there. A file, for example. Thomas |
From: Grzegorz A. H. <gha...@ra...> - 2007-02-09 09:13:23
|
Thomas Heller wrote: > One solution is here (haven't tried that one out): > > http://www.py2exe.org/index.cgi/Py2ExeSubprocessInteractions That doesn't work: http://sourceforge.net/mailarchive/message.php?msg_id=38035786 > and IIRC I have also posted another solution to this mailing list > some time ago. I couldn't find any. Do you have the URL? -- Grzegorz Adam Hankiewicz, Jefe de producto de TeraVial Rastertech España S.A. Tel: +34 918 467 390, ext 18. http://www.rastertech.es/ gha...@ra... |
From: Thomas H. <th...@ct...> - 2007-02-09 10:15:25
|
Grzegorz Adam Hankiewicz schrieb: > Thomas Heller wrote: >> One solution is here (haven't tried that one out): >> >> http://www.py2exe.org/index.cgi/Py2ExeSubprocessInteractions > > That doesn't work: > > http://sourceforge.net/mailarchive/message.php?msg_id=38035786 > >> and IIRC I have also posted another solution to this mailing list >> some time ago. > > I couldn't find any. Do you have the URL? > No, I didn't find what I meant. I don't have time to point out a full solution, the point is that you have to explicitely specify where stdin, stdout, and stderr should be connected to. Using PIPE, for example. If you don't do that, subprocess tried to inherit handles from the process that are closed. Hope that helps, Thomas |