首页 > 解决方案 > Azure Function 中的 Google.OR-Tools

问题描述

我最近一直在使用 Python 中的 OR-Tools,并且一直在尝试将我的代码移动到 Python 中的 Azure 函数中。有谁知道这是否支持?

我已经尝试并不断遇到无法导入 OR-Tools 模块的问题(特别是来自 ortools.constraint_solver 的 pywrapcp 和 routing_enums_pb2)。我已经确认我的 Python 版本是 64 位的。

根据 OR-Tools 发行版,它支持 Linux,但是我一直在阅读,它似乎与需要安装的 C++ 可再发行组件有关。这就是我现在完全超出我的深度并且可以使用一些指针的地方。这在python函数中可能吗?

编辑

在下面的鲍曼朱的评论之后 - 我已经检查了我的环境中是否存在 ORTools - 请参见下面的片段。该脚本在我尝试导入 pywrapcp 的位置失败。

from ortools.constraint_solver import pywrapcp

但它肯定在那里。有什么建议么?

在此处输入图像描述

标签: pythonazure-functionsor-tools

解决方案


所以我得到了这个工作 - 运行 OR-Tools 的 Python Azure 函数。

在我的测试中,我可以想到导致问题的两个可能原因(我不确定您是否遇到本地问题,或者部署后出现问题);

  • 您使用的是本地安装的 python 解释器而不是此处的版本,.\.venv\Scripts\python.exe因此 pylint 无法找到依赖项的 venv 副本。
  • 您缺少包括在内ortoolsrequirements.txt因此在部署时没有安装服务器端。

这就是导致 Azure 在部署函数时安装依赖项的原因。您不需要手动包含它们;

# DO NOT include azure-functions-worker in this file
# The Python Worker is managed by Azure Functions platform
# Manually managing azure-functions-worker may cause unexpected issues

azure-functions
ortools

有几点需要注意;

  • OR-Tools 是原生 C++,对其他所有内容都有包装器。
  • Python 函数仅在 Azure 中的 Linux 上运行,因此服务器端不需要 C++ 可再发行组件。
  • 在 Windows 上安装Azure Functions Core Tools for Visual Studio Code 将允许您在本地调试 Python Azure 函数(我假设这确实需要 C++ 可再发行组件来执行本地 Windows)。
  • 我使用 Visual Studio 扩展“Azure Functions”进行部署。

我基本上遵循了这个指南,然后添加了 OR-Toolsrequirements.txt并添加了一个简单的示例解决方案用于本地测试,然后部署和测试服务器端。


推荐阅读