“le type de l'objet datetime.datetime' n'a pas d'attribut 'datetime',” même avec “import datetime”
Je suis type object 'datetime.datetime' has no attribute 'datetime'
erreurs sur AppEngine, à se plaindre du type datetime, mais mon importation est import datetime
. Il y sont from datetime import datetime
dans autres fichiers, mais je ne pense pas que devraient toucher à ce fichier?
Il n'y a pas de "accidentelle" re-importe, j'ai vérifié. J'ai vérifié mon AppEngine les journaux, et que cela a commencé il ya 2 jours.
Je suis en utilisant 2.7 de l'exécution.
EDIT: Voici la ligne qui est la cause de l'erreur (à noter que je suis en utilisant import datetime
, PAS from datetime import datetime
)
task.due_at = datetime.datetime.strptime(date, '%Y-%m-%d %I:%M%p')
EDIT: trace de la Pile
type object 'datetime.datetime' has no attribute 'datetime'
Traceback (most recent call last):
File "/base/data/home/runtimes/python27/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "/base/data/home/apps/s~wmphighrise/1.373696587983821954/myapp/handler/decorators.py", line 22, in wrapper
return fn(*args, **kwargs)
File "/base/data/home/apps/s~wmphighrise/1.373696587983821954/myapp/handler/api/main.py", line 1343, in post
task.due_at = datetime.datetime.strptime(date, '%Y-%m-%d %I:%M%p')
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
EDIT 3: un peu de débogage
Remarque: import datetime
est en haut
#1st attempt
import datetime
class MyHandler():
def get(self):
logging.info(datetime) # => "<type 'datetime.datetime'>"
#2nd attempt
import datetime
class MyHandler():
def get(self):
import datetime # explicitly re-import the module
logging.info(datetime) # => "<module 'datetime' (built-in)>"
#3rd attempt
import datetime
class MyHandler():
def get(self):
logging.info(datetime) # => Throws UnboundLocalError: local variable 'datetime' referenced before assignment
# Is this normal? This is new to me.
import datetime
logging.info(datetime)
#4th attempt
import datetime
logging.info(datetime) # => "<module 'datetime' (built-in)>"
class MyHandler():
def get(self):
logging.info(datetime) # => "<type 'datetime.datetime'>"
Est-il un moyen pour une variable à être redéfini à l'extérieur le fichier en cours ou du module? Parce que j'ai regardé et regardé ce fichier et il n'y a pas de redéfinir à tous.
EDIT 4:
J'ai ack
'd "datetime ="
, "datetime="
, "datetime.datetime ="
et "datetime.datetime="
, mais il n'y a pas des résultats qui ne réaffectation des. J'ai vérifié mon git log pour les 2 derniers jours, et il n'y a pas de modifications qui pourraient avoir introduit
- Il n'y a pas de
datetime.datetime.datetime
. Vous avez passé une couche trop profondément dans votre création. - Oui, je sais. J'ai importé le
datetime
module. Il devrait y avoir undatetime.datetime
type de classe à elle. - il y est, mais que vous essayez d'appeler
datetime
sur undatetime.datetime
objet. Je compte 3 🙂 - L'erreur dit " datetime.datetime' n'ont 'datetime', car il n'est pas. Vous avez juste besoin d' 'datetime.datetime'.
- Sont vos modifications tout dans un module? Ou les différentes versions?
- Le tout dans un module ou un fichier. Juste essayé 3 fois.
- Ok vous avez quelque chose de bizarre se passe, et nous avons besoin de voir le code réel. Plus précisément tentative 3 n'est pas possible avec la normale de code python et il n'existe aucun moyen 4ème tentative pourrait le faire.
- Aussi, je ne crois pas qu'il pourrait possiblly le général appengine runtime sinon, toutes mes applications ont ce problème aussi 😉
Vous devez vous connecter pour publier un commentaire.
Le code que vous avez inclus fonctionne pour moi, le problème est donc probable que vous aurez l'ombre de la
datetime
module avec undatetime.datetime
objet appelédatetime
. Non, sérieusement, je voulais dire à taper tout ça.datetime
.print datetime
avant de la ligne en question?datetime
est accèdent à un même module. vous pourrait théoriquement avoir un appeldatetime.datetime = datetime.datetime.now()
fabriqué à partir d'un autre moduleack
d"datetime ="
,"datetime="
,"datetime.datetime ="
et"datetime.datetime="
, mais il n'y a pas des résultats qui ne réaffectation des. J'ai vérifié mon git log pour les 2 derniers jours, et il n'y a pas de modifications qui pourraient avoir introduit. (Il est seulement arrivé depuis 2 jours il ya)Si je vous comprends bien, vous demandez au sujet de la
UnboundLocalError
erreur dans l'extrait de code suivant. Suis-je le droit?Si oui, l'erreur est tout à fait évident. Deux choses que vous devriez comprendre:
Toutes les modifications espace de noms (cession,del,de l'importation,de la def,la classe) se produisent dans la portée locale(c'est à dire dans le champ d'application actuel dans lequel l'espace de noms-changer le code s'exécute)
importer X importe le module de X, et crée une référence à ce module dans l'espace de noms courant. c'est à dire
import
changements de noms.Bien que le nom de
datetime
fait référence au même objet(module datetime) avant et après l'appel deimport datetime
en fonctionget
, mais ces deuxdatetime
sont dans le champ d'application différent(première mondiale, la seconde un local).Une fois que Python détecter que il y a un nom(dans votre cas "datetime") dans les locaux de la portée, il va augmenter d'erreur si vous utilisez le nom avant votre nom local de liaison.
Espère que cela aide.
J'ai toujours eu un rire en disant
datetime.datetime
, mais vous avez pris encore plus loin et a demandé python pourdatetime.datetime
pour la valeur de l'attributdatetime
. 😀Et bien sûr, python n'est pas un
datetime.datetime.datetime