2013-04-30 18 views
7

Nie mogę do końca życia dowiedzieć się, co powoduje ten bardzo dziwny błąd.Python ImportError dla strptime w spyder dla Windows 7

Mam uruchomiony skrypt w python 2.7 w IDE spyder dla systemu Windows 7. Używa datetime.datetime.strptime w jednym punkcie. Mogę uruchomić kod raz i wydaje mi się, że jest w porządku (mimo że nie zakończyłem debugowania, więc wyjątki zostały podniesione i nie zostało jeszcze zakończone normalnie), jeśli spróbuję ponownie uruchomić to, otrzymam następujące (koniec tylko śledzenia pokazano):

File "C:\path\to\test.py", line 220, in std_imp
self.data[key].append(dt.datetime.strptime(string_var, string_format_var))
ImportError: Failed to import _strptime because the import lockis held by another thread.

ja nie działa wiele wątków z Threading itp Jedynym sposobem, aby dostać kod, aby go przeszłość punkt ten jest całkowicie uruchom ponownie komputer. Ponowne uruchomienie spydera nie będzie działać. Wyszukiwania w Internecie nie przyniosły żadnych wskazówek ani wskazówek dla osób, które tak się stało.

Czy ktoś rozumie, co się dzieje? Czy jest to jakiś problem z GIL? Co to jest blokada importu i dlaczego wydaje mi się, że nie mogę importować tej metody modułu datetime, gdy już raz spróbowałem uruchomić kod?

+1

Czy [this] (https://bugs.launchpad.net/openobject-server/+bug/947231/comments/8) pomaga? Wydaje się być [znanym błędem] (http://bugs.python.org/issue7980). Czy moduł, z którego korzystasz, może używać wątków? – mfitzp

+0

Ciekawe, że zadziałało, dzięki. Dodanie atrapa do datetime.datetime.strptime na początku rozwiązało problem. –

Odpowiedz

12

Rozwiązaniem, jak zauważył mfitzp, było dołączenie fałszywego połączenia do datetime.datetime.strptime na początku skryptu.

np.

# This is a throwaway variable to deal with a python bug 
    throwaway = datetime.datetime.strptime('20110101','%Y%m%d')