Η Python εισήγαγε διαφορετικό module socks από αυτό που περιμένατε
Ελέγξτε το εισαγόμενο module πριν θεωρήσετε τα απόντα χαρακτηριστικά SOCKS αποτυχία proxy ή DNS.
Ένα σφάλμα όπως module 'socks' has no attribute 'create_connection' εμφανίζεται πριν από μια επιτυχή αίτηση proxy. Ξεκινήστε από το module Python που εισήγαγε η εφαρμογή.
import sys
import socks
print(sys.executable)
print(socks.__file__)
print(getattr(socks, '__version__', 'unknown'))Αυτές οι γραμμές ελέγχου προσδιορίζουν τον διερμηνέα και το εισαγόμενο αρχείο. Διαβάστε τις στο ίδιο περιβάλλον εφαρμογής όπου αποτυγχάνει. Ένα τερματικό με διαφορετικό εικονικό περιβάλλον μπορεί να εισάγει άλλο αρχείο με το ίδιο όνομα.
Ελέγξτε αν ένα τοπικό αρχείο ή πακέτο socks.py επισκιάζει την προβλεπόμενη εξάρτηση. Η διαδρομή αναζήτησης module της Python μπορεί να κάνει εκείνο το αρχείο να υπερισχύσει του εγκατεστημένου πακέτου. Μετονομάστε σκόπιμα μια τυχαία σύγκρουση και επανεκκινήστε τη διεργασία που το έχει ήδη εισάγει.
Ο πηγαίος κώδικας του PySocks περιέχει τόσο το set_default_proxy όσο και τη συμβατή γραφή setdefaultproxy, μαζί με το create_connection. Επομένως η τυφλή αλλαγή μιας γραφής δεν είναι πλήρης διάγνωση ενός απόντος χαρακτηριστικού.
Όταν το εισαγόμενο module και η έκδοση είναι σωστά, συγκρίνετε τον κώδικα με το τεκμηριωμένο API εκείνου του έργου. Αποφύγετε να προσθέτετε χειροκίνητα άσχετους καταλόγους βιβλιοθηκών συστήματος στη διαδρομή αναζήτησης της Python μέχρι η εισαγωγή να φαίνεται ότι λειτουργεί. Αυτό μπορεί να αναμείξει εκδόσεις εξαρτήσεων και να αφήσει άλυτη την υποκείμενη αναντιστοιχία περιβάλλοντος.