2017-11-16 18 views
0

MLエンジン内でバッチ処理された画像を取得するクイックソリューションとして、Cloud Storage Pythonライブラリを使用して画像をダウンロードしています。MLエンジンでGoogle Cloud Storageライブラリをインポートできません

残念ながら、仕事が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

通常、TensorFlowのfile_ioモジュールを使用しているため、コンテナにはこのパッケージが含まれていません。これはGCSで動作します。

2つのオプション。

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を使用することができます:あなたはすでにgoogle.cloud.storageのコードを使用し、および/または持ってする方法を知って、あなただけの、たとえば、あなたのsetup.pyファイル(instructions)における要件として追加することができますと仮定すると、

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から読み込まれ、そうする方法を知っていることに注意してください:あなたは、実際にデータのコピーを必要とするが、それらを直接読みたくない場合に特に便利手動でファイルを操作する必要はありません。

+0

ありがとうございました! 既にインストールされている実行時の依存関係を読んで、ストレージ機能を含むPython GCPクライアントライブラリであると仮定した 'gcloud 0.18.3'を見たとき、私は自分自身を混乱させると思います。 –

関連する問題