Azure ML Studio 本地环境——使用 Azure ML Python SDK 导入 Numpy 包失败

Azure ML Studio Local Environment — Numpy package import failure using the Azure ML Python SDK

我正在尝试使用 Python SDK 为 ML Studio 创建一个本地环境,如下所示 this official cheatsheet。结果应该是一个类似 conda 的环境,可用于本地测试。但是,在使用 CondaDependencies() class 的 add_conda_package() 方法导入 Numpy 包时,我 运行 出错了。我尝试不指定以及指定包版本的地方,例如: add_conda_package('numpy')add_conda_package('numpy=1.21.2'),但似乎没有什么区别。

Numpy 的错误消息非常多,我已经尝试了很多建议,但都没有成功。我很感谢任何可能解决我的问题的提示!


完整代码

from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies


def get_env() -> Environment:
    conda = CondaDependencies()

    # add channels
    conda.add_channel('defaults')
    conda.add_channel('conda-forge')
    conda.add_channel('pytorch')

    # Python
    conda.add_conda_package('python=3.8')

    # Other conda packages
    conda.add_conda_package('cudatoolkit=11.3')
    conda.add_conda_package('pip')
    conda.add_conda_package('python-dateutil')
    conda.add_conda_package('python-dotenv')
    conda.add_conda_package('pytorch=1.10')
    conda.add_conda_package('torchaudio')
    conda.add_conda_package('torchvision')
    conda.add_conda_package('wheel')
    conda.add_conda_package('numpy=1.21.2') # <--- Error with this import 

    # create environment
    env = Environment('test_env')
    env.python.conda_dependencies = conda

    return env

详细错误信息:

用户程序因 ImportError 失败:

重要提示:请阅读本文以获取有关如何解决此问题的建议!

导入 numpy C 扩展失败。此错误可能发生在 很多原因,通常是由于您的设置问题或 NumPy 的运行方式 安装。

我们在以下位置整理了一些常见原因和故障排除提示:

https://numpy.org/devdocs/user/troubleshooting-importerror.html

请注意并检查以下内容:

并确保它们是您期望的版本。 请仔细研究上面链接的文档以获得进一步的帮助。

原始错误是:导入时 DLL 加载失败_multiarray_umath:找不到指定的模块。


系统规格:

我终于能够通过使用 pip 方法而不是 conda 方法来解决问题: add_pip_package('numpy') 而不是 add_conda_package('numpy') 我可以想象这也是其他软件包的原因。


完整解决方案

from azureml.core import Environment
from azureml.core.conda_dependencies import CondaDependencies


def get_env() -> Environment:
    conda = CondaDependencies()

    # add channels
    conda.add_channel('defaults')
    conda.add_channel('conda-forge')
    conda.add_channel('pytorch')

    # Python
    conda.add_conda_package('python=3.8')

    # Other conda packages
    conda.add_conda_package('cudatoolkit=11.3')
    conda.add_conda_package('pip')
    conda.add_conda_package('python-dateutil')
    conda.add_conda_package('python-dotenv')
    conda.add_conda_package('pytorch=1.10')
    conda.add_conda_package('torchaudio')
    conda.add_conda_package('torchvision')
    conda.add_conda_package('wheel')
    #conda.add_conda_package('numpy=1.21.2') # <--- Error with this import 

    # Add pip packages
    conda.add_pip_package('numpy') # <--- Fixes import error

    # create environment
    env = Environment('test_env')
    env.python.conda_dependencies = conda

    return env