ความแตกต่างระหว่าง pip และ conda คืออะไร?


722

ฉันรู้ว่าpipเป็นผู้จัดการแพ็คเกจสำหรับแพ็คเกจงูใหญ่ อย่างไรก็ตามฉันเห็นการติดตั้งบนเว็บไซต์ของ IPython ใช้condaเพื่อติดตั้ง IPython

ฉันสามารถใช้pipเพื่อติดตั้ง IPython ได้หรือไม่ ทำไมฉันจึงควรใช้condaเป็นผู้จัดการแพคเกจหลามอีกเมื่อฉันมีอยู่แล้วpip?

ความแตกต่างระหว่างpipและcondaคืออะไร?


การอ่านหน้าติดตั้งอย่างละเอียดคุณจะเห็นคำแนะนำในการติดตั้งด้วย pip และconda/ / enpgkมีเป้าหมายที่new users who want to get up and running with minimal effort: canopy / anaconda เป็นสภาพแวดล้อมแบบสแตนด์อโลนที่ไม่รบกวนการทำงานของระบบไพ ธ อน (เช่น venv แต่มีประสิทธิภาพมากกว่า) BTW IPyhton ไม่ใช่ iPython (ตัวพิมพ์ใหญ่ I)
Matt

3
สิ่งหนึ่งที่แตกต่างคือสามารถติดตั้ง pip ได้มากกว่าโดย conda: pip สามารถติดตั้งอะไรก็ได้จาก pypi ในคำสั่งเดียว conda ต้องการสามคำสั่ง: โครงกระดูกสร้างติดตั้งและอาจเป็นไปได้มากกว่านั้นหากใช้ไม่ได้ pip สามารถติดตั้งอะไรก็ได้จาก github หรือ source ในคำสั่งเดียว conda ต้องเขียน "สูตรอาหาร" ซึ่งไม่ใช่เรื่องง่ายโดยเฉพาะอย่างยิ่งเนื่องจากเอกสารดูเหมือนจะไม่ถูกต้อง / ล้าสมัยเสมอ
endolith

5
คำถามที่เกี่ยวข้อง: ข้อดีของ pip over conda คืออะไร ฉันเห็นการสนับสนุนจากอนาคอนด้าด้านล่าง แต่ไม่มีอะไรให้เล่น ไพพ์ยังคงเป็นมาตรฐานอยู่ทำไมถ้าแอนนาคอนดานั้นยอดเยี่ยม?
Brian Postow

24
ฉันพบว่าการรู้แจ้งราคาอ้างถึง: " Pipเป็นผู้จัดการแพคเกจและVirtualenvเป็นผู้จัดการสิ่งแวดล้อมCondaเป็นทั้งคู่" (การอ้างอิง )
Atcold

1
การสังเกต: ฉันเคยคิดว่า conda บอกเป็นนัยถึงการดาวน์โหลดแพ็คเกจ zillion แต่นี่ไม่ชัดเจนอีกต่อไป: คุณสามารถติดตั้ง miniconda ซึ่งดูเหมือนจะเป็นเพียงแค่ผู้จัดการแพ็คเกจconda.io/docs/install/quick.html
Hugh Perkins

คำตอบ:


520

การอ้างอิงจากบล็อก Conda :

มีส่วนร่วมในโลกหลามมานานเราทุกคนตระหนักถึง pip, easy_install และ virtualenv แต่เครื่องมือเหล่านี้ไม่ตรงตามข้อกำหนดเฉพาะทั้งหมดของเรา ปัญหาหลักคือพวกเขามุ่งเน้นไปที่ Python โดยไม่สนใจการพึ่งพาของไลบรารีที่ไม่ใช่ Python เช่น HDF5, MKL, LLVM ฯลฯ ซึ่งไม่มี setup.py ในซอร์สโค้ดและไม่ติดตั้งไฟล์ลงในเว็บไซต์ของ Python ไดเรกทอรีแพคเกจ

