ความแตกต่างระหว่าง 'python setup.py install' และ 'pip install'


113

ฉันมีแพ็คเกจภายนอกที่ต้องการติดตั้งใน python Virtualenv จากไฟล์ tar วิธีที่ดีที่สุดในการติดตั้งแพ็คเกจคืออะไร?

ฉันได้ค้นพบ 2 วิธีที่สามารถทำได้:

  1. แตกไฟล์ tar จากนั้นเรียกใช้python setup.py installภายในไดเร็กทอรีที่แยกออกมา
  2. pip install packagename.tar.gzจากตัวอย่าง # 7 ในhttps://pip.pypa.io/en/stable/reference/pip_install/#examples

ถ้ามีความแตกต่างให้ทำใน 2 วิธีนี้


5
ใช้pip. คุณสามารถถอนการติดตั้งแพ็คเกจได้
Blender

"จากแหล่งที่มา" ใน "VCS checkout" หรือในsdist?

อะไร "ดีที่สุด" ขึ้นอยู่กับความต้องการของคุณ! คุณได้ลองใช้วิธีแก้ปัญหาเหล่านี้แล้วและล้มเหลวในทางใดทางหนึ่งหรือไม่? หรือคุณกำลังขอให้สิ่งที่แตกต่างคือระหว่างวิธีการเหล่านี้?
Martin Atkins

บน fedora ตัวอย่างเช่นการใช้yum.
perreal

คำตอบ:


115

บนพื้นผิวทั้งสองทำสิ่งเดียวกัน: ทำอย่างใดอย่างหนึ่งpython setup.py installหรือpip install <PACKAGE-NAME>จะติดตั้งแพ็คเกจ python ให้คุณด้วยความยุ่งยากขั้นต่ำ

อย่างไรก็ตามการใช้ pip มีข้อดีเพิ่มเติมบางประการที่ทำให้ใช้งานได้ดีกว่ามาก

  • pip จะดาวน์โหลดการอ้างอิงทั้งหมดสำหรับแพ็คเกจสำหรับคุณโดยอัตโนมัติ ในทางตรงกันข้ามหากคุณใช้setup.pyคุณมักจะต้องค้นหาและดาวน์โหลดการอ้างอิงด้วยตนเองซึ่งน่าเบื่อและอาจทำให้หงุดหงิดได้
  • pip ติดตามข้อมูลเมตาต่างๆที่ช่วยให้คุณถอนการติดตั้งและอัปเดตแพ็กเกจได้อย่างง่ายดายด้วยคำสั่งเดียว: pip uninstall <PACKAGE-NAME>และpip install --upgrade <PACKAGE-NAME>. ในทางตรงกันข้ามหากคุณติดตั้งแพ็คเกจโดยใช้ไฟล์setup.pyคุณต้องลบและบำรุงรักษาแพ็กเกจด้วยตนเองหากคุณต้องการกำจัดซึ่งอาจเกิดข้อผิดพลาดได้ง่าย
  • คุณไม่จำเป็นต้องดาวน์โหลดไฟล์ด้วยตนเองอีกต่อไป หากคุณใช้setup.pyคุณต้องไปที่เว็บไซต์ของห้องสมุดค้นหาว่าจะดาวน์โหลดได้ที่ไหนแตกไฟล์เรียกใช้setup.py... ตรงกันข้าม pip จะค้นหาPython Package Index (PyPi) โดยอัตโนมัติเพื่อดูว่ามีแพ็คเกจอยู่ที่นั่นหรือไม่และ จะดาวน์โหลดแยกและติดตั้งแพคเกจให้คุณโดยอัตโนมัติ ด้วยข้อยกเว้นบางประการไลบรารี Python ที่มีประโยชน์อย่างแท้จริงเกือบทุกแห่งสามารถพบได้ใน PyPi
  • pip จะช่วยให้คุณติดตั้งล้อได้อย่างง่ายดายซึ่งเป็นมาตรฐานใหม่ของการกระจาย Python ข้อมูลเพิ่มเติมเกี่ยวกับล้อข้อมูลเพิ่มเติมเกี่ยวกับล้อ
  • pip มีประโยชน์เพิ่มเติมที่รวมเข้ากับการใช้งานได้virtualenvดีซึ่งเป็นโปรแกรมที่ให้คุณรันโปรเจ็กต์ต่างๆที่ต้องใช้ไลบรารีและเวอร์ชัน Python ที่ขัดแย้งกันบนคอมพิวเตอร์ของคุณ ข้อมูลเพิ่มเติม
  • pip ถูกรวมเข้ากับ Python เป็นค่าเริ่มต้นตั้งแต่ Python 2.7.9 ใน Python 2.x series และ Python 3.4.0 ใน Python 3.x series ทำให้ใช้งานได้ง่ายขึ้น

