Python: Mechanize не имеет атрибута «TextControl» ошибка

1

Я использую код Python, который был написан год назад.

Моя ОС - Unbuntu 10.10 с 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' object has no attribute 'TextControl'

Что не так? Что здесь подразумевает первоначальный автор? Когда я google TextControl, ничего не похоже на механизацию. Я устанавливаю mechanize с помощью apt-get install python-mechanize.

Теги:
command-line
mechanize

2 ответа

0
Лучший ответ

Если посмотреть на исходный код, окажется, что версия механизации, которую вы установили, не является правильной версией для кода, который вы пытаетесь запустить.

Этот источник:

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

предполагает, что TextControl должен присутствовать (хотя он устарел).

Я предлагаю вам удалить python-mechanize (используя apt) и вместо этого использовать более новую копию механизации, используя easy_install (или загрузить и установить из источника).

Конечно, если у вас установлены другие пакеты, которые полагаются на более раннюю версию механизации, вам, вероятно, лучше получить источник и загрузить модуль из этого.

  • 0
    HI Есть ли способ узнать, какую версию Mechanize я сейчас использую?
  • 0
    @SusanMayer: import mechanize; mechanize.__version__ вернет версию, которую вы используете в данный момент.
0

Похоже, вы не работаете с той же версией библиотеки mechanize. Глядя на код в github, я вижу это в __init__.py:

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

Так что, конечно, должен быть какой-то TextControl. В версии github фактически определен в _form.py.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню