Я работаю над проектом, в который хочу интегрировать функцию обхода капчи. Я использовал для этого сервис 2captcha, и он был весьма успешным, пока я не перешел с Windows на Linux (Ubuntu 22.04). Я продолжаю получать ту же ошибку: объект «TwoCaptcha» не имеет атрибута «нормальный», когда я пытаюсь запустить эту функцию:
def solve_captcha(image_path):
solver = TwoCaptcha(api_key)
try:
result = solver.normal(image_path)
except Exception as e:
logging.error(e)
else:
return result['code']
Проблема в том, что в обеих системах установлена одна и та же версия библиотеки. После перехода я ничего не менял в приведенном выше коде функции, и официальная документация включает указанный атрибут в примеры.
Может ли кто-нибудь помочь мне понять проблему?
Я пробовал искать как в документации библиотеки (https://pypi.org/project/2captcha-python/ ), так и в примерах на официальной веб-странице сервиса ( https://2captcha.com/ api-docs/normal-captcha), но оба они включают в свои коды «нормальные» атрибуты.
Я установил этот модуль в Linux Mint (на базе Ubuntu), и когда я использую print(TwoCaptcha.normal), он показывает что-то вроде <function TwoCaptcha.normal at 0x76817c1d93f0>. TwoCaptcha.__file__ не существует, но TwoCaptcha.__module__ дает 'twocaptcha.solver'
всегда помещайте ПОЛНОЕ сообщение об ошибке (начиная со слова «Traceback») в вопросе (не в комментариях) в виде текста (не скриншота и не ссылки на внешний портал). В полной версии ошибки/трассировки есть и другая полезная информация. Кроме того, вопрос станет более читабельным, и его сможет увидеть больше людей, поэтому больше людей смогут помочь.






Добрый день, попробуйте запустить код командой python3.
Пример:
python3 main.py
Или используйте виртуальную среду.
Итак... Нашел проблему и предложил решение для таких людей, как я:
Судя по всему, я использовал устаревшую версию зависимости 2capltcha (называемую «TwoCaptcha»).
Активный называется «2captcha-python».
Устаревший вариант просто не имел необходимой функциональности.
возможно, вы используете другой модуль с тем же именем. Или, может быть, вы создали собственный класс
TwoCaptcha, и в нем нет этой функции. Вы можете использоватьprint( dir(solver) ), чтобы увидеть, какие переменные и функции он имеет. Вы также можете попробоватьprint( TwoCaptcha.__file__ )посмотреть, в каком файле у вас есть этот класс.