Erstellen von Python 2.7.1 unter Mac OS X, Importieren von Threading und einer KeyError-Ausnahme

1338
Dan

Ursprüngliches Problem:

Ich baue Python 2.7.1 unter Mac OS X 10.6.7 und habe Probleme mit einer KeyErrorAusnahme, die vom threadingModul ausgelöst wird, wenn Python beendet wird (wahrscheinlich beim atexitAufruf).

Ich habe nirgendwo eine passende Antwort gefunden und frage mich, ob hier jemand weiß, um was es sich dabei handelt und wie Python möglicherweise richtig kompiliert / konfiguriert wird, um dies zu vermeiden.

Die Schritte zur Erzeugung des Fehlers sind relativ kurz:

echo "import threading" | ./python 

Dies erzeugt die folgende Ausgabe:

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 

Der Fehler ist aller Wahrscheinlichkeit nach harmlos (ich habe keine negativen Auswirkungen erfahren), aber die Nachricht ist unerwünscht und ich würde es vorziehen, nicht da zu sein.

1

2 Antworten auf die Frage

0
blahdiblah

Der Build von Python2.7 von MacPorts bis hat dieses Problem nicht. Sie können es einfach von ihnen erhalten oder versuchen, Ihre Konfigurationsflags mit denen ihrer zu vergleichen und zu sehen, was sich unterscheidet.

Der Build von Homebrew leidet auch nicht darunter ... Ich habe mir ihre Build-Flags angesehen und kann anscheinend keine Unterschiede in ihrem Konfigurationsskript feststellen. Vielleicht übersehe ich etwas ... Dan vor 13 Jahren 0
Ich habe mein Problem herausgefunden - es war ein Versionskonflikt in der `Modules / main.c`-Datei. Ich mischte 2.6.1-Code mit 2.7.1-Code. Dan vor 13 Jahren 0
@Dan Freut mich zu hören. Ich sehe, dass Sie Ihre Frage so bearbeitet haben, dass sie auch den Fix enthält. Hier wäre es natürlicher, die Lösung als Antwort hinzuzufügen und sie als "akzeptiert" zu markieren, anstatt sie in die Frage zu stellen. blahdiblah vor 13 Jahren 0
Okay - das mache ich. Danke für den Tipp! Es wird ein wenig warten müssen - da ich unter 100 bin, kann ich mich innerhalb von 6 Stunden selbst beantworten :) Dan vor 13 Jahren 0
0
Dan

Das Problem war, dass ich eine benutzerdefinierte Modules / main.c -Datei aus einer älteren Python-Version (2.6.1) hatte, die meine Version 2.7.1 verunreinigte. Obwohl sie nahezu identisch sind, besteht der Hauptunterschied darin, dass es in der Datei 2.6.1 main.c eine WaitForThreadShutdown(void)Routine gibt, die Operationen ausführt, wenn das Threading-Modul importiert wurde. Modules/main.cDaraufhin wurde eine neue benutzerdefinierte Datei erstellt, die auf der neuen Version 2.7.1 basierte. Dadurch wurde mein Problem behoben.

Mein Fehler.