โดยพื้นฐานแล้วให้ใช้ pip มีเพียงการปรับปรุงการใช้งานpython setup.py installเท่านั้น


หากคุณใช้ Python เวอร์ชันเก่าไม่สามารถอัปเกรดและไม่ได้ติดตั้ง pip คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับการติดตั้ง pip ได้ที่ลิงค์ต่อไปนี้:

pip โดยตัวมันเองไม่จำเป็นต้องมีการสอน 90% pip install <PACKAGE-NAME>ของเวลาเพียงคำสั่งที่คุณต้องการจริงๆคือ หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับรายละเอียดของสิ่งที่คุณสามารถทำได้กับ pip โปรดดู:

นอกจากนี้ยังแนะนำให้คุณใช้ pip และ Virtualenv ร่วมกัน หากคุณเป็นผู้เริ่มต้นใช้งาน Python โดยส่วนตัวแล้วฉันคิดว่าการเริ่มต้นด้วยการใช้ pip และติดตั้งแพ็คเกจทั่วโลกก็เป็นเรื่องดี แต่ในที่สุดฉันคิดว่าคุณควรเปลี่ยนไปใช้ Virtualenv ในขณะที่คุณจัดการกับโครงการที่จริงจังมากขึ้น

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการใช้ pip และ Virtualenv ร่วมกันโปรดดู:


1
pip ติดตั้งภายในเรียกไฟล์ setup.py หรือไม่
ตัวแปร

@variable การติดตั้ง pip จาก "ล้อ" แพ็คเกจที่คอมไพล์ไว้ล่วงหน้าไม่ได้การติดตั้ง pip จากแหล่งที่มาทำ: ดูส่วนต่อประสานระบบการสร้าง pip ติดตั้ง
ปฏิเสธ

จากประสบการณ์ของฉันpython setup.py installยังดาวน์โหลดและติดตั้งการอ้างอิง นี่เป็นการเปลี่ยนแปลงตั้งแต่คุณเขียนคำตอบนี้ในปี 2013 หรือไม่?
Ken Williams

21

python setup.py installเป็นอะนาล็อกของ make install: เป็นวิธีที่ จำกัด ในการคอมไพล์และคัดลอกไฟล์ไปยังไดเร็กทอรีปลายทาง นี่ไม่ได้หมายความว่าเป็นวิธีที่ดีที่สุดในการติดตั้งซอฟต์แวร์บนระบบของคุณ

pipเป็นผู้จัดการแพ็คเกจซึ่งสามารถติดตั้งอัปเกรดแสดงรายการและถอนการติดตั้งแพ็กเกจเช่นผู้จัดการแพ็กเกจที่คุ้นเคยรวมถึง: dpkg, apt, yum, urpmi, portsฯลฯ ภายใต้ประทุนจะทำงานpython setup.py installแต่มีตัวเลือกเฉพาะเพื่อควบคุมวิธีการและสถานที่ที่สิ่งต่างๆจะติดตั้ง

สรุป: pipการใช้งาน


2

คำถามเกี่ยวกับวิธีที่ต้องการในการติดตั้ง tarball ในเครื่องที่มีแพ็คเกจ python ไม่เกี่ยวกับข้อดีของการอัปโหลดแพ็คเกจไปยังบริการจัดทำดัชนีเช่น PyPi

เนื่องจากฉันทราบดีว่าผู้จัดจำหน่ายซอฟต์แวร์บางรายไม่อัปโหลดแพ็คเกจไปยัง PyPi แทนที่จะขอให้นักพัฒนาดาวน์โหลดแพ็คเกจจากเว็บไซต์และติดตั้ง

python setup.py ติดตั้ง

วิธีนี้สามารถใช้ได้ แต่ไม่แนะนำ ไม่จำเป็นต้องแกะไฟล์ tarball แล้วเข้าไปเพื่อเรียกใช้ไฟล์ setup.py

pip ติดตั้ง ../path/to/packagename.tar.gz

นี่คือวิธีที่ออกแบบและเป็นที่ต้องการ กระชับและสอดคล้องกับแพ็คเกจสไตล์ PyPi

สามารถดูข้อมูลเพิ่มเติมpip installได้ที่นี่: https://pip.readthedocs.io/en/stable/reference/pip_install/


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