2013-04-30 6 views
7

Non riesco, per la vita di me, a capire cosa stia causando questo errore molto strano.Python ImportError per strptime in spyder per windows 7

Sto eseguendo uno script in python 2.7 nella spyder IDE per Windows 7. Utilizza datetime.datetime.strptime in un punto. Posso eseguire il codice una volta e sembra soddisfacente (anche se non ho completato il debug, quindi sono state sollevate eccezioni e non è ancora stato completato normalmente), quindi se provo a eseguirlo di nuovo ottengo il seguente comando (solo fine del traceback è mostrato):

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.

io non sono in esecuzione più thread con Threading ecc l'unico modo per ottenere il codice per renderlo oltre questo punto è quello di riavviare completamente il computer. Il riavvio dello spyder non funzionerà. Le ricerche sul Web non sembrano aver dato alcun indizio o indicazione di altri che hanno avuto questo risultato.

Qualcuno capisce cosa sta succedendo? È una specie di problema GIL? Qual è il blocco di importazione, e perché mi sembra di impedirmi di importare questo metodo del modulo datetime una volta che ho già provato a eseguire il codice una volta?

+1

fa [questo] (https://bugs.launchpad.net/openobject-server/+bug/947231/comments/8) aiuto? Sembra essere un [noto bug] (http://bugs.python.org/issue7980). Un modulo che stai usando può utilizzare il threading? – mfitzp

+0

Interessante, ha funzionato, grazie. L'aggiunta della chiamata fittizia a datetime.datetime.strptime all'inizio ha risolto il problema. –

risposta

12

La soluzione, come notato da mfitzp, includeva una chiamata fittizia a datetime.datetime.strptime all'inizio dello script.

ad es.

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