2013-04-30 9 views
7

私の人生にとっては、この非常に奇妙なエラーの原因を突き止めることはできません。Windows 7用のスパイダーでstrptime用のPython ImportError

私は、Windows 7用のスパイダーIDEでPython 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.

私はこのポイントを過ぎてそれを作るためのコードを取得するための唯一の方法は完全にコンピュータを再起動することであるなどスレッドで複数のスレッドを実行しているわけではありません。スパイダーを再起動すると動作しません。ウェブ検索は、これを起こした他の人の手がかりや兆候をもたらさなかったようだ。

何が起こっているのか理解していますか?これはある種のGIL問題ですか?インポートロックとは何ですか?また、一度コードを実行しようとすると、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') 
関連する問題