Сборка Python 2.7.1 в Mac OS X, импорт потоков и исключение KeyError

Оригинальная проблема:

Я собираю Python 2.7.1 на Mac OS X 10.6.7 и у меня возникают проблемы с KeyError исключение выбрасывается из threading модуль при выходе из Python (вероятно, на atexit вызов).

Я нигде не смог найти правильного ответа, и мне интересно, знает ли кто-нибудь здесь, в чем может быть проблема и как, возможно, правильно скомпилировать / настроить Python, чтобы избежать этого.

Шаги для создания ошибки относительно короткие:

echo "import threading" | ./python

Это дает следующий вывод:

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

Ошибка, по всей вероятности, безвредна (я не испытал никаких побочных эффектов), но сообщение нежелательно, и я бы предпочел, чтобы его не было.

2 ответа

Решение

Проблема, с которой я столкнулся, заключалась в том, что у меня был собственный файл Modules/main.c из более старой версии Python (2.6.1), загрязняющий мою версию 2.7.1. Хотя это почти идентично, главное отличие состоит в том, что в файле 2.6.1 main.c WaitForThreadShutdown(void) подпрограмма, которая будет выполнять операции, если модуль потоков был импортирован. Новый обычай Modules/main.c Затем был создан файл на основе новой версии 2.7.1, и это решило мою проблему.

Виноват.

В сборке python2.7 из MacPorts такой проблемы нет. Вы можете просто получить их от них или попробовать сравнить ваши флаги конфигурации с их флагами и посмотреть, что отличается.

Другие вопросы по тегам