google 云库无法在 Colaboratory 上运行
google cloud libs not working on Colaboratory
我想测试一些与我今天在本地 运行 的 GCS 交互的代码。我的计划是:
- 在 GDrive 中保存服务帐户 JSON 文件
- 下载到 Colaboratory 的 'local' /tmp
!export GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
storage_client = storage.Client('my-project')
并尝试不同的方法/属性。
我安装了 !pip install --upgrade google-cloud
但在测试项目符号 4 时(预计会出现身份验证错误),我收到一条关于依赖项问题的消息:
ContextualVersionConflictTraceback (most recent call last)
<ipython-input-13-7346ac058842> in <module>()
----> 1 from google.cloud import storage
2
3
4 # Authenticate to GCS.
5 from google.colab import auth
/usr/local/lib/python2.7/dist-packages/google/cloud/storage/__init__.py in <module>()
33
34 from pkg_resources import get_distribution
---> 35 __version__ = get_distribution('google-cloud-storage').version
36
37 from google.cloud.storage.batch import Batch
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.pyc in get_distribution(dist)
554 dist = Requirement.parse(dist)
555 if isinstance(dist, Requirement):
--> 556 dist = get_provider(dist)
557 if not isinstance(dist, Distribution):
558 raise TypeError("Expected string, Requirement, or Distribution", dist)
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.pyc in get_provider(moduleOrReq)
428 """Return an IResourceProvider for the named module or requirement"""
429 if isinstance(moduleOrReq, Requirement):
--> 430 return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
431 try:
432 module = sys.modules[moduleOrReq]
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.pyc in require(self, *requirements)
970 included, even if they were already activated in this working set.
971 """
--> 972 needed = self.resolve(parse_requirements(requirements))
973
974 for dist in needed:
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.pyc in resolve(self, requirements, env, installer, replace_conflicting, extras)
861 # Oops, the "best" so far conflicts with a dependency
862 dependent_req = required_by[req]
--> 863 raise VersionConflict(dist, req).with_context(dependent_req)
864
865 # push the new requirements onto the stack
ContextualVersionConflict: (google-cloud-core 0.27.1 (/usr/local/lib/python2.7/dist-packages), Requirement.parse('google-cloud-core<0.29dev,>=0.28.0'), set(['google-cloud-storage']))
我没有在 Datalab 中尝试过,但 Colaboratory 更方便。
是否需要服务帐号?您可以使用 I/O example notebook for GCS 中显示的方法在 Colab 中直接使用您的个人凭据。
不共享 Colab 虚拟机,因此关于在项目中共享的 GCE 虚拟机上的用户凭据的典型警告不适用。
如果您需要将服务帐户与 GCS 存储一起使用 Python API,请告诉我,我会制作一个示例。
所以这里有两个issues/questions:
我可以使用服务帐户凭据吗?我怀疑一切正常,但你首先被其他东西绊倒了。
为什么我在导入 google.cloud.storage
时出错? 这里的问题如下:我们加载了 google.cloud
的一些子集启动时的库。然后您进行升级,并尝试加载新安装的库,这些库与已加载的库冲突。
最快的解决方法是在安装后重新启动内核 (ctrl-m .
),此时应该可以正常加载。
我想测试一些与我今天在本地 运行 的 GCS 交互的代码。我的计划是:
- 在 GDrive 中保存服务帐户 JSON 文件
- 下载到 Colaboratory 的 'local' /tmp
!export GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
storage_client = storage.Client('my-project')
并尝试不同的方法/属性。
我安装了 !pip install --upgrade google-cloud
但在测试项目符号 4 时(预计会出现身份验证错误),我收到一条关于依赖项问题的消息:
ContextualVersionConflictTraceback (most recent call last)
<ipython-input-13-7346ac058842> in <module>()
----> 1 from google.cloud import storage
2
3
4 # Authenticate to GCS.
5 from google.colab import auth
/usr/local/lib/python2.7/dist-packages/google/cloud/storage/__init__.py in <module>()
33
34 from pkg_resources import get_distribution
---> 35 __version__ = get_distribution('google-cloud-storage').version
36
37 from google.cloud.storage.batch import Batch
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.pyc in get_distribution(dist)
554 dist = Requirement.parse(dist)
555 if isinstance(dist, Requirement):
--> 556 dist = get_provider(dist)
557 if not isinstance(dist, Distribution):
558 raise TypeError("Expected string, Requirement, or Distribution", dist)
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.pyc in get_provider(moduleOrReq)
428 """Return an IResourceProvider for the named module or requirement"""
429 if isinstance(moduleOrReq, Requirement):
--> 430 return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
431 try:
432 module = sys.modules[moduleOrReq]
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.pyc in require(self, *requirements)
970 included, even if they were already activated in this working set.
971 """
--> 972 needed = self.resolve(parse_requirements(requirements))
973
974 for dist in needed:
/usr/lib/python2.7/dist-packages/pkg_resources/__init__.pyc in resolve(self, requirements, env, installer, replace_conflicting, extras)
861 # Oops, the "best" so far conflicts with a dependency
862 dependent_req = required_by[req]
--> 863 raise VersionConflict(dist, req).with_context(dependent_req)
864
865 # push the new requirements onto the stack
ContextualVersionConflict: (google-cloud-core 0.27.1 (/usr/local/lib/python2.7/dist-packages), Requirement.parse('google-cloud-core<0.29dev,>=0.28.0'), set(['google-cloud-storage']))
我没有在 Datalab 中尝试过,但 Colaboratory 更方便。
是否需要服务帐号?您可以使用 I/O example notebook for GCS 中显示的方法在 Colab 中直接使用您的个人凭据。
不共享 Colab 虚拟机,因此关于在项目中共享的 GCE 虚拟机上的用户凭据的典型警告不适用。
如果您需要将服务帐户与 GCS 存储一起使用 Python API,请告诉我,我会制作一个示例。
所以这里有两个issues/questions:
我可以使用服务帐户凭据吗?我怀疑一切正常,但你首先被其他东西绊倒了。
为什么我在导入
google.cloud.storage
时出错? 这里的问题如下:我们加载了google.cloud
的一些子集启动时的库。然后您进行升级,并尝试加载新安装的库,这些库与已加载的库冲突。最快的解决方法是在安装后重新启动内核 (
ctrl-m .
),此时应该可以正常加载。