1

だから私はモジュールを作成しています。それをPythonシェルにインポートし、いくつかのものを実行して、すべての機能が動作することを確認しています。

何らかの理由でコードを実行するたびに、次のエラーが発生します。

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
4

1 に答える 1

6

古いバイトコード キャッシュで実行しているか、既存のインタープリターを再起動せずにコードを再実行しています。

トレースバック コードには、ファイル名と行番号の情報を含むバイトコードのみが含まれます。例外が発生すると、ソース ファイルが読み込まれて元のコード行が取得されますが、ソース ファイルが変更されていると、間違った行が表示されます。

インタープリターを再起動するか、すべての*.pycファイルを削除します。後者は、インタープリターがコードを再度インポートするときに再作成されます。

あなたの特定の例外については; おそらくどこかdatetimeのモジュールからクラスをインポートしました:datetime

from datetime import datetime

datetimeクラスには属性がなく、モジュールだけが属性を持っていますdatetime

于 2013-06-08T01:06:17.377 に答える