【问题标题】:Azure ML Python with Script Bundle cannot import module带有脚本包的 Azure ML Python 无法导入模块
【发布时间】:2017-05-31 13:05:11
【问题描述】:

在 Azure ML 中,我正在尝试执行一个 Python 模块,该模块需要导入模块 pyxdameraulevenshtein (https://pypi.python.org/pypi/pyxDamerauLevenshtein)。

我按照惯用的方式,创建一个zip文件,然后导入;但是对于这个特定的模块,它似乎永远无法找到它。错误信息和往常一样:

ImportError: 没有名为“pyxdameraulevenshtein”的模块

有人成功地将这个 pyxdameraulevenshtein 模块包含在 Azure ML 中吗?

(我从https://pypi.python.org/pypi/pyxDamerauLevenshtein拿了包裹。)

感谢您提供的任何帮助,

PH

【问题讨论】:

    标签: python azure azure-machine-learning-studio


    【解决方案1】:

    我查看了pyxdameraulevenshtein 模块页面,您可以下载两个包,其中包括一个用于 MacOS 的 Wheel 文件和一个源代码 tar 文件。我不认为你可以在 Azure ML 上直接使用两者,因为 MacOS 的一个只是 darwin 的共享库.so 文件,它与 Azure ML 不兼容,而另一个则需要先编译它。

    所以我的建议如下使用pyxdameraulevenshtein

    1. 首先,将pyxdameraulevenshtein的源代码编译成Windows上的DLL文件,请参考Python文档2/3或者搜索一下。
    2. 使用您编译的 DLL 编写 Python 脚本以实现您的需求,请参阅 SO 线程 How can I use a DLL file from Python? 了解如何使用 Python 中的 DLL,并参阅 Azure 官方 tutorial 编写您的 Python 脚本
    3. 将 Python 脚本和 DLL 文件打包为 zip 文件,然后上传 zip 文件以在 Execute Python script Azure ML 模型中使用。

    希望对你有帮助。

    【讨论】:

    • 好的,非常感谢彼得的解释。我现在正在尝试,会告诉你进展如何。
    • 好的,非常感谢@PeterSmith,它有效!事实上,我使用了一种稍微不同的方式:从包位置运行“python setup.py bdist”并获得一个 .pyd 文件。我压缩了这个文件并将其用作脚本包,Azure ML 中的 Python 模块成功运行。你为我节省了很多时间!!再次感谢...
    【解决方案2】:

    pyxdameraulevenshtein 的路径添加到您的系统路径应该可以缓解此问题。该脚本检查运行 python 脚本的系统路径,并且不知道在哪里可以查找除默认包以外的任何其他内容。如果您的 python 脚本与 ZIP 文件中的 pyxdameraulevenshtein 包位于同一目录中,那么这应该可以解决问题。因为您在 Azure ML 中运行它,并且每次运行时都无法确定脚本的确切位置,所以此解决方案应该考虑到这一点。

    import os
    import sys
    
    sys.path.append(os.path.join(os.getcwd(), 'pyxdameraulevenshtein'))
    
    import pyxdameraulevenshtein
    

    【讨论】:

    • 感谢stevedem的回复,我确实尝试过,虽然它适用于其他一些软件包,但对于这个它没有 - 我相信这与文件的扩展名有关,pyxdameraulevenshtein模块具有 .pyx 扩展名和相应的 .c 文件,而典型模块具有 .py 扩展名。我不确定是否可以在 Azure ML 中导入 .pyx 扩展名?
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多