ความแตกต่างระหว่างการติดตั้ง conda และการติดตั้ง pipการเปรียบเทียบฟังก์ชัน ฯลฯ [Python]

2019 5 年月日 26

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

สภาพแวดล้อม Anaconda พังเมื่อฉันคิดว่า Jupyter Notebook จะไม่เริ่มทำงาน

เนื่องจากเป็นโอกาสที่ดี ฉันจึงตรวจสอบความแตกต่างระหว่าง pip และ conda ดังนั้นฉันจะทิ้งมันไว้เป็นบันทึกด้านล่าง

ความแตกต่างระหว่าง conda และ pip

คอนด้าคืออะไร

กล่าวโดยย่อคือตัวจัดการแพ็คเกจและระบบการจัดการสภาพแวดล้อมที่มาพร้อมกับ Anaconda/Miniconda

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

conda จะทำงานเมื่อติดตั้งโดยโปรแกรมติดตั้ง Anaconda หรือโปรแกรมติดตั้ง miniconda เท่านั้น แม้ว่า conda จะถูกติดตั้งในสภาพแวดล้อม python+pip แต่ก็ไม่สามารถใช้งานได้เหมือนการกระจาย Anaconda

pip คืออะไร

ตัวติดตั้งแพ็คเกจ python มาตรฐานและระบบการจัดการแพ็คเกจที่มาพร้อมกับการติดตั้ง python แท้

ดาวน์โหลดและติดตั้งแพ็คเกจจาก Python Package Index (PyPI) ซึ่งเป็นที่เก็บสำหรับภาษาโปรแกรม Python

ความแตกต่างในแต่ละฟังก์ชัน

ฉันสรุปบทบาทของ conda และ pip ​​ไว้ในตารางง่ายๆ

機能คอนด้าจุดเล็ก ๆ
การติดตั้งและจัดการแพ็คเกจ
การสลับเวอร์ชันของ Pythonไม่ (แทนที่ด้วย pipenv, pyenv)
การจัดการสภาพแวดล้อมเสมือนจริงไม่ (ใช้แทน pipenv, virtualenv, venv)

Conda ยังเป็นระบบการจัดการสภาพแวดล้อม ดังนั้นคุณจึงสามารถสร้างสภาพแวดล้อมเสมือนจริง เปลี่ยนเวอร์ชัน Python ของคุณเป็น 3.7 และเปลี่ยนเป็น 2.7

ด้วย pip คุณจะติดตั้งและใช้แพ็คเกจ เช่น pyenv (การควบคุมเวอร์ชัน) และ venv (การจัดการสภาพแวดล้อมเสมือน)

เมื่อเร็ว ๆ นี้ pipenv ออกมาและดูเหมือนว่าจะมีฟังก์ชั่นที่เกือบจะแทนที่ conda

การติดตั้ง conda เทียบกับการติดตั้ง pip

แม้ว่าการติดตั้ง conda และการติดตั้ง pip จะมีคำสั่งที่คล้ายกัน แต่วิธีการติดตั้งแพ็คเกจนั้นแตกต่างกันมาก มีตารางเปรียบเทียบที่เข้าใจง่ายบนเว็บไซต์ anaconda.com ดังนั้นฉันจะอ้างอิง (ภาษาญี่ปุ่นและแก้ไขเพื่อให้ฉันเข้าใจได้ง่ายขึ้น)

ติดตั้งคอนดาpip ติดตั้ง
รูปแบบแพ็คเกจไบนารี่ล้อหรือแหล่งที่มา
รวบรวม不要必要
ประเภทแพ็คเกจภาษาอื่นก็ได้เช่นกันหลามเท่านั้น
การจัดการสภาพแวดล้อมเสมือนจริง การจัดการเวอร์ชัน可能ไม่ (แทนที่ด้วย virtualenv, venv)
ตรวจสอบการพึ่งพาありไม่มีเลย
แหล่งดาวน์โหลดแพ็คเกจที่เก็บอนาคอนด้า, เมฆอนาคอนด้าพีเพิล

・conda รองรับภาษาอื่นที่ไม่ใช่ python

