AzureML SDK 问题与环境文件中的 pip 安装依赖项

问题描述

我尝试在 AzureML SDK 中运行 Python 脚本。但是在运行日志文件中,它一遍又一遍地打印相同的错误

警告:您的环境文件中有 pip 安装的依赖项,但您没有将 pip 本身列为您的 conda 依赖项之一。 Conda 可能不会使用正确的 pip 来安装您的软件包,并且它们最终可能会出现在错误的位置。请添加一个明确的 pip 依赖项。我给你加了一个,但还在唠叨你。

定义的 conda 环境如下所示:

    {
    "databricks": {
        "eggLibraries": [],"jarLibraries": [],"mavenLibraries": [],"pypiLibraries": [],"rcranLibraries": []
    },"docker": {
        "arguments": [],"baseDockerfile": null,"baseImage": "mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04:20210301.v1","baseImageRegistry": {
            "address": null,"password": null,"registryIdentity": null,"username": null
        },"enabled": false,"platform": {
            "architecture": "amd64","os": "Linux"
        },"sharedVolumes": true,"shmSize": null
    },"environmentvariables": {
        "EXAMPLE_ENV_VAR": "EXAMPLE_VALUE"
    },"inferencingStackVersion": null,"name": "MyEnvironment04","python": {
        "baseCondaEnvironment": null,"condaDependencies": {
            "channels": [
                "anaconda","conda-forge"
            ],"dependencies": [
                "python=3.6.2",{
                    "pip": [
                        "pip=20.2.40"
                    ]
                },"scikit-learn"
            ],"name": "azureml_815589d460c271a1415198e7283fa9e9"
        },"condaDependenciesFile": null,"interpreterPath": "python","userManagedDependencies": false
    },"r": null,"spark": {
        "packages": [],"precachePackages": true,"repositories": []
    },"version": "1"
}

我假设我的环境中 pip 包的定义是错误的。

# Create the dependencies object
myenv_dep = CondaDependencies.create(conda_packages=['scikit-learn'],pip_packages=['pip=20.2.40'])
myenv.python.conda_dependencies = myenv_dep

如果我需要提供更多信息,请告诉我。

谢谢!

解决方法

您可以考虑删除您的 azureml_conda_lock 目录(如果有),然后重试。此目录的位置取决于操作系统,但您应该在 .azureml/locks/ 位置下找到它。

另外,我假设您在 Python 环境(如 VENV 或类似的非 Conda 环境)中设置了 AzureML SDK。

这就是为什么 AzureML SDK 陷入从 VENV/非 Conda 环境中设置 Conda 环境的尝试失败的循环,结果它记录了此类消息。

在这种情况下,您应该尝试使用 Conda 设置您的 AzureML SDK,这应该可以解决问题。