Cla*_*lay 39 python google-calendar-api
我正在使用G Suite的服务帐户进行完整的域名授权.我有一个只读访问Google日历的脚本.该脚本工作正常,但在"构建"服务时抛出错误(在后台线程上?).这是代码:
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
import urllib
import requests
from apiclient.discovery import build
cal_id = "my_calendar_id@group.calendar.google.com"
scopes = ['https://www.googleapis.com/auth/calendar.readonly']
credentials = ServiceAccountCredentials.from_json_keyfile_name('my_cal_key.json', scopes=scopes)
delegated_credentials = credentials.create_delegated('me@mydomain.com')
http_auth = delegated_credentials.authorize(Http())
# This is the line that throws the error
cal_service = build('calendar','v3',http=http_auth)
#Then everything continues to work normally
request = cal_service.events().list(calendarId=cal_id)
response = request.execute()
# etc...
Run Code Online (Sandbox Code Playgroud)
抛出的错误是:
WARNING:googleapiclient.discovery_cache:file_cache is unavailable when using oauth2client >= 4.0.0
Traceback (most recent call last):
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/__init__.py", line 36, in autodetect
from google.appengine.api import memcache
ImportError: No module named 'google'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/file_cache.py", line 33, in <module>
from oauth2client.contrib.locked_file import LockedFile
ImportError: No module named 'oauth2client.contrib.locked_file'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/file_cache.py", line 37, in <module>
from oauth2client.locked_file import LockedFile
ImportError: No module named 'oauth2client.locked_file'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/__init__.py", line 41, in autodetect
from . import file_cache
File "/Users/myuseraccount/anaconda3/lib/python3.5/site-packages/googleapiclient/discovery_cache/file_cache.py", line 41, in <module>
'file_cache is unavailable when using oauth2client >= 4.0.0')
ImportError: file_cache is unavailable when using oauth2client >= 4.0.0
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,这是我能解决的问题吗?我已经尝试重新安装和/或升级google包.
Tom*_*ams 76
在这里聚会迟到了,但今天我遇到了类似的问题并在此找到答案
只解决错误的解决方案: file_cache is unavailable when using oauth2client >= 4.0.0
解:
改变你discovery.build()的领域cache_discovery=False
即
discovery.build(api, version, http=http, cache_discovery=False)
Run Code Online (Sandbox Code Playgroud)
编辑:
正如@Chronial所说,这将禁用缓存.
可以在此处找到不禁用缓存的解决方案
小智 10
模块"google-api-python-client"的代码头说...
install_requires = [
'httplib2>=0.9.2,<1dev',
'oauth2client>=1.5.0,<5.0.0dev', <<=============
'six>=1.6.1,<2dev',
'uritemplate>=3.0.0,<4dev',
]
Run Code Online (Sandbox Code Playgroud)
所以,我已经卸载了oauth2client版本4.0.0
然后,我从offial python站点的tar.gz文件中下载了oauth2client 1.5.2 https://pypi.python.org/pypi/oauth2client/1.5.2
我已安装此下载文件,因此我有1.5.2版本的oauth2client
Package Version
------------------------ ---------
certifi 2016.9.26
discovery 0.0.4
distribute 0.7.3
future 0.16.0
google-api-python-client 1.5.5
httplib2 0.9.2
oauth2client 1.5.2
pefile 2016.3.28
pip 9.0.1
pyasn1 0.1.9
pyasn1-modules 0.0.8
PyInstaller 3.2
pypiwin32 219
requests 2.11.1
rsa 3.4.2
setuptools 28.8.0
six 1.10.0
uritemplate 3.0.0
Run Code Online (Sandbox Code Playgroud)
之后,ALL再次正常工作,没有警告信息.
| 归档时间: |
|
| 查看次数: |
12393 次 |
| 最近记录: |