2013-04-30 3 views
7

나는이 인생의 가장 이상한 오류를 일으키는 원인을 파악할 수 없다.Windows 7 용 스파이더에서 strptime을위한 Python ImportError

Windows 7의 스파이더 IDE에서 파이썬 2.7로 스크립트를 실행하고 있습니다. 한 지점에서 datetime.datetime.strptime을 사용합니다. 나는 한 번 코드를 실행할 수 있습니다. (디버깅이 끝나지 않았으므로 예외가 발생하고 정상적으로 완료되지 않았지만) 다시 실행하려고하면 다음과 같은 결과가 나타납니다 (역 추적 만 끝납니다.) 표시됩니다 :

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.

가 나는 등 스레딩과이 점은 컴퓨터를 완전히 다시 시작하는 것입니다 과거를 만들기 위해 코드를 얻을 수있는 유일한 방법은 여러 스레드를 실행하고 있지 않다. 스파이더를 다시 시작하면 작동하지 않습니다. 웹 검색은 이런 일이 일어난 다른 사람들의 단서 또는 표시를 산출하지 못했습니다.

어떤 일이 벌어지고 있는지 이해할 수 있습니까? 이것은 일종의 길 문제입니까? 가져 오기 잠금은 무엇입니까? 그리고 일단 내가 한 번 코드를 실행하려고하면 datetime 모듈의이 메서드를 가져 오지 못하게되는 것 같습니다.

+1

[this] (https://bugs.launchpad.net/openobject-server/+bug/947231/comments/8)가 도움이됩니까? [알려진 버그] (http://bugs.python.org/issue7980) 인 것 같습니다. 사용중인 모듈이 스레딩을 사용할 수 있습니까? – mfitzp

+0

흥미 롭다. 처음에 datetime.datetime.strptime에 더미 호출을 추가하면 문제가 해결되었습니다. –

답변

12

mfitzp에서 설명한대로이 솔루션은 스크립트 시작 부분에 datetime.datetime.strptime에 대한 더미 호출을 포함해야합니다.

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