Python:mechanize没有属性'TextControl'错误

时间:2012-02-18 11:59:27

标签: python linux ubuntu command-line mechanize

我使用的是一年前编写的Python代码。

我的操作系统是Ubuntu 10.10 with Python 2.6.6。

代码段是:

import mechanize
.....
br.select_form(nr=0)
br['sign_in[email]'] = username
br['sign_in[password]'] = password
tc = mechanize.TextControl('hidden', 'token', {'value':token})
tc.add_to_form(br.form)
self.submit()

当我运行此代码时,我收到此错误:

  

AttributeError:'module'对象没有属性'TextControl'

有什么问题?原作者的意图是什么?当我谷歌TextControl时,似乎没有任何与机械化相关的东西。我按apt-get install python-mechanize安装了机械化。

2 个答案:

答案 0 :(得分:0)

看起来您没有使用相同版本的mechanize库。查看github中的code,我在__init__.py中看到了这一点:

__all__ = [
    ...
    'TextControl',
    'TextareaControl',
   ]

所以当然应该有一些TextControl。在github中,版本实际上是在_form.py中定义的。

答案 1 :(得分:0)

查看源代码,您安装的机械化版本似乎不是您尝试运行的代码的正确版本。

此来源:

https://github.com/jjlee/mechanize/blob/master/mechanize/__init__.py

建议TextControl应该存在(虽然它已被弃用)。

我建议你删除python-mechanize(使用apt),而是使用easy_install(或从源代码下载并安装)使用更新的mechanize副本。

当然,如果您已经安装了其他依赖旧版本机械工具的软件包,那么最好不要获取源代码,并从中加载模块。