调用元类基础函数()参数时出错 1 必须是代码而不是 str

Posted

技术标签:

【中文标题】调用元类基础函数()参数时出错 1 必须是代码而不是 str【英文标题】:error when calling the metaclass bases function() argument 1 must be code not str 【发布时间】:2017-07-24 13:28:06 【问题描述】:

我按照这个设置了 twilio:https://www.fullstackpython.com/blog/send-sms-text-messages-python.html

当我使用 python send_sms.py 在本地运行时,导入似乎正在工作

然后,我使用 Apache Nifi ExecuteScript 处理器来执行 send_sms.py 文件并假设它应该与我在本地运行该文件相同。

它显示了错误:

调用元类基础函数()参数时出错,参数 1 必须是代码而不是 str

当我尝试时:from twilio.rest import TwilioRestClient

Twilio 安装在路径 /sendsms/lib/python2.7/site-packages,所以我将模块目录设置为这个路径

有人知道这里有什么问题吗?我真的卡住了,请帮忙。

【问题讨论】:

【参考方案1】:

ExecuteScript 使用 Jython(不是 Python)来执行纯 Python 脚本,因此任何导入的包(及其依赖项)也必须是纯 Python 模块。我猜 TwilioRestClient (或其依赖项)包括一个非纯 Python 模块(例如编译的 C)。对于这些情况,Jython(以及 ExecuteScript)将不起作用。

另一种方法是使用 ExecuteStreamCommand 处理器,您可以使用它向您的 Python 解释器(和脚本)发送外壳。

【讨论】:

以上是关于调用元类基础函数()参数时出错 1 必须是代码而不是 str的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:调用元类基“函数”对象时出错不可迭代

为啥类创建会引发错误

在C语言中,调用函数除函数名外,还必须有()。

面向对象,元类,控制类,对象的创建

将字符串传递到具有类型提示的方法时出错

为啥 Pylint 在元类定义的属性使用上出错?