没有名为教练的模块

时间:2017-04-13 19:48:33

标签: google-cloud-ml

我有一个非常简单的培训师,它遵循样本目录结构:

/dist
  __init__.py
  setup.py
  /trainer
    __init__.py
    task.py

在/ dist目录下,在本地运行正常:

$ gcloud ml-engine local train 
    --package-path=trainer
    --module-name=trainer.task

现在,在尝试部署它时,在/ dist目录和此命令下:

$ gcloud ml-engine jobs submit training testA
    --package-path=trainer
    --module-name=trainer.task
    --staging-bucket=$JOB_DIR
    --region us-central1

它给了我一个错误"没有模块化名称培训师"

INFO    2017-04-13 12:28:35 -0700   master-replica-0        Installing collected packages: pyyaml, scipy, scikit-learn, trainer
INFO    2017-04-13 12:28:38 -0700   master-replica-0        Successfully installed pyyaml-3.12 scikit-learn-0.18.1 scipy-0.18.1 trainer-0.1
INFO    2017-04-13 12:28:38 -0700   master-replica-0        Running command: python -m trainer.task
ERROR   2017-04-13 12:28:38 -0700   master-replica-0        /usr/bin/python: No module named trainer

编辑: 这是setup.py

的内容
from setuptools import find_packages
from setuptools import setup
REQUIRED_PACKAGES = [
    'pyyaml',
    'scipy==0.18.1',
    'scikit-learn'
]
setup(
    name='trainer',
    version='0.1',
    install_requires=REQUIRED_PACKAGES,
    include_package_data=True,
    description='Classifier test'
)

我做错了什么?

谢谢,

中号

1 个答案:

答案 0 :(得分:7)

您缺少setup.py中的重要行,即packages函数调用的setup参数(cf these instructions)。试试这个:

from setuptools import find_packages
from setuptools import setup
REQUIRED_PACKAGES = ['pyyaml','scipy==0.18.1','scikit-learn']
setup(
    name='trainer',
    version='0.1',
    install_requires=REQUIRED_PACKAGES,
    packages=find_packages(),
    include_package_data=True,
    description='Classifier test'
)

我已更新CloudML引擎docs(可能需要几天才能宣传)。

我使用--package-path=trainer和上述更改复制了您的命令,并在云中正常运行。

最后,尽管它是无害的,__init__.py中的dist/是不必要的,可以安全删除。