首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用用户定义的python函数。"ModuleNotFoundError",Tableau,Tabpy

使用用户定义的python函数。"ModuleNotFoundError",Tableau,Tabpy
EN

Stack Overflow用户
提问于 2020-05-11 19:45:58
回答 1查看 528关注 0票数 0

我试图使用Tableau使用Tabpy接口调用python函数,但是我收到了一个"No模块名为interface_v1“的错误。我所采取的步骤:

  1. 使用git指令这里安装tabpy
  2. 在名为interface_v1.py的文件中定义我的函数。该功能如下
代码语言:javascript
复制
def call_matlab(a):
    return a
  1. 启动tabpy服务器
  2. 打开一个新的Tableau工作簿并连接到服务器。
  3. 创建了一个新的计算字段:
代码语言:javascript
复制
SCRIPT_INT("import interface_v1 as inter
return inter.call_matlab(_arg1)", SUM([Body]))

当我尝试使用计算字段时,我在tabpy服务器日志中接收到上面的错误ModuleNotFoundError。我将工作簿和python文件放在同一个目录中,我还尝试将其放在tabpy\modules\script文件夹中。

注意:我没有在虚拟环境中使用tabpy,而且我对Tableau非常陌生,如果我只是遗漏了什么,那么很抱歉。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-19 01:56:34

这里最好的解决方案是将您的“interface_v1.py”部署为tabpy服务器上的端点。

这样做的好处是速度更快,载入内存等等.否则,您将需要探索如何在tabpy运行的同一个目录中加载您引用的文件。我强烈建议采用端点。

文档相当直截了当。

基本上,您将对您的信息执行以下操作:

代码语言:javascript
复制
from tabpy.tabpy_tools.client import Client

client = Client('http://localhost:9004/')

def call_matlab(a):
    return(a)
client.deploy('call_matlab', call_matlab, 'Pass data to call_matlab')

然后,从tableau,您应该能够调用命名的函数

代码语言:javascript
复制
script_int("tabpy.query('call_matlab',_arg1)",[COL_TO_SEND])

显然,根据您的特定用例进行调整。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61738014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档