我最近一直在使用Python中的OR工具,并试图将我的代码移动到Python中的Azure函数。有谁知道这是否得到支持?
我试过了,总是遇到无法导入OR-Tools模块的问题(特别是从ortools.constraint_solver导入pywrapcp & routing_enums_pb2)。我已经确认我的Python版本是64位。
根据OR-Tools发行版,它支持Linux,但是我一直在阅读&它似乎与需要安装的C++可再发行版本有关。这是我现在完全超出我的深度&可以使用一些指针。这在python函数中可能吗?
编辑
下面是Bowman Zhu的评论-我已经检查了ORTools在我的环境中存在-请参阅下面的片段。脚本在我尝试导入pywrapcp时失败。
from ortools.constraint_solver import pywrapcp
但它肯定在那里。有什么建议吗?
4条答案
按热度按时间ecbunoof1#
我面临着同样的问题:
我的Python版本也是64位的:
也许你正在阅读Google Tools的这篇文档:
https://developers.google.com/optimization/install/python/windows
提示:我已经安装了你提到的C++可再发行版本,但仍然得到这个错误。我检查了Azure函数的库,它没有ortools模块。
我认为答案是虚拟环境真的没有这个模块:
你需要运行这个命令来在你的虚拟环境中安装ortools:
然后ortools将在虚拟环境中,导入也不再返回错误:
jtjikinw2#
如果我在or-tools邮件列表或github issue上没有记错的话:
62o28rlo3#
所以我得到了这个工作- Python Azure函数运行OR-Tools。
在我的测试中,我能想到两个可能的原因导致你的问题(我不确定你是否有本地问题,或者一旦部署就有问题);
.\.venv\Scripts\python.exe
,所以pylint无法找到依赖项的venv副本。requirements.txt
中包含ortools
,因此无法在部署时安装服务器端。这就是导致Azure在部署函数时安装依赖项的原因。您不需要手动包含它们;
有几件事要注意;
我基本上遵循了this guide,然后将OR工具添加到
requirements.txt
,并添加了一个simple sample solve用于本地测试,然后部署和测试服务器端。bwntbbo34#
我也面临着同样的问题。
我在requirements.txt文件中包含了ortools:
当我部署一个'hello word'示例函数时,我可以看到模块安装正常:
HTTP触发器已注册。但是,如果我尝试在. py示例函数中从ortools导入pywrapcp并再次部署,我会得到错误No HTTP triggers found.,并且在部署日志中没有其他错误。
(if我在本地运行函数(* func host start *)(解决了一个VRP问题),一切正常。
部署到Azure函数时出现问题。
源代码: