Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Original Problem:

I am building Python 2.7.1 on Mac OS X 10.6.7 and am having issues with a KeyError exception being thrown from the threading module when Python is quit (likely on the atexit call).

I haven't been able to find a proper answer anywhere, and am wondering if someone here knows what the issue may be and how to perhaps compile/configure Python correctly in order to avoid this.

The steps to produce the error is relatively short:

echo "import threading" | ./python

This produces the following output:

Exception KeyError: KeyError(140735086161056,) in <module 'threading' from '/Users/danerik/quantumnotes/qw-control/quantumsource/external-libs/build/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.pyc'> ignored

The error is in all likelihood harmless (I have experienced no ill effects), but the message is undesirable and I would prefer it not be there.

share|improve this question

The build of python2.7 from MacPorts to doesn't have that problem. You could just get it from them, or try comparing your configure flags to theirs and see what differs.

share|improve this answer
The build from Homebrew also doesn't suffer this... I've been looking at their build flags, and can't seem to find differences in their configure script. Perhaps I'm overlooking something... – Dan Jun 10 '11 at 21:10
I figured out my problem - it was an issue of a version mismatch in the Modules/main.c file. I was mixing 2.6.1 code with 2.7.1 code. – Dan Jun 10 '11 at 22:15
@Dan Glad to hear it. I see that you edited your question to include the fix too. Around here it would be more natural to add the solution as an answer and then mark it "accepted" rather than making it part of the question. – blahdiblah Jun 10 '11 at 22:17
Alright - I'll do that. Thanks for tip! It'll have to wait a bit - as I'm under 100 in reputation, I can first self-answer in 6 hours :) – Dan Jun 10 '11 at 22:22
up vote 0 down vote accepted

The problem I experienced was that I had a custom Modules/main.c file from an older Python release (2.6.1) polluting my 2.7.1 release. Although nearly identical, the main difference is that in the 2.6.1 main.c file there was a WaitForThreadShutdown(void) routine that would perform operations if the threading module had been imported. A new custom Modules/main.c file was then made based on the new 2.7.1 release, and this solved my issue.

My bad.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .