web-dev-qa-db-fra.com

l'objet de type 'datetime.datetime' n'a pas d'attribut 'fromisoformat'

J'ai un script avec l'importation suivante:

from datetime import datetime

et un morceau de code où j'appelle:

datetime.fromisoformat(duedate)

Malheureusement, lorsque j'exécute le script avec une instance de Python 3.6, la console renvoie l'erreur suivante:

AttributeError: l'objet de type 'datetime.datetime' n'a pas d'attribut 'fromisoformat'

J'ai essayé de l'exécuter à partir de deux instances d'anaconda (3.7 et 3.8) et cela fonctionne bien et en douceur. J'ai supposé qu'il y avait un problème d'importation alors j'ai essayé de copier datetime.py depuis anaconda/Lib vers le répertoire de script, sans succès.

Le datetime.py contient clairement la classe datetime et la méthode fromisoformat mais elle semble toujours dissociée. J'ai même essayé de lier explicitement le datetime.py fichier, avec la même erreur:

parent_dir = os.path.abspath(os.path.dirname(__file__))
vendor_dir = os.path.join(parent_dir, 'libs')
sys.path.append(vendor_dir+os.path.sep+"datetime.py")

Pouvez-vous m'aider? Mes idées sont terminées ...

3
Akinn

J'ai eu le même problème et j'ai trouvé ceci:

https://pypi.org/project/backports-datetime-fromisoformat/

>>> from datetime import date, datetime, time
>>> from backports.datetime_fromisoformat import MonkeyPatch
>>> MonkeyPatch.patch_fromisoformat()

>>> datetime.fromisoformat("2014-01-09T21:48:00-05:30")
datetime.datetime(2014, 1, 9, 21, 48, tzinfo=-05:30)

>>> date.fromisoformat("2014-01-09")
datetime.date(2014, 1, 9)

>>> time.fromisoformat("21:48:00-05:30")
datetime.time(21, 48, tzinfo=-05:30)

Fonctionne comme un charme.

2
Rudertier