【问题标题】:How to specify pip extra-index-url when creating an azureml environment?创建 azureml 环境时如何指定 pip extra-index-url?
【发布时间】:2020-02-27 17:55:24
【问题描述】:

当 AzureML 创建 Python 环境并运行 pip install 时,我希望它使用额外的非公共索引。有没有办法做到这一点?

我在 AzureML 计算上运行我的 python 脚本。该环境是根据docs 的 pip 要求创建的。该脚本现在引用私有索引中的包。要在本地或构建机器上运行脚本,我只需在运行pip install -c ... 之前指定带有索引凭据的PIP_EXTRA_INDEX_URL 环境变量。如何在 AzureML 环境准备过程中启用相同的功能?

AzureML 文档suggest 我直接提供轮文件而不是包名称。这意味着我必须手动完成构建 pip 的所有工作:识别其他要求中的私有包,选择正确的版本和平台,下载它们。

理想情况下,我只需要这样写:

myenv = Environment.from_pip_requirements(
    name = "myenv",
    file_path = "path-to-pip-requirements-file",
    extra-index-url = ["url1", "url2"])

【问题讨论】:

    标签: azure-machine-learning-service


    【解决方案1】:

    如果你有你的需求文件,你可以在那里指定额外的索引 url re.txt

    --extra-index-url foo --extra-index-url 栏 package_a 包_b package_x

    更多选项请点击这里https://pip.pypa.io/en/stable/user_guide/#requirements-files

    yaml 文件也是如此

    【讨论】:

    【解决方案2】:

    看来,SDK 中有一个set_pip_option method,它用一个额外的索引 URL 来解决问题,例如

    from azureml.core.environment import CondaDependencies
    dep = CondaDependencies.create(pip_packages=["pyyaml", "param"])
    dep.set_pip_option("--extra-index-url https://user:password@extra.index/url")
    

    不幸的是,对该函数的第二次调用将第一个值替换为新值。对于--extra-index-url 选项,应更改此逻辑以支持搜索超过 2 个索引(一个公共,一个私有)。

    【讨论】:

    • 请注意,您可以将列表传递给 --extra-index-url,如下所示:dep.set_pip_option("--extra-index-url https://user:password@extra.index/url1,https://user:password@extra.index/url2")
    • 不幸的是,这不起作用。当来自 cmdline/requirements 与来自 config/env 时,Pip(从 v19.3.1 开始)对此选项的处理方式不同。在配置文件或 PIP_EXTRA_INDEX_URL 中,您可以提供以空格分隔的 url 列表。在 cmdline 或需求文件中,每个选项都是一个附加到额外 url 列表的值。特别是,pip 会将上面的示例视为一个额外的 url,中间有逗号,显然会失败。
    • 这个用户名密码是你的 azure devops 用户名和个人访问令牌。
    猜你喜欢
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    相关资源
    最近更新 更多