Anaconda/Miniconda เป็นข้ามแพลตฟอร์มที่อนุญาตให้คุณติดตั้งภาษาโปรแกรมหลายภาษา เช่น Python, R, Ruby, Java, JavaScript, C/C++, FORTRAN และแพ็คเกจต่างๆ

Conda สามารถติดตั้งแพ็คเกจซอฟต์แวร์ที่เขียนในภาษาต่างๆ บนแพลตฟอร์มข้ามแพลตฟอร์มได้

pip สามารถติดตั้งแพ็คเกจ Python ได้เท่านั้น

・จำเป็นต้องรวบรวมหรือไม่

มากกว่า 1000 แพ็คเกจที่สามารถติดตั้งได้ด้วยคำสั่ง conda จะถูกจัดเก็บไว้ในที่เก็บเฉพาะที่เรียกว่า Anaconda cloud

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

ไฟล์ที่คุณติดตั้งด้วย pip มีไฟล์ต้นฉบับ ดังนั้นคุณจะต้องคอมไพล์ไฟล์เหล่านี้ในฝั่งไคลเอ็นต์

ซึ่งอาจทำให้เกิดปัญหาขึ้นกับสภาพแวดล้อมและถือเป็นสาเหตุหนึ่งที่ทำให้การสร้างสิ่งแวดล้อมสะดุดหลายประการอาจจะ.อาจต้องมีการพึ่งพาภายนอก

・มีหรือไม่มีการตรวจสอบการพึ่งพา

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

Conda สนับสนุนสิ่งนี้โดยจัดเตรียมตัวแก้ปัญหา SAT ที่รวบรวมข้อมูลเมตาจากแพ็คเกจทั้งหมดเพื่อค้นหาการพึ่งพาระหว่างการติดตั้ง ระบบจะจับการพึ่งพาที่ซับซ้อนระหว่างแพ็กเกจและการอัปเดตอย่างรวดเร็ว และติดตั้งอย่างเหมาะสม

・ความแตกต่างของความเร็วในการดำเนินการ

นอกจากนี้ยังมีข้อมูลว่าการดำเนินการเมทริกซ์กับ numpy ที่ติดตั้งด้วย conda นั้นเร็วกว่าความแตกต่างดูเหมือนจะมากกว่าสองเท่าทั้งนี้ขึ้นอยู่กับประเภทของการคำนวณ

มีวิธีการใช้งานที่หลากหลายสำหรับ BLAS (โปรแกรมย่อยพีชคณิตเชิงเส้นพื้นฐาน) ซึ่งจริง ๆ แล้วรับผิดชอบการดำเนินการเมทริกซ์ที่เรียกโดย NumPy หนึ่งในนั้นคือ Intel MKL (Math Kernel Library) ที่พัฒนาโดย Intel )ที่จริงแล้ว BLAS ที่เรียกจาก NumPy ที่ติดตั้งโดย Anaconda คือ MKL แต่เมื่อติดตั้ง NumPy ด้วย pip มักจะใช้ BLAS ที่เรียกว่า OpenBLAS ดังนั้นจึงมีความเป็นไปได้ที่จะมีความแตกต่างในประสิทธิภาพที่นี่คือ

ความแตกต่างของความเร็วระหว่าง NumPy ใน Anaconda และ NumPy กับ pip - Orizuru

BLAS เป็นห้องสมุดที่ทำคณิตศาสตร์พื้นฐานและเวกเตอร์ มีมดที่มีชีวิตมากขึ้นในห้องสมุดที่มีจำนวนมากและเริ่มสับสน...

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

ดูเหมือนว่าความเร็วในการคำนวณจะเปลี่ยนไปขึ้นอยู่กับ BLAS ที่ใช้ใน Numpy [Python]

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

การอ้างอิง


ทำความเข้าใจกับ Conda และ Pip
https://conda.io/en/latest/
เปรียบเทียบความเร็วของ NumPy ของ Anaconda และ NumPy ของ PyPI
หยุดการติดตั้ง Tensorflow โดยใช้ pip เพื่อประสิทธิภาพ!