ดังนั้น Conda เป็นเครื่องมือบรรจุภัณฑ์และตัวติดตั้งที่มีเป้าหมายที่จะทำมากกว่าสิ่งที่pipทำ จัดการการพึ่งพาไลบรารีนอกแพ็คเกจ Python รวมถึงแพ็คเกจ Python ด้วยตนเอง Conda ยังสร้างสภาพแวดล้อมเสมือนจริงเช่นvirtualenvเดียวกัน

ดังนั้น Conda จึงควรนำมาเปรียบเทียบกับBuildoutซึ่งเป็นเครื่องมืออื่นที่ช่วยให้คุณจัดการกับงานติดตั้ง Python และที่ไม่ใช่ Python ได้

เนื่องจาก Conda แนะนำรูปแบบบรรจุภัณฑ์ใหม่คุณจึงไม่สามารถใช้pipและ Conda แทนกันได้ pipไม่สามารถติดตั้งรูปแบบแพ็คเกจ Conda คุณสามารถใช้เครื่องมือทั้งสองแบบเคียงข้างกัน (โดยการติดตั้งpipด้วยconda install pip) แต่ไม่สามารถทำงานร่วมกันได้

ตั้งแต่เขียนคำตอบนี้ Anaconda ได้เผยแพร่หน้าใหม่เกี่ยวกับการทำความเข้าใจ Conda และ Pipซึ่งสะท้อนถึงสิ่งนี้เช่นกัน:

นี่เป็นการเน้นถึงความแตกต่างที่สำคัญระหว่าง conda และ pip Pip ติดตั้งแพ็คเกจ Python ในขณะที่ conda ติดตั้งแพ็คเกจซึ่งอาจมีซอฟต์แวร์ที่เขียนในภาษาใด ๆ ตัวอย่างเช่นก่อนที่จะใช้ pip จะต้องติดตั้งล่าม Python ผ่านทางผู้จัดการแพ็คเกจระบบหรือโดยการดาวน์โหลดและเรียกใช้โปรแกรมติดตั้ง ในทางกลับกัน Conda สามารถติดตั้งแพ็คเกจ Python ได้เช่นเดียวกับ Python interpreter โดยตรง

และต่อไป

ในบางครั้งจำเป็นต้องมีแพ็คเกจซึ่งไม่สามารถใช้เป็นแพ็คเกจ Conda แต่มีให้ใน PyPI และสามารถติดตั้งได้ด้วย pip ในกรณีเหล่านี้คุณควรลองใช้ทั้ง conda และ pip


18
ขอบคุณสำหรับคำอธิบายของคุณ ฉันยังงงอยู่กับว่า Conda สามารถใช้แทนที่ pip ได้หรือไม่? กล่าวคือ Conda สามารถทำทุกสิ่งที่ pip สามารถทำได้หรือไม่
lazywei

10
@ Lazywei: ฉันไม่คิดว่ามันสามารถ; ดูเหมือนว่า Conda จะสนับสนุนรูปแบบการเก็บถาวรของล้อเช่น พวกเขามีเป้าหมายที่แตกต่างกัน
Martijn Pieters

45
@ naught101 "เพียงแค่สร้างสูตร" pip installนั่นไม่ใช่เป็นเรื่องง่ายเหมือนการพิมพ์
endolith

23
บางคนสามารถอธิบายให้ฉันได้ว่าจะเกิดอะไรขึ้นถ้าคุณใช้ pip และ conda เพื่อติดตั้งแพ็กเกจเดียวกันยกเว้นเวอร์ชันอื่นซึ่งไพ ธ อนจะใช้เมื่อคุณนำเข้ามัน
Lance Ruo Zhang

4
@jrh: คุณไม่สามารถติดตั้งแพ็คเกจเดียวกันหลายรุ่นเมื่อใช้ตัวจัดการแพ็คเกจระบบปฏิบัติการไม่ใช่คุณสมบัติหลัก Conda จัดการสภาพแวดล้อมซึ่งแต่ละแพ็คเกจมีแพ็คเกจที่ติดตั้งไว้แล้วในแต่ละเวอร์ชั่น ดังนั้นโปรเจ็กต์ A ซึ่งได้รับการพัฒนามานานแล้วยังคงสามารถยึดกับไลบรารี่เวอร์ชันเก่ากว่าได้ (ไม่มีทรัพยากรสำหรับอัพเกรดโปรเจ็กต์ให้ทำงานกับรีลีสที่ใหม่กว่า) ในขณะที่โปรเจ็กต์ B ต้องการไลบรารี่รุ่นเดียวกัน
Martijn Pieters

