5

समस्या है: मैं Play स्टोर पर और मेरे खाते (list_apks.py और upload_apk.py) के माध्यम से प्रकाशित ऐप्लिकेशन की सूची प्राप्त करने apk अपलोड करने के लिए Python Script Samples by Google उपयोग कर रहे हैं। हालांकि हाल ही में यह तोड़ना शुरू कर दिया। मैंने pip install --update packagename करके google-api-python-client, oath2client आदि जैसे पैकेज अपडेट करने का प्रयास किया है, लेकिन इससे मदद नहीं मिली।AttributeError: 'मॉड्यूल' ऑब्जेक्ट कोई विशेषता 'SignedJwtAssertionCredentials'

लॉग्स:

यह अगर जबकि लिस्टिंग apk का:

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 

यह है जब अपलोड करने 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' 

कोड sniplet:

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) 
    ... 

और मैं क्या कोशिश कर सकता हूं? आपकी सहायता का मुझ पर आभार होगा।

उत्तर

15

अंततः कई दिनों के बाद, मैं इसका जवाब ढूंढ पाया। यह पता चला है कि SignedJwtAssertionCredentials को पायथन पैकेज 2.0.0 अद्यतन में हटा दिया गया था। यह oauth2client.client के तहत और नहीं था। व्यवहार oauth2client.service_account.ServiceAccountCredentials पर ले जाया गया है।

मेरे लिए काम किया है:

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) 
    .... 

स्रोत:

संबंधित मुद्दे