2017-07-17 2 views
2

Ich habe das seltsamste Problem. Diese Python-Code funktioniert auf einem Raspberry Pi ausgeführt stock Debian:Python-Modul-Objekt hat kein Attribut struct_time mit Homebrew auf OSX Sierra aber nicht debian

from datetime import datetime, date, time 
now = datetime.now() 
print(now) 
print(now.strftime("%d/%m/%y %H:%M")) 

Und gibt die erwartete:

2017-07-17 08:17:17.567342 
17/07/17 08:17 

Auf OSX Sierra mit Python über Homebrew installiert es gibt:

2017-07-17 08:10:21.196849 
2017-07-17 08:10:21.197579 
Traceback (most recent call last): 
    File "time.py", line 6, in <module> 
    print(now.strftime("%d/%m/%y %H:%M")) 
    File "/Users/craign/Desktop/time.py", line 6, in <module> 
    print(now.strftime("%d/%m/%y %H:%M")) 
AttributeError: 'module' object has no attribute 'struct_time' 

I haben:

$ brew --version 
Homebrew 1.2.4 
$ python --version 
Python 2.7.13 

Hat jemand Ideen? Ich habe die Interwebs, StackOverflow, etc. für eine verrückte Zeit damit durchforstet und fühle mich wie ein totaler Idiot.

+0

Und welche Version von Python haben Sie auf Debian (Raspberry Pi)? –

+0

Ich denke, es gibt ein Problem mit Namenskonflikten während des Imports. Tatsächlich importieren Sie [datetime.time] (https://docs.python.org/2/library/datetime.html#datetime.time). "Struct_time" ist jedoch Mitglied von [time] Modul (https://docs.python.org/2/library/datetime.html#datetime.time). Irgendwie wird während des Imports ein Name von einem anderen beschattet. Was ich vorschlagen würde ist, ** als ** für alle datetime Imports zu verwenden, d. H. 'Von datetime import time als datetimetime ', und prüfen, ob dies das Problem löst –

+0

Ich glaube running.t ist korrekt. Das OP-Modul heißt time.py, was Pythons eingebaute Zeit wahrscheinlich überschattet. – BoboDarph

Antwort

1

Sie sollten den Namen Ihres Skripts ändern time.py von my_time.py oder was auch immer Ihnen in den Sinn kommt und entfernen Sie die Datei time.pyc, dass die Kompilation erstellt wurde und es sollte wie erwartet funktionieren. Nichts ist falsch mit Ihrem Setup, dies ist das erwartete Verhalten und es kann leicht reproduziert werden.

Warum?: Das Modul time existiert bereits in Python und Sie haben es versehentlich überschrieben.

Verwandte Themen