246

นี่เป็นบทสรุปสั้น ๆ :

จุดเล็ก ๆ

  • แพ็คเกจ Python เท่านั้น
  • รวบรวมทุกอย่างจากแหล่งที่มา แก้ไข: pip ตอนนี้ติดตั้งล้อไบนารีถ้าพวกเขามีอยู่
  • รับพรจากชุมชน Python หลัก (เช่น Python 3.4+ มีรหัสที่ bootstraps pip อัตโนมัติ)

CONDA

  • Python ผู้ไม่เชื่อเรื่องพระเจ้า จุดสนใจหลักของแพ็คเกจที่มีอยู่สำหรับ Python และ Conda นั้นเขียนไว้ใน Python แต่คุณสามารถมีแพ็คเกจ Conda สำหรับไลบรารี C หรือแพ็คเกจ R หรืออะไรก็ได้
  • ติดตั้งไบนารี มีเครื่องมือที่เรียกconda buildว่าสร้างแพ็คเกจจากต้นทาง แต่conda installตัวเองติดตั้งสิ่งต่าง ๆ จากแพ็คเกจ Conda ที่สร้างขึ้นแล้ว
  • ภายนอก. Conda เป็นผู้จัดการแพคเกจของ Anaconda ซึ่งเป็นผู้จัดจำหน่าย Python ที่จัดทำโดย Continuum Analytics แต่สามารถใช้งานภายนอก Anaconda ได้เช่นกัน คุณสามารถใช้กับการติดตั้ง Python ที่มีอยู่ได้โดยการติดตั้ง pip (แม้ว่าจะไม่แนะนำเว้นแต่คุณจะมีเหตุผลที่ดีในการใช้การติดตั้งที่มีอยู่)

ในทั้งสองกรณี:

  • เขียนใน Python
  • โอเพ่นซอร์ส (Conda คือ BSD และ pip ​​คือ MIT)

สองสัญลักษณ์แรกของ Conda คือสิ่งที่ทำให้มีประโยชน์มากกว่า pip สำหรับแพ็คเกจต่างๆ เนื่องจาก pip ติดตั้งจากแหล่งที่มามันอาจเจ็บปวดในการติดตั้งสิ่งต่าง ๆ ด้วยถ้าคุณไม่สามารถคอมไพล์ซอร์สโค้ดได้ (นี่เป็นเรื่องจริงโดยเฉพาะอย่างยิ่งบน Windows แต่อาจเป็นจริงได้บน Linux ถ้าแพ็คเกจมีไลบรารี C หรือ FORTRAN ยาก อ้างอิง) Conda ติดตั้งจากไบนารีหมายความว่ามีคน (เช่น Continuum) ได้ทำการรวบรวมแพคเกจอย่างหนักเพื่อให้การติดตั้งนั้นง่าย

