ข้อผิดพลาดเช่น 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 ด้วยมือ จนกว่าการนำเข้าจะดูเหมือนทำงานได้ สิ่งนั้นอาจผสมเวอร์ชันของการพึ่งพาและทิ้งความไม่สอดคล้องของสภาพแวดล้อมพื้นฐานไว้โดยไม่ได้รับการแก้ไข

บทความที่เกี่ยวข้อง