无法在ML Engine中导入Google云端存储库

时间:2017-11-16 08:25:58

标签: python google-cloud-storage google-cloud-ml

作为在ML Engine中批量处理一些图像的快速解决方案,我使用云存储Python库来下载图像。

不幸的是,当作业发送到ML Engine时,库导入失败并显示以下堆栈跟踪:

Traceback (most recent call last): File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_name) File "/usr/lib/python2.7/runpy.py", line 72, in _run_code exec code in run_globals File "/root/.local/lib/python2.7/site-packages/trainer/task.py", line 1, in <module> from google.cloud import storage ImportError: cannot import name storage

我很确定这个库包含在ML引擎图像中(如果不是这样会很奇怪)所以我在这里不知所措,程序在本地运行良好。

1 个答案:

答案 0 :(得分:2)

容器不包含此包,因为通常使用TensorFlow的file_io模块,该模块适用于GCS。

两个选项。假设您已经知道如何使用和/或拥有google.cloud.storage的代码,则可以在setup.py文件(instructions)中将其添加为要求,例如:

from setuptools import find_packages
from setuptools import setup

REQUIRED_PACKAGES = ['google-cloud-storage']

setup(
    name='trainer',
    version='0.1',
    install_requires=REQUIRED_PACKAGES,
    packages=find_packages(),
    include_package_data=True,
    description='My trainer application package.'
)

或者,您可以使用file_io,如果您实际上不需要数据副本但想要直接阅读它们,这一点特别有用:

import tensorflow as tf
from tensorflow.python.lib.io import file_io

# Copy
file_io.copy("gs://my-bucket/myfiles/*", "/tmp")

# Glob and read
for file in file_io.get_matching_files("gs://my-bucket/myfiles/*"):
  with file_io.FileIO(file) as f:
    # Do something

最后请注意,如果您正在使用TensorFlow操作,TensorFlow的读者已经知道如何从GCS读取,因此无需手动操作文件。