Сборка 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, и это решило мою проблему.
Виноват.