【问题标题】:Using custom dependencies in Google Cloud ML Engine在 Google Cloud ML Engine 中使用自定义依赖项
【发布时间】:2017-07-21 09:33:05
【问题描述】:

我正在尝试将 PyPI 中未列出的 python package 与 Google Cloud ML Engine 一起使用。这个包有自己的依赖项,即使在 PyPI 中列出,ML 引擎环境中也没有默认安装,即 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 cloud 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')

我想通过反复试验来避免这样做,因为将作业发送到云会花费金钱,即使它们立即失败。

提前致谢。

【问题讨论】:

    标签: python google-cloud-platform google-cloud-ml google-cloud-ml-engine


    【解决方案1】:

    为此,您需要将 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.'
    )
    

    【讨论】:

    • 对不起,我不够清楚,问题不在于 PyPI 中的 Cython,问题在于不在 PyPI 中的包,我将使用我当前的 setup.py 更新问题跨度>
    • 另外,如果我将自定义依赖项和我自己的包都打包,我想你的答案是正确的,但我试图不必打包依赖项,因为这样做似乎更正确......
    • 没关系,我会按照你的方式去做,这个依赖链接的东西似乎已经被弃用了
    • 根据我从搜索中收集到的信息,使用 dependency_links 作为 setup 的参数将被弃用(在 2014 年)并且不建议使用,而应该使用 PyPI。由于 pydensecrf 不在 PyPI 中并且有一些 C++ 依赖项,我不得不将我的包和 pygdensecrf 都发送到 .tar.gz 存档并祈祷 ML 引擎首先运行我的包的设置,然后运行 ​​pydensecrf(因为 pydensecrf 在 setup.py 中导入 Cython)和然后多祈祷一下 ML 引擎安装了 gcc。最后它成功了,虽然我对解决方案并不完全满意......
    • 很高兴听到它有效。如果你需要保证事情以特定的顺序发生,你可以在 setup.py 中做任何你需要做的事情——它只是一个 Python 文件,所以你可以用它来做任何事情,包括下载文件、安装它们,等
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2023-03-20
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多