2013-06-08 3 views
1

Итак, я создаю модуль, и я импортирую его в оболочку python и запускаю некоторые вещи, чтобы убедиться, что все функции работают.Ошибка всегда в строке 102 моего кода

По какой-то причине каждый раз, когда я запускаю код, он дает следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/ryansaxe/Desktop/Code/python/modules/pymaps.py", line 102, in url_maker 
    #anything can be here 
AttributeError: type object 'datetime.datetime' has no attribute 'datetime' 

Так где #anything can be here есть, является то, что на линии 102 моего кода. Первоначальная линия 102 была:

if isinstance(startindex,datetime.datetime): 

, и я получил ошибку выше. Я поставил операцию быстрой печати в строке 102 для проверки, и она дала ту же ошибку:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/ryansaxe/Desktop/Code/python/modules/pymaps.py", line 102, in url_maker 
    print 'Hello' 
AttributeError: type object 'datetime.datetime' has no attribute 'datetime' 

Это какая-то ошибка? Почему это говорит мне, что есть ошибка с datetime в строке print 'Hello'?

Потому что это может быть полезно, я дам вам функцию, с которой у меня возникают проблемы, поскольку я не знаю, как это возможно. Я держу в print 'Hello' линии, так что вы можете увидеть, где линия 102 является:

def url_maker(latitudes,longitudes,times=None,color='red',label=' ',zoom=12,center=None,start=None,end=None,by=None,size='600x300'): 
    urls = [] 
    import datetime 
    if isinstance(times[0],str) or isinstance(times[0],datetime.datetime): 
     from dateutil import parser 
     if isinstance(times[0],str): 
      times = [parser.parse(x) for x in times] 
     if isinstance(start,str): 
      startindex = parser.parse(start) 
     else: 
      startindex = start 
     if isinstance(end,str): 
      endindex = parse.parse(end) 
     else: 
      endindex = end 
     print 'Hello' 
     if isinstance(startindex,datetime.datetime): 
      startpos = between_times(times,startindex,by='start') 
     elif isinstance(startindex,int): 
      if isinstance(endindex,datetime.datetime): 
       startpos = between_times(times,endindex,by='end') - start 
      else: 
       startpos = start 
     else: 
      pass 
     if isinstance(endindex,datetime.datetime): 
      endpos = between_times(times,endindex,by='end') 
     elif isinstance(endindex,int): 
      if isinstance(startindex,datetime.datetime): 
       endpos = between_times(times,startindex,by='start') + end 
      else: 
       endpos = end 
     else: 
      pass 
    else: 
     times = range(1,len(latitudes) + 1) 
     if isinstance(start,int): 
      startpos = start 
     else: 
      startpos = None 
     if isinstance(end,int): 
      endpos = end 
     else: 
      endpos = None 
    if isinstance(by,str): 
     lat,lon,t = latitudes[startpos:endpos],latitudes[startpos:endpos],times[startpos:endpos] 
     print lat 
     t,lats,lons = time_sample(t,by,lat,lon) 
    elif isinstance(by,int): 
     lats,lons,t = latitudes[startpos:endpos:by],latitudes[startpos:endpos:by],times[startpos:endpos:by] 
    else: 
     lats,lons,t= latitudes[startpos:endpos],latitudes[startpos:endpos],times[startpos:endpos] 
    print t 
    print len(t) 
    if center == None: 
     latit = [str(i) for i in lats] 
     longi = [str(i) for i in lons] 
     center = '&center=' + common_finder(latit,longi) 
    else: 
     center = '&center=' + '+'.join(center.split()) 
    zoom = '&zoom=' + str(zoom) 
    for i in range(len(lats)): 
     #label = str(i) 
     x,y = str(lats[i]),str(lons[i]) 
     marker = '&markers=color:' + color + '%7Clabel:' + label + '%7C' + x + ',' + y 
     url = 'http://maps.googleapis.com/maps/api/staticmap?maptype=roadmap&size=' + size + zoom + center + marker + '&sensor=true' 
     urls.append(url) 
     #print i 
    return urls,t 
+0

Отверните свой код до меньшего примера воспроизведения. Уверен, что у вас есть 'from datetime import datetime'. –

+0

Да, у меня было это в оболочке ранее для тестирования чего-то –

ответ

6

Вы работаете с несвежим кэшем байт-коды или повторно запустить код в существующем интерпретаторе без перезапуска.

Код трассировки имеет только байт-код для работы с, который содержит имя файла и информацию о номере. Когда возникает исключение, исходный файл загружается для извлечения исходной строки кода, но если исходный файл был изменен, это приводит к отображению неправильной строки.

Перезапустите интерпретатор и/или удалите все файлы *.pyc; последний будет воссоздан, когда интерпретатор снова импортирует код.

Что касается вашего конкретного исключения; Вы, вероятно, импортированы datetime класса от datetime модуля где:

from datetime import datetime 

datetime класс не имеет атрибута datetime, только модуль делает.

Смежные вопросы