Объект 'module' не имеет атрибута '_strptime' с несколькими потоками Python
Я получаю эту ошибку 'module' object has no attribute '_strptime'
, но только когда я использую несколько потоков. Когда я использую только один, он отлично работает. Я использую python 2.7 x64. Здесь у нас приведенная функция я вызывает
import datetime
def get_month(time):
return datetime.datetime.strptime(time, '%Y-%m-%dT%H:%M:%S+0000').strftime("%B").lower()
Вот полная трассировка:
AttributeError: 'module' object has no attribute '_strptime'
Exception in thread Thread-22:
Traceback (most recent call last):
File "C:\Python27x64\lib\threading.py", line 810, in __bootstrap_inner
self.run()
File "C:\Python27x64\lib\threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "C:\file.py", line 81, in main
month=get_month(eventtime)
File "C:\file.py", line 62, in get_month
return datetime.datetime.strptime(time, '%Y-%m-%dT%H:%M:%S+0000').strftime("%B").lower()
AttributeError: 'module' object has no attribute '_strptime'
Ответы
Ответ 1
Просто столкнулся с этой точной проблемой. Это сложный вопрос - мне потребовался час или около того, чтобы отследить его. Я попробовал запустить оболочку и ввести следующий код:
import datetime
print(datetime.datetime.strptime("2015-4-4", "%Y-%m-%d"))
Все прошло отлично. Затем я попробовал это в пустом файле в моей рабочей области. Это дало ту же самую ошибку, которую вы описали. Я попытался запустить его из командной строки в моей рабочей области. Все еще дала ошибку. Затем я запустил оболочку из своего рабочего пространства. На этот раз он дал ошибку в среде оболочки. Как оказалось, любой каталог, отличный от того, с которым я работал, работал отлично.
Проблема заключалась в том, что мой проект был календарным приложением python, а мой основной файл назывался "calendar.py". Это противоречило некоторому внутреннему импорту, создавая причудливую ошибку.
В вашем случае, я бы сказал, что проблема заключается в имени вашего файла: "file.py". Назовите это чем-то другим, и вам должно быть хорошо идти.
Ответ 2
Проблема описана в сообщении списка рассылки " ошибка потока в strptime".
datetime.strptime
имеет проблему с модулем Python 2 threading
. Обходной путь предположил, что кажется для вызова strptime = datetime.datetime.strptime
перед началом любых потоков.
Ответ 3
Я могу подтвердить, что проблема связана с многопоточной обработкой, и иногда это происходит со мной, когда я использую datetime.datetime.strptime
в сочетании с модулем ThreadPool
.
Я смог исправить это в своем script, импортировав "отсутствующий" модуль следующим образом:
import _strptime