Я использую код 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
.
Если посмотреть на исходный код, окажется, что версия механизации, которую вы установили, не является правильной версией для кода, который вы пытаетесь запустить.
Этот источник:
https://github.com/jjlee/mechanize/blob/master/mechanize/__init__.py
предполагает, что TextControl
должен присутствовать (хотя он устарел).
Я предлагаю вам удалить python-mechanize (используя apt) и вместо этого использовать более новую копию механизации, используя easy_install (или загрузить и установить из источника).
Конечно, если у вас установлены другие пакеты, которые полагаются на более раннюю версию механизации, вам, вероятно, лучше получить источник и загрузить модуль из этого.
import mechanize; mechanize.__version__
вернет версию, которую вы используете в данный момент.