2012-02-18 7 views
1

1年前に書かれたPythonコードを使用しています。Python:mechanizeに 'TextControl'という属性がありません。

私のOSはUnbuntu 10.10 with Python 2.6.6です。

コードスニペットは、次のとおりです。

AttributeError: 'module' object has no attribute 'TextControl' 

何が問題になっています:

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() 

私はこのコードを実行すると、私はこのエラーを取得しますか?元の著者の意図はここにありますか?私がグーグルTextControlの場合、何も機械化に関連しているようです。私はapt-get install python-mechanizeによって機械化をインストールします。

答えて

0

ソースコードを見ると、インストールしているmechanizeのバージョンが、実行しようとしているコードの正しいバージョンではないようです。

このソース:

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

(それは非推奨ですが)TextControlが存在しなければならないことを示唆しています。

python-mechanizeを(aptを使って)削除し、代わりにeasy_install(またはソースからダウンロードしてインストール)を使ってmechanizeの新しいコピーを使用することをお勧めします。

もちろん、古いバージョンのmechanizeに依存している他のパッケージがインストールされている場合は、ソースを入手してからモジュールをロードするほうが良いでしょう。

+0

HI現在使用している機械化のバージョンを確認する方法はありますか? –

+0

@SusanMayer: 'import mechanize; mechanize .__ version__'はあなたが現在使っているバージョンを返します。 – unutbu

0

同じバージョンのmechanizeライブラリで作業していないようです。 githubの中codeを見ると、私は__init__.pyでこれを参照してください。

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

だから、確かにいくつかのTextControlどこかにあるはずです。 githubバージョンでは実際には_form.pyで定義されています。

関連する問題