在 Google Cloud ML Engine 中使用自定义依赖项

Using custom dependencies in Google Cloud ML Engine

我正在尝试使用 python package that is not listed in PyPI with the Google Cloud ML Engine. This package has itself dependencies that even though are listed in PyPI are not installed by default in the ML engine environment, namely the Cython 包。

查看 documentation 并不清楚在这种情况下如何进行,我尝试将此包打包到 .tar.gz 文件中并在 --packages 参数下传递,但出现以下错误:

File "<string>", line 1, in <module> IOError: [Errno 2] No such file or directory: '/tmp/pip-jnm3Ml-build/setup.py'

在我尝试使用 setup.py 文件并打包我的代码后,但 google 云 ml 引擎无法在 dependency_links

中找到该包

这是我目前的 setup.py:

from setuptools import find_packages, setup

required_packages = ['cython', 'numpy', 'tensorflow', 'scipy', 'cython']
dependency_links = ['git+https://github.com/lucasb-eyer/pydensecrf.git']

setup(name='trainer',
      version='0.1',
      packages=['trainer'],
      install_requires=required_packages,
      dependency_links=dependency_links,
      include_package_data=True,
      description='description')

我希望通过反复试验避免这样做,因为将作业发送到云端需要花费金钱,即使它们立即失败也是如此。

提前致谢。

为此,您需要将 Cython 添加到 setup.py 中所需的软件包列表中。可以找到说明 here.

这是一个示例 setup.py,它位于您作为 --package-path 传递给 gcloud 的目录的父目录中。

from setuptools import find_packages
from setuptools import setup

REQUIRED_PACKAGES = ['Cython>=0.26']

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