作为在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引擎图像中(如果不是这样会很奇怪)所以我在这里不知所措,程序在本地运行良好。
答案 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读取,因此无需手动操作文件。