7

我一生都无法弄清楚是什么导致了这个非常奇怪的错误。

我在 Windows 7 的 spyder IDE 中的 python 2.7 中运行脚本。它在某一时刻使用 datetime.datetime.strptime。我可以运行一次代码,它看起来很好(虽然我还没有完成调试,所以已经引发了异常并且它还没有正常完成),然后如果我再次尝试运行它,我会得到以下信息(仅限回溯结束显示):

文件“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 lock is holded由另一个线程。

我没有使用线程等运行多个线程。让代码通过这一点的唯一方法是完全重新启动计算机。重新启动 spyder 将不起作用。网络搜索似乎没有提供任何其他人发生过这种情况的线索或迹象。

有谁明白发生了什么?这是某种 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 回答