AttributeError: the 'module' object does not have the 'SignedJwtAssertionCredentials' attribute

Problem . I used the Python Script Google Samples to upload apk to the Play Store and get a list of applications published through my account ( list_apks.py and upload_apk.py ). However, recently it began to break. I tried updating packages, for example google-api-python-client , oath2client etc., by pip install --update packagename , but that didn't help.

Magazines

This is if when listing apk's:

 Determining latest version for my.package.name... error 25-Feb-2016 06:30:52 Traceback (most recent call last): error 25-Feb-2016 06:30:52 File "list_apks.py", line 80, in <module> error 25-Feb-2016 06:30:52 main() error 25-Feb-2016 06:30:52 File "list_apks.py", line 46, in main error 25-Feb-2016 06:30:52 credentials = client.SignedJwtAssertionCredentials( error 25-Feb-2016 06:30:52 AttributeError: 'module' object has no attribute 'SignedJwtAssertionCredentials' build 25-Feb-2016 06:30:52 Found latest APK version: build 25-Feb-2016 06:30:52 Generated new APK version: 1 

This is when loading apk:

 25-Feb-2016 06:33:30 Uploading APK... 25-Feb-2016 06:33:30 Traceback (most recent call last): 25-Feb-2016 06:33:30 File "upload_apk.py", line 115, in <module> 25-Feb-2016 06:33:30 main(sys.argv) 25-Feb-2016 06:33:30 File "upload_apk.py", line 62, in main 25-Feb-2016 06:33:30 credentials = client.SignedJwtAssertionCredentials( 25-Feb-2016 06:33:30 AttributeError: 'module' object has no attribute 'SignedJwtAssertionCredentials' 

Sniper Code :

 import argparse from apiclient.discovery import build import httplib2 from oauth2client import client SERVICE_ACCOUNT_EMAIL = ( 'myaccountemail.com') # Declare command-line flags. argparser = argparse.ArgumentParser(add_help=False) argparser.add_argument('package_name', help='The package name. Example: com.android.sample') def main(): # Load the key in PKCS 12 format that you downloaded from the Google APIs # Console when you created your Service account. f = file('mykeyname.p12', 'rb') key = f.read() f.close() # HERE IS THE EXCEPTION credentials = client.SignedJwtAssertionCredentials( SERVICE_ACCOUNT_EMAIL, key, scope='https://www.googleapis.com/auth/androidpublisher') http = httplib2.Http() http = credentials.authorize(http) ... 

What else can I try? I would be grateful for your help.

+5
source share
1 answer

Finally, after so many days, I was able to find the answer to it. It turns out that the SignedJwtAssertionCredentials class SignedJwtAssertionCredentials been removed from the oath2client python package in update 2.0.0 . There was no longer oauth2client.client . Behavior ported to oauth2client.service_account.ServiceAccountCredentials .

After me worked:

 import argparse from apiclient.discovery import build from oauth2client.service_account import ServiceAccountCredentials import httplib2 from oauth2client import client SERVICE_ACCOUNT_EMAIL = ('myaccountemail.com') # Declare command-line flags. argparser = argparse.ArgumentParser(add_help=False) argparser.add_argument('package_name', help='The package name. Example: com.android.sample') def main(): key='mykeyname.p12' scope = 'https://www.googleapis.com/auth/androidpublisher' credentials = ServiceAccountCredentials.from_p12_keyfile( SERVICE_ACCOUNT_EMAIL, key, scopes=[scope] ) http = httplib2.Http() http = credentials.authorize(http) .... 

A source:

+15
source

Source: https://habr.com/ru/post/1243874/


All Articles