ต้องติดตั้ง urllib2 สำหรับ Python 3.5.1


102

ฉันใช้ Python 3.5.1 สำหรับ Mac ฉันต้องการใช้urllib2โมดูล ฉันลองติดตั้งแล้ว แต่ได้รับแจ้งว่ามันถูกแยกออกเป็นurllib.requestและurllib.errorสำหรับ Python 3

คำสั่งของฉัน (ทำงานจากไดเร็กทอรี bin เฟรมเวิร์กในตอนนี้เนื่องจากไม่อยู่ในเส้นทางของฉัน):

sudo ./pip3 install urllib.request

ส่งคืนสิ่งนี้:

Could not find a version that satisfies the requirement urllib.request (from versions: )
No matching distribution found for urllib.request

ฉันได้รับข้อผิดพลาดเดียวกันก่อนหน้านี้เมื่อฉันพยายามติดตั้งurllib2ในบัดดล


2
คุณไม่สามารถนำเข้าurllib.requestในโปรแกรม Python ของคุณได้หรือไม่?
michaelpri

3
urllib.request เป็นส่วนหนึ่งของไลบรารีมาตรฐานและไม่จำเป็นต้องติดตั้ง
Daniel Roseman


urllib เป็นส่วนหนึ่งของไลบรารี std แต่มีเพียงแพ็คเกจแยกวิเคราะห์ในนั้นฉันไม่พบคำขอในนั้น ....
Devendra Bhat

คำตอบ:


171

คำเตือน : งานวิจัยด้านความปลอดภัยพบแพ็คเกจที่เป็นพิษหลายอย่างใน PyPIรวมถึงแพ็คเกจที่ตั้งชื่อurllibซึ่งจะ "โทรศัพท์กลับบ้าน" เมื่อติดตั้ง หากคุณใช้pip install urllibเวลาหลังจากมิถุนายน 2017 เอาแพคเกจที่เร็วที่สุดเท่าที่เป็นไปได้

คุณทำไม่ได้และคุณไม่จำเป็นต้องทำ

urllib2เป็นชื่อของไลบรารีที่รวมอยู่ใน Python 2 คุณสามารถใช้urllib.requestไลบรารีที่มาพร้อมกับ Python 3 แทนได้ urllib.requestห้องสมุดทำงานเช่นเดียวกับurllib2ผลงานในหลาม 2. เพราะมันเป็นรวมแล้วคุณไม่จำเป็นต้องติดตั้ง

หากคุณกำลังทำตามบทช่วยสอนที่บอกให้คุณใช้urllib2คุณจะพบว่าคุณกำลังประสบปัญหาอื่น ๆ บทช่วยสอนของคุณเขียนขึ้นสำหรับ Python 2 ไม่ใช่ Python 3 ค้นหาบทช่วยสอนอื่นหรือติดตั้ง Python 2.7 และดำเนินการสอนในเวอร์ชันนั้นต่อ คุณจะพบurllib2มาพร้อมกับเวอร์ชันนั้น

หรืออีกวิธีหนึ่งคือติดตั้งrequestsไลบรารีสำหรับ API ระดับที่สูงขึ้นและใช้งานง่ายขึ้น ใช้งานได้กับทั้ง Python 2 และ 3


24
ขอบคุณฉันสามารถใช้:import urllib.request as urllib2
MewX

ดังนั้น pip จึงไม่ถูกตรวจสอบจากมัลแวร์?
อิกร์

3
@igor: pipเป็นเครื่องมือบรรทัดคำสั่งที่สามารถค้นหาและโหลดแพ็กเกจได้จากทุกที่ PyPI.org ดัชนีแพ็คเกจเริ่มต้นpipจะไปที่ไม่ได้รับการดูแล Python Software Foundation เป็นองค์กรที่ดำเนินการโดยอาสาสมัครและไม่สามารถเริ่มกลั่นกรองจำนวนโค้ดที่เกี่ยวข้องได้
Martijn Pieters

ขอบคุณที่แจ้งให้ทราบ
B Furtado

28

ตามเอกสาร :

หมายเหตุโมดูล urllib2 ถูกแบ่งออกเป็นหลายโมดูลใน Python 3 ที่ชื่อurllib.requestและurllib.error. เครื่องมือ 2to3 จะปรับการนำเข้าโดยอัตโนมัติเมื่อแปลงซอร์สของคุณเป็น Python 3

จึงปรากฏว่ามันเป็นไปไม่ได้ที่จะทำสิ่งที่คุณต้องการ urllib.requestแต่คุณสามารถใช้ฟังก์ชั่นที่เหมาะสมจาก


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.