On Tue 6/07/2010 2:55 AM, Anthony Tuininga wrote: > On Sun, Jul 4, 2010 at 5:45 PM, Craig McQueen > <[email protected]> wrote: >> On Sat 3/07/2010 4:25 AM, Anthony Tuininga wrote: >>> On Thu, Jul 1, 2010 at 9:03 PM, Craig McQueen >>> <[email protected]> wrote: >>>> I looked at the source code, and found that in the initscripts/Console.py-- >>>> http://cx-freeze.svn.sourceforge.net/viewvc/cx-freeze/trunk/initscripts/Console.py?revision=205&view=markup >>>> >>>> --there are the following lines: >>>> >>>> if sys.version_info[:2]>= (2, 5): >>>> module = sys.modules.get("threading") >>>> if module is not None: >>>> module._shutdown() >>>> >>>> If these lines are commented-out, then the error message at exit does not >>>> occur. >>>> >>>> Why are those lines there, and what is the consequence of me removing them? >>> Hi Craig, >>> >>> The reason those lines are there is because without them any threads >>> that are currently running will simply die when the application ends. >>> The Python interpreter itself calls an internal routine that waits for >>> the threads to terminate on their own. Its unfortunate that this isn't >>> included inside Py_Finalize() but its not. Before Python 2.5, this was >>> done via means of an atexit function (which happened inside >>> Py_Finalize) but with Python 2.5 and up this has been changed to call >>> a special function within the main routine of the Python interpreter. >>> I have replicated the behavior using the above lines and that has >>> worked for me for some time. Would you be able to send me a sample >>> program that I can run and that demonstrates the problem? Thanks. >>> >> Try a Python program that contains only a single line: >> >> import threading >> >> Of course, it does nothing useful, and should just return without doing or >> printing anything. >> >> On Python 2.6.5, on both Windows 2000 and Ubuntu Linux 10.04, if I make an >> executable with cx_Freeze >> 4.1.2, when I run it I get the error message as described above. > Indeed. I just checked and this has been fixed in Python 2.6 (released > in 2.6.5) and now Python 2.7. The same code is in Python 3.1 so only > Python 2.5 is still broken. So I'll be changing this to look for > Python 2.5 only. Anyone else who runs into the problem in Python 2.6 > can write this code themselves or update to the latest bugfix release.
Great! Thanks for looking into this. I suppose if you wanted to be kind to people who don't have the latest Python 2.6, you could use the check: if (2,5,0) <= sys.version_info[:3] <= (2,6,4): ... Regards, Craig McQueen ------------------------------------------------------------------------------ This SF.net email is sponsored by Sprint What will you do first with EVO, the first 4G phone? Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first _______________________________________________ cx-freeze-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/cx-freeze-users
