2017-05-31 56 views
1

在Azure ML中,我试图执行一个需要导入模块pyxdameraulevenshtein()的Python模块。带有脚本包的Azure ML Python无法导入模块

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

导入错误:没有模块名为“pyxdameraulevenshtein”

有没有人包括在Azure中ML与成功这pyxdameraulevenshtein模块?

(我拿着包从)

感谢您的帮助,您可以提供,

PH

回答

1

我看到了pyxdameraulevenshtein模块页面,有两个包,您可以下载,其中包括适用于MacOS车轮文件和源代码tar文件。我不认为你可以直接在Azure ML上使用这两种版本,因为MacOS版本只是一个共享库,它不适用于Azure ML,它需要先编译它。

所以我的建议如下使用pyxdameraulevenshtein

  1. 首先,编译的pyxdameraulevenshtein的源代码,一个DLL文件在Windows上,请参阅文件为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模型中使用它。

希望它有帮助。

+0

好的,谢谢Peter的解释。我现在正在尝试,并会让你知道它是如何发生的。 – pjh

+0

好的,非常感谢@PeterSmith,它的工作原理!实际上,我使用了一种稍微不同的方式:从包位置运行“python setup.py bdist”并获得.pyd文件。我压缩此文件并将其用作脚本包,并且Azure ML中的Python模块成功运行。你为我节省了很多时间!再次感谢... – pjh

0

添加路径pyxdameraulevenshtein到系统路径应该解决这个问题。该脚本检查运行python脚本的系统路径,并且不知道除了默认包以外还有什么地方可以查找其他任何内容。如果你的python脚本与你的ZIP文件中的pyxdameraulevenshtein软件包在同一个目录下,这应该会有效。由于您在Azure ML中运行此脚本,并且无法确定每次运行脚本时脚本的确切位置,因此此解决方案应该解决此问题。

import os 
import sys 

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

import pyxdameraulevenshtein 
+0

感谢stevedem回复,我尝试过,尽管它可以与其他一些软件包一起使用,但对于这个软件,它不会 - 我相信这是与文件扩展有关的,pyxdameraulevenshtein模块的扩展名为.pyx具有相应的.c文件,而典型的模块具有.py扩展名。我不确定是否可以在Azure ML中导入.pyx扩展名? – pjh