Python импортировал не тот модуль socks, который вы ожидали
Проверьте импортированный модуль, прежде чем считать отсутствующие атрибуты SOCKS сбоем proxy или DNS.
Ошибка вида module 'socks' has no attribute 'create_connection' возникает до успешного запроса через proxy. Начните с модуля Python, который импортировало приложение.
import sys
import socks
print(sys.executable)
print(socks.__file__)
print(getattr(socks, '__version__', 'unknown'))Эти строки проверки указывают интерпретатор и импортированный файл. Читайте их в том же окружении приложения, где возникает сбой. Терминал с другим виртуальным окружением может импортировать другой файл с тем же именем.
Проверьте, не перекрывает ли нужную зависимость локальный файл или пакет socks.py. Путь поиска модулей Python может отдать предпочтение этому файлу перед установленным пакетом. Осознанно переименуйте случайное совпадение и перезапустите процесс, который уже импортировал его.
Исходный код PySocks содержит и set_default_proxy, и совместимое написание setdefaultproxy, а также create_connection. Поэтому слепая замена одного написания не является полной диагностикой отсутствующего атрибута.
Когда импортированный модуль и версия верны, сравните код с документированным API этого проекта. Не добавляйте вручную посторонние каталоги системных библиотек в путь поиска Python, пока импорт не начнёт работать. Это может смешать версии зависимостей и оставить неразрешённым несоответствие окружения.