2015-05-20 131 views
1

我正嘗試使用gspread連接到我的谷歌牀單。下面是代碼:未定義的符號:PyUnicodeUCS2_Decode

#IMPORT STANDARD LIBRARIES 
import json 
import os 

#IMPORT THIRD PARTY LIBRARIES 
import gspread 
from oauth2client.client import SignedJwtAssertionCredentials 

key_location = '/home/selecaotwo/Dropbox/Public/my.ENV/' + os.sep + 'sys.CREDENTIALS' 
key_file_h = 'test-project-auth-a4f3c4bd20c4.json' 
print key_location + os.sep + key_file_h 

json_key = json.load(open(key_location + os.sep + key_file_h)) 
scope = ['https://spreadsheets.google.com/feeds'] 

credentials = SignedJwtAssertionCredentials(json_key['client_email'], json_key['private_key'], scope) 
gc = gspread.authorize(credentials) 

運行這段代碼給我下面的錯誤:

/home/selecaotwo/Dropbox/Public/my.ENV//sys.CREDENTIALS/test-project-auth-a4f3c4bd20c4.json 
Traceback (most recent call last): 
    File "/home/selecaotwo/Desktop/gspread-test/gspread-test-001-codeRegist-0001.py", line 17, in <module> 
    gc = gspread.authorize(credentials) 
    File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 335, in authorize 
    client.login() 
    File "/usr/local/lib/python2.7/site-packages/gspread/client.py", line 98, in login 
    self.auth.refresh(http) 
    File "build/bdist.linux-x86_64/egg/oauth2client/client.py", line 598, in refresh 
    File "build/bdist.linux-x86_64/egg/oauth2client/client.py", line 769, in _refresh 
    File "build/bdist.linux-x86_64/egg/oauth2client/client.py", line 795, in _do_refresh_request 
    File "build/bdist.linux-x86_64/egg/oauth2client/client.py", line 1425, in _generate_refresh_request_body 
    File "build/bdist.linux-x86_64/egg/oauth2client/client.py", line 1554, in _generate_assertion 
    File "build/bdist.linux-x86_64/egg/oauth2client/crypt.py", line 162, in from_string 
    File "/usr/local/lib/python2.7/site-packages/OpenSSL/__init__.py", line 36, in <module> 
    from OpenSSL import crypto 
ImportError: /usr/local/lib/python2.7/site-packages/OpenSSL/crypto.so: undefined symbol: PyUnicodeUCS2_Decode 
[Finished in 0.1s with exit code 1] 
[shell_cmd: python -u "/home/selecaotwo/Desktop/gspread-test/gspread-test-001-codeRegist-0001.py"] 
[dir: /home/selecaotwo/Desktop/gspread-test] 
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin] 

我讀了論壇,這很可能是我的Ubuntu系統(14.04 LTS)和Python之間的問題( 2.7.9),但奇怪的是當我用--enable-encoding = usc2重新編譯python時,我在同一行上得到了相同的錯誤,而不是說「未定義的符號:PyUnicodeUCS2_Decode」,它只是說「未定義的符號:PyUnicodeUCS4_Decode」 。這導致我相信這個問題可能是其他問題,我不知道如何繼續。

回答

1

我不確定這是否能解決問題。 而不是放入json文件本身,你可以嘗試輸入這樣的client_email和私鑰。 可以像這樣複製client_email。對於私鑰,代之以做:

key = u"-----BEGIN PRIVATE KEY-----\nBLABLA_\n-----END PRIVATE KEY-----\n".encode("utf-8") 


credentials = SignedJwtAssertionCredentials(client_email,key,scope) 
+0

雅各布,是的,這是我最終做的,它爲我工作。感謝您的解決方案! – ColinKennedy