Azure功能(云):安装依赖cython的模块

时间:2020-11-04 18:31:30

标签: installation pip subprocess azure-functions cython

我正在尝试将cython依赖模块[ZigZag]安装/导入到Azure函数(Linux platfrom)上的python函数中,我正在通过Windows 8.1(VSCode)工作,在本地计算机和Azure上均运行Python 3.6功能。

我尝试在Cython文件中包含requirements.txt,在部署期间会出现此错误(似乎外部模块的安装在某种程度上是并行进行的)

我尝试创建一个'.toml'文件,没有运气。

我还尝试了在Python google cloud function deployment failure - Madmom pip package处发现的想法仍然行不通。

最后,我决定首先部署没有zigzag模块的功能(在'requirements.txt'文件中包含cython),然后在我的python脚本中使用subprocess.Popen()进行pip install zigzag并在其余功能运行之前将其导入。

这就是我被困住的地方。在我的python文件中,包含以下行以完成上述操作:

#function to be called in azure __init__.py file
def f....:
    # check for zigzag
    try:
        import zigzag
    except ImportError:
        subprocess.Popen(["pip", "install", "ZigZag"], shell=True)
    finally:
        import zigzag
.
.
.
rest of the function...

这可以成功部署到Azure函数,但是在执行过程中失败,并显示以下错误:

Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcException :

Result: Failure Exception: ModuleNotFoundError: No module named 'zigzag

任何想法如何正确执行此操作?

注意:此问题也发生在Google云功能上。

1 个答案:

答案 0 :(得分:0)

我看到这与https://docs.microsoft.com/en-us/answers/questions/152557/index.html

有关

根据线程,ZigZag的最新版本是0.2.2,支持的python版本是3.5:https://pypi.org/project/ZigZag/ azure函数支持3.6及更高版本的python版本,这将使其不兼容。您可以尝试使用requirements.txt安装最新的cython,它将按预期运行。但是,当您尝试安装ZigZaG时,它会尝试查找与之兼容的cython软件包(Cython == 0.26.1)的依赖性,因此会抛出未找到cython软件包的错误。

相关问题