Python นำเข้าโมดูล socks ที่ต่างจากที่คุณคาดไว้
ตรวจสอบโมดูลที่นำเข้าก่อนถือว่าคุณลักษณะ SOCKS ที่หายไปเป็นความล้มเหลวของพร็อกซีหรือ DNS
ข้อผิดพลาดเช่น module 'socks' has no attribute 'create_connection' เกิดขึ้นก่อนที่คำขอพร็อกซีจะสำเร็จ เริ่มจากโมดูล 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 ด้วยมือ จนกว่าการนำเข้าจะดูเหมือนทำงานได้ สิ่งนั้นอาจผสมเวอร์ชันของการพึ่งพาและทิ้งความไม่สอดคล้องของสภาพแวดล้อมพื้นฐานไว้โดยไม่ได้รับการแก้ไข