从终端和php exec运行python函数的AttributeError

时间:2015-03-14 14:33:14

标签: php python terminal exec

我想执行python类的函数。 Oauth.py

import....
class Oauth:
    def __init__(self, requesttokenurl, accesstokenurl, resourceurl, version):
        .....
    def getList(self):
        .......
        return list


if __name__ == "__main__":
    .......

我测试在终端中运行命令,我尝试运行以下命令。 命令:

python -c 'import Oauth; Oauth.getList()'

错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getList'

命令:

python -c 'from Oauth import *; print getList()'

错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'getList' is not defined

命令:

python -c 'from Oauth import getList; print getList()'

错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: cannot import name getList

2 个答案:

答案 0 :(得分:2)

尝试:

python -c 'from Oauth import Oauth; Oauth(<args>).getList()'

该模块名为Oauth,因此您尝试使用的类实际上是Oauth.Oauth。您需要创建一个实例来调用getList(),这就是您需要添加括号(和一些args)的原因。以上等同于以下Python程序:

import Oauth
oa = Oauth.Oauth(<args>)
oa.getList()

不确定您需要哪些构造函数参数。

答案 1 :(得分:0)

在阅读André的回复后,我收到了这个错误:

TypeError: __init__() takes exactly 5 arguments (2 given)

构造函数需要5个参数,在这种情况下函数不需要参数。发送空参数。命令如下:

python -c 'from Oauth import Oauth; print Oauth("", "", "", "").getList()'