2017-11-27 29 views
0

私は次のことを続けています:AttributeError: 'NoneType'オブジェクトには属性 'is_downloaded'がありません。私はPyupdaterと実行可能ファイルを統合しようとしています。私のamazonフォルダにはpyu_test-win-1.0.zipとversions.gzが入っています。AttributeError: 'NoneType'オブジェクトに属性がありません 'is_downloaded'

Error: 
{} 
{} 
nothing new 
Traceback (most recent call last): 
    File "C:/Users/D1/Desktop/31/pyu_test.py", line 25, in <module> 
    if app_update.is_downloaded(): 
AttributeError: 'NoneType' object has no attribute 'is_downloaded' 

Process finished with exit code 1 

I'm getting also unresolved reference client_config as well as ClientConfig is underlined when I hover. 

これがためのものです: pyu_test.py

from pyupdater.client import Client 
from client_config import ClientConfig 

APP_NAME = 'pyu_test' 
APP_VERSION = '1.0' 

def print_status_info(info): 
    total = info.get(u'total') 
    downloaded = info.get(u'downloaded') 
    status = info.get(u'status') 
    print (downloaded, total, status) 


client = Client(ClientConfig(), refresh=True, 
         progress_hooks=[print_status_info]) 


app_update = client.update_check(APP_NAME, APP_VERSION) 

if app_update is not None: 
    app_update.download() 
else: 
    print("nothing new") 

if app_update.is_downloaded(): 
    app_update.extract_overwrite() 

client_config

class ClientConfig(object): 
    PUBLIC_KEY = '+WDWADADAWDADDWDW' 
    APP_NAME = 'pyu_test' 
    COMPANY_NAME = 'pyu_test' 
    UPDATE_URLS = ['https://console.aws.amazon.com/s3/buckets/xWAXWED/?region=us-east-2&tab=overview'] 
    MAX_DOWNLOAD_RETRIES = 3 

私はこの問題に対処することができますどのように任意のアイデア。乾杯。 、次のように働くかもしれない正確に何.download()によって

+0

あなたの問題は、 'app_update'が' None'になることがあることです。 '.download()'(これは安全なことです)を呼び出す前にチェックしますが、安全でない '.is_downloaded()'を呼び出す前ではありません。 'app_updateがNoneの場合にはエラーになります。 。 – Mark

+0

@マークよくapp_updateをNoneに変更すると、同じ問題が発生するので、理由がわからない場合は –

+0

@VanPeerはチェックしていません(APP_NAME、APP_VERSION) - > APP_NAME = 'pyu_test' APP_VERSION =コードで「0.1.0」早い?うーん.. –

答えて

0

app_update = client.update_check(APP_NAME, APP_VERSION) 

if app_update is not None: 
    app_update.download() 
    app_update.extract_overwrite() 
else: 
    print("App Update not downloaded") 

かかわらず、それが何をするかの、次はもはや特定の種類のエラーを持っていますあなたのコードの「安全な」バージョンであり、 。

app_update = client.update_check(APP_NAME, APP_VERSION) 

if app_update is not None: 
    app_update.download() 
else: 
    print("nothing new") 

if app_update is not None and app_update.is_downloaded(): 
    app_update.extract_overwrite() 

文は、この順番で記述する必要があり、場合には、この第二のことに注意してください:

if app_update.is_downloaded() and app_update is not None: 

Pythonは表現のこれらの種類を評価する方法に起因する潜在的なエラーになります。

あなたのコードが正確に何をしているのかを分からずに、ベストプラクティスを変えることについてもっと詳しく説明することはできません。

+0

これは、アマゾンから何もダウンロードされていないようだが、 "何も新しい"をプリントしないようだが、エラーは取り除かれた。 –

+0

AttributeError: 'NoneType'オブジェクトに属性 'download'がない。 –

+0

@TysonDogerzondaあなたのエラーは軽微ではないようだ。 'pdb'で少し調べてみると、' update_check'(そして '_update_check')の実行中に' self.ready = False'が間違っているように見えます---行240 [here](https:// github .com/JMSwag/PyUpdater/blob/master/pyupdater/client/__ init__.py)をpyupdaterのソースに追加します。あらかじめ 'client.refresh()'を呼び出すと、433行目の '_get_key_data'の問題が指摘されます。特に、441行目で、gzipされたファイルを解凍しようとすると' IOError'が発生します。 この時点で、バグを追跡することはあまりにも多くの作業のようです。うまくいけば、 – Mark

関連する問題