นอกจากนี้ยังมีความแตกต่างบางอย่างหากคุณสนใจที่จะสร้างแพ็คเกจของคุณเอง ยกตัวอย่างเช่น pip ถูกสร้างขึ้นที่ด้านบนของ setuptools ในขณะที่ Conda ใช้รูปแบบของตัวเองซึ่งมีข้อได้เปรียบบางอย่าง (เช่นเป็นแบบสแตติก


21
pip ไม่สร้างทุกอย่างจากแหล่งที่มาอีกต่อไป หากมีล้อเลื่อนpip install --use-wheel <package>จะติดตั้งแพ็คเกจภายใน ดูที่นี่: wheel.readthedocs.org/en/latest อย่างไรก็ตามประสบการณ์ส่วนตัวของฉันเกี่ยวกับวงล้อก็คือมีแพ็คเกจทางวิทยาศาสตร์เพียงไม่กี่ชุดเท่านั้นที่มีความรู้ทางวิชาการอย่างแท้จริง และแน่นอนว่าการติดตั้ง pip ส่วนใหญ่จะไม่ทำงานบน windows หากสภาพแวดล้อมการสร้างของคุณไม่ได้ตั้งค่าอย่างถูกต้อง ดังนั้นในตอนนี้ conda ftw
Caleb Hattingh

4
ล้อยังใหม่อยู่และไม่ได้ใช้งานตามค่าเริ่มต้นดังนั้นจึงไม่น่าแปลกใจที่ว่ายังมีล้อไม่มาก วงล้อยังเหมาะกับหมวดหมู่ของ "Python specific" ซึ่งหมายความว่ามันอาจจะไม่เหมาะสำหรับแพ็คเกจที่ไม่ใช่ Python หรือแพ็คเกจ Python ที่ขึ้นอยู่กับแพ็คเกจที่ไม่ใช่ Python
asmeurer

4
ฉันต้องลงคะแนนให้กับสิ่งนี้: กระสุนนัดที่สองเป็นเพียงบันทึกประวัติศาสตร์ตอนนี้ แต่คุณจะไปต่อในภายหลังด้วย ข้อแตกต่างที่สำคัญในปัจจุบันคือ pip เป็นผู้จัดการแพ็คเกจในขณะที่ conda เป็นผู้จัดการสิ่งแวดล้อมมากกว่า
Shep

9
มันเป็นความจริงที่ pip สามารถรวบรวมจากแหล่งที่มาได้ แต่สิ่งนี้เริ่มมีน้อยลงและน้อยลงเมื่อแพ็กเกจเลื่อนไปที่วงล้อมากขึ้น: วันนี้ฉันสามารถติดตั้งสิ่งที่ฉันต้องการได้ภายในไม่กี่วินาทีด้วย pip ดังนั้นไม่ใช่ว่าคำตอบนี้ไม่ถูกต้องมันเพิ่งจะล้าสมัยไปเล็กน้อยเนื่องจากจุดเล็ก ๆ ได้พัฒนาขึ้นอย่างมากในช่วงไม่กี่ปีที่ผ่านมา
Shep

4
จะได้ไม่รับความจริงที่ pip เท่านั้นที่สามารถติดตั้งจากแหล่ง ก่อนล้อเรามีไข่เป็นรูปแบบการติดตั้งไบนารีเริ่มต้นและรูปแบบการกระจายที่แนะนำสำหรับการติดตั้ง Windows และ pip ​​จะ (และยังจะ) ติดตั้งไข่ถ้านั่นเป็นตัวเลือกที่ดีที่สุด
Martijn Pieters

96

คำตอบอื่น ๆ ให้รายละเอียดที่เป็นธรรม แต่ฉันต้องการเน้นบางจุดในระดับสูง

pip เป็นผู้จัดการแพคเกจที่อำนวยความสะดวกในการติดตั้งอัพเกรดและถอนการติดตั้งแพคเกจหลาม มันยังทำงานร่วมกับสภาพแวดล้อมหลามเสมือน

conda เป็นผู้จัดการแพ็คเกจสำหรับซอฟต์แวร์ใด ๆ (การติดตั้งอัปเกรดและถอนการติดตั้ง) มันยังทำงานได้กับสภาพแวดล้อมระบบเสมือน

หนึ่งในเป้าหมายของการออกแบบ conda คือการอำนวยความสะดวกในการจัดการแพคเกจสำหรับสแต็กซอฟต์แวร์ทั้งหมดที่ผู้ใช้ต้องการซึ่งเวอร์ชันของงูหลามตั้งแต่หนึ่งเวอร์ชั่นขึ้นไปอาจเป็นเพียงส่วนเล็ก ๆ เท่านั้น ซึ่งรวมถึงห้องสมุดระดับต่ำเช่นพีชคณิตเชิงเส้นคอมไพเลอร์เช่น MinGW บน Windows, บรรณาธิการเครื่องมือในการควบคุมรุ่นเช่นปรอทและ Git หรือสิ่งอื่นที่ต้องมีการกระจายและการจัดการ

สำหรับการจัดการเวอร์ชัน pip อนุญาตให้คุณสลับระหว่างและจัดการสภาพแวดล้อมหลามหลาย ๆ

Conda ช่วยให้คุณสามารถสลับระหว่างและจัดการสภาพแวดล้อมที่มีวัตถุประสงค์ทั่วไปหลายอย่างซึ่งสิ่งอื่น ๆ อีกหลายอย่างอาจแตกต่างกันไปในหมายเลขรุ่นเช่น C-library หรือคอมไพเลอร์หรือชุดทดสอบหรือเอนจิ้นฐานข้อมูลเป็นต้น

Conda ไม่ใช่ Windows เป็นศูนย์กลาง แต่สำหรับ Windows นั้นเป็นโซลูชันที่เหนือกว่าในปัจจุบันเมื่อแพ็คเกจทางวิทยาศาสตร์ที่ซับซ้อนซึ่งต้องมีการรวบรวมจะต้องได้รับการติดตั้งและจัดการ

ฉันต้องการที่จะร้องไห้เมื่อคิดถึงเวลาที่เสียไปในการรวบรวมแพ็คเกจเหล่านี้จำนวนมากผ่าน pip บน Windows หรือดีบักpip installเซสชันที่ล้มเหลวเมื่อต้องการรวบรวม

เป็นจุดสุดท้ายต่อเนื่อง Analytics ยังโฮสต์ (ฟรี) binstar.org (ตอนนี้เรียกว่าanaconda.org ) เพื่อให้นักพัฒนาแพคเกจปกติในการสร้างของพวกเขาเอง (สร้าง) กองซอฟต์แวร์ที่ผู้ใช้แพคเกจของพวกเขาจะสามารถที่จะconda installจาก


4
ตามจุดสุดท้ายของคุณโครงการConda-forgeบุคคลที่สามได้กลายเป็นแนวทางมาตรฐานอุตสาหกรรมในการเผยแพร่แพ็คเกจ Anaconda อย่างรวดเร็ว เมื่อเร็ว ๆ นี้เราได้เผยแพร่แพคเกจ conda-forge-host หลายรายการสำหรับเครื่องมือจำลองทางชีววิทยาหลายมิติของเรา - และไม่สามารถแนะนำกระบวนการได้ มีองค์ประกอบการตรวจสอบแบบ peer-based ของ GitHub เพื่อส่งสูตรอาหารใหม่ให้กับ conda-forge แต่ข้อดีในแง่ของระบบอัตโนมัติ conda-forge นั้นมีค่ามากกว่าการลงทุนครั้งแรก ปัง!
เซซิลแกง

@CecilCurry ฉันได้นำKerasเข้ารหัสของฉันติดตั้งอนาคอนดาบน mac และ Keras แล้วทั้งcondaติดตั้งและpipติดตั้ง ดังนั้นเมื่อเรียกใช้รหัสของฉันใน terminal ฉันจะรู้ได้อย่างไรว่าkerasกำลังนำเข้า ( pipหนึ่งหรือcondaหนึ่ง)?
KPMG

25

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

conda install -n testenv pip
source activate testenv
pip <pip command>

คุณยังสามารถเพิ่ม pip ไปยังแพ็คเกจเริ่มต้นของสภาพแวดล้อมใด ๆ ดังนั้นจึงมีอยู่ในแต่ละครั้งดังนั้นคุณไม่ต้องทำตามตัวอย่างข้างต้น


ฉันคิดว่านี่ไม่แนะนำ
endolith

8
แนะนำอย่างเต็มที่ให้ใช้ pip ภายใน conda จะดีกว่าที่จะติดตั้งโดยใช้ conda แต่สำหรับแพคเกจใด ๆ ที่ไม่มี conda build ก็ยอมรับได้อย่างสมบูรณ์ในการใช้ pip
Bradley Kreider

2
nit: ดูเหมือนว่าวลีจะเป็นfully supportedอย่างไร fully recommendedบอกเป็นนัยว่าควรใช้ pip มากกว่า conda ภายในสภาพแวดล้อม conda ในใจของฉันแล้วฉันไม่แน่ใจว่าคุณหมายถึงอะไร
Hugh Perkins

22

อ้างอิงจากConda สำหรับบทความData Scienceลงในเว็บไซต์ของ Continuum:

Conda vs pip

โปรแกรมเมอร์ Python อาจคุ้นเคยกับ pip เพื่อดาวน์โหลดแพ็คเกจจาก PyPI และจัดการกับความต้องการ แม้ว่า conda และ pip ​​จะเป็นผู้จัดการแพ็คเกจ แต่ต่างกันมาก:

  • Pip มีความเฉพาะเจาะจงสำหรับแพ็คเกจ Python และ conda เป็นผู้ไม่เชื่อเรื่องภาษาซึ่งหมายความว่าเราสามารถใช้ conda เพื่อจัดการแพ็คเกจจากภาษาใด ๆ คอมไพล์ Pip จากแหล่งที่มาและ conda ติดตั้งไบนารีกำจัดภาระในการรวบรวม
  • Conda สร้างสภาพแวดล้อมที่ไม่เชื่อเรื่องภาษาในขณะที่ pip อาศัย virtualenv เพื่อจัดการกับสภาพแวดล้อม Python เท่านั้นแม้ว่าจะแนะนำให้ใช้แพ็คเกจ conda เสมอ แต่ conda ก็มี pip ด้วยดังนั้นคุณจึงไม่ต้องเลือกระหว่างทั้งสอง ตัวอย่างเช่นในการติดตั้งแพ็กเกจหลามที่ไม่มีแพ็คเกจ conda แต่สามารถใช้งานได้ผ่าน pip เพียงแค่รันตัวอย่างเช่น:
conda install pip
pip install gensim

15

การอ้างอิงจากConda: Myths and Misconceptions (คำอธิบายที่ครอบคลุม):

...

ความเชื่อที่ # 3: Conda และ pip ​​เป็นคู่แข่งโดยตรง

ความเป็นจริง: Conda และ pip ​​มีจุดประสงค์ที่แตกต่างกันและแข่งขันกันโดยตรงในงานย่อย ๆ : คือการติดตั้งแพ็กเกจ Python ในสภาพแวดล้อมที่แยก

Pip ซึ่งย่อมาจากP ip I nstalls P ackages เป็นผู้จัดการแพคเกจที่ถูกลงโทษอย่างเป็นทางการของ Python และใช้กันทั่วไปในการติดตั้งแพ็คเกจที่เผยแพร่ใน Python Package Index (PyPI) pip และ PyPI นั้นควบคุมและสนับสนุนโดย Python Packaging Authority (PyPA)

กล่าวโดยย่อ pip เป็นผู้จัดการทั่วไปสำหรับแพ็คเกจ Python conda เป็นผู้จัดการสภาพแวดล้อมข้ามแพลตฟอร์มที่ไม่เชื่อเรื่องภาษา สำหรับผู้ใช้ความแตกต่างที่โดดเด่นที่สุดน่าจะเป็น: pip ติดตั้งแพ็คเกจหลามในสภาพแวดล้อมใด ๆ conda ติดตั้งแพคเกจใด ๆ ในสภาพแวดล้อมที่ conda หากสิ่งที่คุณกำลังทำคือการติดตั้งแพ็กเกจ Python ภายในสภาพแวดล้อมแบบแยกส่วน conda และ pip ​​+ virtualenv นั้นสามารถใช้แทนกันได้ส่วนใหญ่ modulo จะมีความแตกต่างในการจัดการการพึ่งพาและความพร้อมใช้งานของแพ็กเกจ ตามสภาพแวดล้อมที่แยกผมหมายถึง conda-env หรือ virtualenv ซึ่งคุณสามารถติดตั้งแพ็คเกจได้โดยไม่ต้องแก้ไขการติดตั้ง Python ของระบบ

แม้แต่การวาง Myth # 2 ไว้ถ้าเรามุ่งเน้นเพียงแค่การติดตั้งแพ็กเกจ Python conda และ pip ​​จะให้บริการผู้ชมและวัตถุประสงค์ที่แตกต่างกัน ถ้าคุณต้องการจัดการแพ็กเกจ Python ภายในการติดตั้ง Python ของระบบที่มีอยู่ conda ไม่สามารถช่วยคุณได้: โดยการออกแบบมันสามารถติดตั้งแพ็คเกจภายในสภาพแวดล้อม conda เท่านั้น ถ้าคุณต้องการพูดทำงานกับแพ็คเกจ Python จำนวนมากซึ่งพึ่งพาการอ้างอิงจากภายนอก (NumPy, SciPy และ Matplotlib เป็นตัวอย่างทั่วไป) ในขณะที่การติดตามการพึ่งพาเหล่านั้นในทางที่มีความหมาย pip ก็ไม่สามารถช่วยคุณได้: โดยการออกแบบ จัดการแพ็คเกจ Python และแพ็คเกจ Python เท่านั้น

Conda และ pip ​​ไม่ใช่คู่แข่ง แต่เป็นเครื่องมือที่เน้นกลุ่มผู้ใช้ที่แตกต่างกันและรูปแบบการใช้งาน


1
ฉันไม่แน่ใจว่านี่เป็นเรื่องจริงนอกเหนือจากมุมมองการวางตำแหน่งตลาด ตัวอย่างเช่นดู pytorch ซึ่งมีการติดตั้งสามประเภท: conda, pip, source, pytorch.orgและแนะนำ: conda
Hugh Perkins

2
"การติดตั้งแพ็กเกจ Python ในสภาพแวดล้อมแบบแยกตัว" เป็นสิ่งสำคัญที่นักพัฒนา Python ส่วนใหญ่ใช้ pip
Nick

@ ไม่ทราบเมื่อนักพัฒนาอยู่ในสภาพแวดล้อมเสมือน 'ที่' อยู่แล้ว? ฉันคิดว่า pip ทำงานในสภาพแวดล้อมเสมือนจริงและติดตั้งแพคเกจราวกับว่ามันกำลังติดตั้งสำหรับระบบ แต่ตามที่ sanchos.s กล่าวว่ามันติดตั้งแพคเกจหลามเท่านั้นและไม่ดูแลไลบรารีพื้นฐาน ใครก็ได้โปรดแก้ไขฉันถ้าฉันผิด
Chan Kim

12

สำหรับผู้ใช้ WINDOWS

สถานการณ์เครื่องมือบรรจุภัณฑ์ "มาตรฐาน" ได้รับการปรับปรุงเมื่อเร็ว ๆ นี้:

  • บน pypi นั้นขณะนี้มี 48% ของแพคเกจล้อ ณ เดือนกันยายน 11th 2558 (เพิ่มขึ้นจาก 38% ในเดือนพฤษภาคม 2558, 24% ในเดือนกันยายน 2557),

  • ขณะนี้รูปแบบวงล้อได้รับการสนับสนุนนอกเวลาสำหรับ python 2.7.9 ล่าสุด

สถานการณ์เครื่องมือบรรจุภัณฑ์ "มาตรฐาน" + "tweaks" กำลังปรับปรุงด้วย:

  • คุณสามารถหาเกือบทุกแพคเกจทางวิทยาศาสตร์เกี่ยวกับรูปแบบที่ล้อhttp://www.lfd.uci.edu/~gohlke/pythonlibs ,

  • โครงการ mingwpy อาจนำแพคเกจ 'คอมไพล์' หนึ่งวันไปยังผู้ใช้ windows ทำให้สามารถติดตั้งทุกอย่างจากแหล่งเมื่อจำเป็น

บรรจุภัณฑ์ "Conda" ยังคงดีกว่าสำหรับตลาดที่ให้บริการและเน้นบริเวณที่ "มาตรฐาน" ควรปรับปรุง

(เช่นเดียวกับสเปคพึ่งพาหลายครั้งในระบบล้อมาตรฐานและในระบบ conda หรือ buildout ไม่ได้เป็น pythonic มันจะดีถ้าเทคนิค 'แกนกลาง' บรรจุภัณฑ์เหล่านี้สามารถรวมตัวกันได้ผ่าน PEP)



2

ฉันสามารถใช้ pip เพื่อติดตั้ง iPython ได้หรือไม่?

แน่นอนว่าทั้งสอง (วิธีแรกในหน้า)

pip install ipython

และ (วิธีที่สามที่สองคือconda)

คุณสามารถดาวน์โหลด IPython จาก GitHub หรือ PyPI ด้วยตนเอง หากต้องการติดตั้งหนึ่งในเวอร์ชันเหล่านี้ให้คลายแพ็กเกจและรันสิ่งต่อไปนี้จากไดเร็กทอรีต้นทางระดับบนสุดโดยใช้เทอร์มินัล:

pip install .

มีการแนะนำอย่างเป็นทางการในวิธีการที่จะติดตั้ง

เหตุใดฉันจึงควรใช้ conda เป็นผู้จัดการแพ็คเกจงูใหญ่ตัวอื่นเมื่อฉันมี pip แล้ว

ตามที่กล่าวไว้ที่นี่ :

หากคุณต้องการแพคเกจเฉพาะอาจเป็นเพียงหนึ่งโครงการหรือถ้าคุณต้องการแบ่งปันโครงการกับคนอื่น conda ดูเหมือนจะเหมาะสมกว่า

Conda มีค่ามากกว่า pip ใน ( YMMV )

  • โครงการที่ใช้เครื่องมือที่ไม่ใช่หลาม
  • แบ่งปันกับเพื่อนร่วมงาน
  • สลับระหว่างรุ่น
  • สลับไปมาระหว่างโครงการต่าง ๆ กับห้องสมุดรุ่นต่าง ๆ

ความแตกต่างระหว่าง pip และ conda คืออะไร?

นั่นคือคำตอบอย่างกว้างขวางจากคนอื่น ๆ


1

pip สำหรับ Python เท่านั้น

condaมีไว้สำหรับอนาคอนด้า + แพ็คเกจทางวิทยาศาสตร์อื่น ๆ เช่นการพึ่งพา R เป็นต้นทุกคนไม่จำเป็นต้องมีอนาคอนดาที่มาพร้อมกับ Python อนาคอนด้าส่วนใหญ่สำหรับผู้ที่ใช้การเรียนรู้ของเครื่อง / การเรียนรู้เชิงลึกและอื่น ๆ Casual Python dev จะไม่เรียกใช้ Anaconda บนแล็ปท็อปของเขา


คำอธิบายง่ายๆ แต่ฉันถูกสอนให้ไปที่เว็บไซต์ของ Anaconda โดยตรงและดาวน์โหลด Python 2.x หรือ 3.x distribution ทำไม? > เพราะมันมีแพ็คเกจทั้งหมดที่นักเรียนต้องการ Numpy, Scipy, matpliotlib, sklearn เป็นต้นนี่คือสาเหตุที่ทำให้เกิดช่องว่างในการทำความเข้าใจรายละเอียดพื้นฐานที่ดีกว่า นักเรียน
Rene Duchamp

ฉันรู้ว่านี่เป็นคำตอบเก่าในตอนนี้ แต่สิ่งที่คุณเขียนเกี่ยวกับ Conda / Anaconda ดูเหมือนจะผิดกับฉันอย่างสิ้นเชิง
AMC

0

ฉันอาจพบความแตกต่างอีกเล็กน้อยของธรรมชาติเล็กน้อย ฉันมีสภาพแวดล้อมที่หลามของฉันภายใต้/usrมากกว่า/homeหรืออะไรก็ตาม sudo install pipเพื่อที่จะติดตั้งมันฉันจะต้องใช้ สำหรับฉันแล้วผลข้างเคียงที่ไม่พึงประสงค์ของsudo install pipแตกต่างจากที่รายงานกันอย่างแพร่หลายเล็กน้อย: หลังจากทำเช่นนั้นฉันต้องทำงานpythonด้วยsudoเพื่อที่จะนำเข้าsudoแพ็คเกจที่ติดตั้งใด ๆ ผมขึ้นอยู่กับที่และในที่สุดก็พบว่าผมสามารถใช้sudo condaในการติดตั้งแพคเกจให้สภาพแวดล้อมภายใต้/usrซึ่งจากนั้นจะนำเข้าได้ตามปกติโดยไม่จำเป็นต้องได้รับอนุญาตสำหรับsudo pythonผมยังใช้sudo condaในการแก้ไขปัญหาเสียpipมากกว่าที่จะใช้หรือ sudo pip uninstall pipsudo pip --upgrade install pip

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