7

私は一生、この非常に奇妙なエラーの原因を突き止めることはできません。

Windows 7のスパイダーIDEでpython 2.7でスクリプトを実行しています。ある時点でdatetime.datetime.strptimeを使用しています。コードを 1 回実行すると問題ないように見えます (ただし、デバッグは終了していないため、例外が発生し、まだ正常に完了していません)。もう一度実行しようとすると、次のようになります (トレースバックの終わりのみ)示されています):

ファイル "C:\path\to\test.py"、220 行目、std_imp
self.data[key].append(dt.datetime.strptime(string_var, string_format_var))
の ImportError: Failed to import _strptime because the import lockis holdis別のスレッドによって。

スレッディングなどで複数のスレッドを実行していません。コードを取得してこの時点を通過させる唯一の方法は、コンピューターを完全に再起動することです。スパイダーを再起動しても機能しません。ウェブ検索では、これが起こった他の人の手がかりや兆候は得られないようです.

誰が何が起こっているのか理解していますか? これはある種のGILの問題ですか?インポート ロックとは何ですか? 一度コードを実行しようとすると、datetime モジュールのこのメソッドをインポートできないように見えるのはなぜですか?

4

1 に答える 1

13

mfitzp が指摘したように、解決策は、スクリプトの先頭に datetime.datetime.strptime へのダミー呼び出しを含めることでした。

例えば

  # This is a throwaway variable to deal with a python bug
  throwaway = datetime.datetime.strptime('20110101','%Y%m%d')
于 2013-05-01T16:43:35.757 に答える