2013-04-30 13 views
7

Ich kann nicht für das Leben von mir herausfinden, was diesen sehr merkwürdigen Fehler verursacht.Python ImportError für strptime in Spyder für Windows 7

Ich bin ein Skript in Python 2.7 in der Spyder-IDE für Windows 7 ausgeführt. Es verwendet datetime.datetime.strptime an einem Punkt. Ich kann den Code einmal ausführen und es scheint in Ordnung zu sein (obwohl ich das Debuggen noch nicht abgeschlossen habe, also wurden Ausnahmen ausgelöst und es wurde noch nicht normal beendet), dann bekomme ich folgendes (nur Ende des Tracebacks) gezeigt wird):

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.

ich bin nicht mehrere Threads mit Threading usw. die einzige Art und Weise ausgeführt wird, den Code zu bekommen, um es über diesen Punkt vollständig ist, um den Computer neu zu starten. Der Neustart von Spyder funktioniert nicht. Websuchen scheinen keine Hinweise oder Hinweise auf andere zu geben, die dies passiert haben.

Versteht jemand, was vor sich geht? Ist das ein GIL-Problem? Was ist die Importsperre, und warum scheint es mich daran zu hindern, diese Methode des Datetime-Moduls zu importieren, nachdem ich den Code einmal ausgeführt habe?

+1

Does [diese] (https://bugs.launchpad.net/openobject-server/+bug/947231/comments/8) helfen? Es scheint ein [bekannter Fehler] zu sein (http://bugs.python.org/issue7980). Könnte ein Modul, das Sie verwenden, Threading verwenden? – mfitzp

+0

Interessant, das hat funktioniert, danke. Das Hinzufügen des Dummy-Aufrufs zu datetime.datetime.strptime am Anfang löste das Problem. –

Antwort

12

Die Lösung, wie von Mfitzp bemerkt, war, einen Dummy-Aufruf zu datetime.datetime.strptime am Anfang des Skripts aufzunehmen.

z.B.

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