带有脚本包的Azure ML Python无法导入模块

时间:2017-05-31 13:05:12

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

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

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

ImportError:没有名为' pyxdameraulevenshtein'

的模块

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

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

感谢您提供的任何帮助,

PH

2 个答案:

答案 0 :(得分:1)

我查看了pyxdameraulevenshtein模块页面,您可以下载两个包,其中包括MacOS的滚轮文件和源代码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文件以在Azure ML的Execute Python script模型中使用它。
  4. 希望它有所帮助。

答案 1 :(得分:0)

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

import os
import sys

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

import pyxdameraulevenshtein