유형 객체 'datetime.datetime'에는 'datetime'속성이 없습니다.


127

다음과 같은 오류가 발생했습니다.

유형 객체 'datetime.datetime'에는 'datetime'속성이 없습니다.

다음 줄에서 :

date = datetime.datetime(int(year), int(month), 1)

아무도 오류의 원인을 알고 있습니까?

from datetime import datetime도움 이 된다면 datetime을 가져 왔습니다.

감사

답변:


225

Datetime은 날짜, 시간 및 날짜 시간 (모두 데이터 유형 임)을 처리 할 수있는 모듈입니다. 이것은datetime 최상위 모듈 일뿐만 아니라 해당 모듈 내의 유형임을 의미합니다. 이것은 혼란 스럽습니다.

오류는 모듈의 이름이 혼란스럽고 사용자 또는 사용중인 모듈이 이미 가져온 내용을 기반으로합니다.

>>> import datetime
>>> datetime
<module 'datetime' from '/usr/lib/python2.6/lib-dynload/datetime.so'>
>>> datetime.datetime(2001,5,1)
datetime.datetime(2001, 5, 1, 0, 0)

그러나 datetime.datetime을 가져 오는 경우 :

>>> from datetime import datetime
>>> datetime
<type 'datetime.datetime'>
>>> datetime.datetime(2001,5,1) # You shouldn't expect this to work 
                                # as you imported the type, not the module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'datetime.datetime' has no attribute 'datetime'
>>> datetime(2001,5,1)
datetime.datetime(2001, 5, 1, 0, 0)

나는 당신이나 당신이 사용하는 모듈 중 하나가 다음과 같이 가져 왔다고 생각합니다 from datetime import datetime.


3
@jozzas 좋은 대답. 귀하의 솔루션으로 해결 된 timedelta에 문제가 있습니다. Txs.
Luis Miguel

1
@Jean 이것은 파이썬이 아닌 클래스 이름 중 하나로 자체 모듈의 이름을 섀도 잉하는 datetime의 결함입니다.
Robino

85

Python 3.3의 경우

from datetime import datetime, timedelta
futuredate = datetime.now() + timedelta(days=10)

12
+1. 내가 아는 한 import datetime항상 문제가 발생 하기 때문에 이것이 정답이어야한다고 생각합니다 . 그래서 저는 다음을 사용하는 솔루션을 선호합니다from datetime import datetime
jeff

14

당신은 사용해야합니다

date = datetime(int(year), int(month), 1)

또는 변경

from datetime import datetime

import datetime

11

모듈을 자체 별칭 으로 가져와야합니다 .

import datetime as dt
my_datetime = dt.datetime(year, month, day)

위의 방법은 다른 솔루션에 비해 다음과 같은 이점이 있습니다.

  • my_datetime대신 변수 를 호출하면 datetime 모듈 ( ) 에 date이미 있으므로 혼란 을 줄 입니다.datedatetime.date
  • 모듈과 클래스 (둘 다라고 함 datetime)는 서로 섀도 잉하지 않습니다.

1

사용한 경우 :

from datetime import datetime

그런 다음 코드를 다음과 같이 작성하십시오.

date = datetime(int(year), int(month), 1)

그러나 다음을 사용한 경우 :

import datetime

그러면 다음과 같이 쓸 수 있습니다.

date = datetime.datetime(int(2005), int(5), 1)

1

이게 훨씬 쉽다는 걸 알았습니다

from dateutil import relativedelta
relativedelta.relativedelta(end_time,start_time).seconds

1

난 당신이 이미만을 사용하여 모듈을 가져온 어쩌면 같은 오류로 실행 import datetime하므로 변경 form datetime import datetime에만 import datetime. 내가 그것을 다시 바꾼 후에 그것은 나를 위해 일했습니다.


-2
from datetime import datetime
import time
from calendar import timegm
d = datetime.utcnow()
d = d.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
utc_time = time.strptime(d,"%Y-%m-%dT%H:%M:%S.%fZ")
epoch_time = timegm(utc_time)

6
코드 전용 답변을 피하십시오. 게시물을 편집 하여 코드를 지원하는 설명과 링크를 추가 할 수 있습니다 .
Tomerikoo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.