Sự khác biệt giữa cài đặt conda và cài đặt pipSo sánh các chức năng, v.v. [Python]

Ngày 2019 tháng 5 năm 26

Cho đến nay, cài đặt pip chỉ được công nhận là thay thế khi không thể sử dụng cài đặt conda.Nếu gói tôi muốn không có trong kho lưu trữ của Anaconda, tôi đã cài đặt gói đó bằng pip, nhưng tại một thời điểm, môi trường bị hỏng do những xung đột này.

Môi trường Anaconda bị hỏng khi tôi nghĩ rằng Jupyter Notebook sẽ không khởi động

Vì đó là một cơ hội tuyệt vời, tôi đã kiểm tra sự khác biệt giữa pip và conda, vì vậy tôi sẽ để nó như một bản ghi nhớ bên dưới.

Sự khác biệt giữa conda và pip

Conda là gì

Nói tóm lại, nó là một trình quản lý gói và hệ thống quản lý môi trường đạt tiêu chuẩn với Anaconda/Miniconda.

Anaconda là một nền tảng cung cấp một tập hợp các gói cho khoa học dữ liệu (bạn đã biết nếu bạn đang tìm kiếm sự khác biệt giữa conda và pip). Bạn có thể cài đặt cùng lúc các ngôn ngữ lập trình cho khoa học dữ liệu như Python và R cũng như các gói cần thiết cho phân tích thống kê và học máy, đồng thời ngay lập tức xây dựng môi trường sử dụng Python.
Ngoài ra còn có Miniconda chỉ có cấu hình tối thiểu.

conda chỉ hoạt động khi được cài đặt bởi trình cài đặt Anaconda hoặc trình cài đặt miniconda. Ngay cả khi conda được cài đặt trong môi trường python+pip, nó không thể được sử dụng như một bản phân phối Anaconda.

Pip là gì

Một trình cài đặt gói python tiêu chuẩn và hệ thống quản lý gói đi kèm với việc cài đặt python thuần.

Nó tải xuống và cài đặt các gói từ Chỉ mục gói Python (PyPI), một kho lưu trữ cho ngôn ngữ lập trình Python.

Sự khác biệt trong từng chức năng

Tôi đã tóm tắt vai trò của conda và pip trong một bảng đơn giản.

Chức năngchung cưđánh rớt
Cài đặt và quản lý gói
Chuyển đổi phiên bản PythonKhông (thay thế bằng pipenv, pyenv)
Quản lý môi trường ảoKhông (thay thế pipenv, virtualenv, venv)

Conda cũng là một hệ thống quản lý môi trường, vì vậy bạn có thể xây dựng môi trường ảo, thay đổi phiên bản Python của mình thành 3.7 và chuyển sang 2.7.

Với pip, bạn sẽ cài đặt và sử dụng các gói như pyenv (kiểm soát phiên bản) và venv (quản lý môi trường ảo).

Gần đây, pipenv đã ra mắt và có vẻ như nó có chức năng gần như thay thế conda.

cài đặt conda so với cài đặt pip

Mặc dù cài đặt conda và cài đặt pip có các lệnh tương tự nhau, nhưng cách chúng cài đặt các gói có vẻ khá khác nhau. Trên trang anaconda.com đã có bảng so sánh rất dễ hiểu nên mình sẽ trích dẫn (tiếng Nhật và có chỉnh sửa để các bạn dễ hiểu hơn).

cài đặt condacài đặt pip
định dạng góinhị phânbánh xe hoặc nguồn
biên dịch不要必要
Loại góiCác ngôn ngữ khác cũng có thểtrăn chỉ
Quản lý môi trường ảo, quản lý phiên bảnCó thểKhông (thay thế bằng virtualenv, venv)
kiểm tra phụ thuộcあ りな し
Nguồn tải xuống góikho lưu trữ anaconda, đám mây anacondaPyPl

・conda hỗ trợ các ngôn ngữ khác ngoài python

Anaconda/Miniconda là một nền tảng chéo cho phép bạn cài đặt nhiều ngôn ngữ lập trình như Python, R, Ruby, Java, JavaScript, C/C++, FORTRAN và các gói của chúng.

Conda có thể cài đặt các gói phần mềm được viết bằng nhiều ngôn ngữ khác nhau trên nền tảng chéo của nó.

pip chỉ có thể cài đặt các gói Python.

・Việc biên dịch có cần thiết hay không

Hơn 1000 gói có thể được cài đặt bằng lệnh conda được lưu trữ trong một kho lưu trữ chuyên dụng có tên là đám mây Anaconda.

Các gói này là các tệp nhị phân được biên dịch trước, vì vậy bạn có thể tải xuống và cài đặt chúng mà không cần trình biên dịch.

Các tệp bạn cài đặt bằng pip bao gồm các tệp nguồn, vì vậy bạn sẽ cần biên dịch chúng ở phía máy khách.

Điều này có thể gây ra các vấn đề tùy thuộc vào môi trường và được coi là một trong những nguyên nhân gây ra nhiều trở ngại trong việc xây dựng môi trường.Có lẽ.Nó có thể yêu cầu phụ thuộc bên ngoài.

・Có hoặc không có kiểm tra phụ thuộc

Có vẻ như pip không đáp ứng tất cả các phụ thuộc cùng một lúc mỗi khi gói được cài đặt.Trong trường hợp này, xung đột sẽ xảy ra nếu các gói đã cài đặt có các phiên bản khác nhau của các gói mà chúng phụ thuộc vào.

Conda hỗ trợ điều này bằng cách cung cấp một bộ giải SAT thu thập siêu dữ liệu từ tất cả các gói để tìm ra các phần phụ thuộc.Trong quá trình cài đặt, nó nhanh chóng nắm bắt được các quan hệ phụ thuộc phức tạp giữa các gói cũng như cập nhật và cài đặt một cách thích hợp.

・Sự khác biệt về tốc độ thực thi

Cũng có thông tin cho rằng các thao tác ma trận với numpy được cài đặt với conda sẽ nhanh hơn.Tùy thuộc vào loại tính toán, sự khác biệt dường như nhiều hơn gấp đôi.

Có nhiều phương pháp triển khai khác nhau cho BLAS (Chương trình con đại số tuyến tính cơ bản), thực sự chịu trách nhiệm cho các hoạt động ma trận được gọi bởi NumPy. Một trong số đó là Intel MKL (Thư viện hạt nhân toán học) do Intel phát triển).Trên thực tế, BLAS được gọi từ NumPy được cài đặt bởi Anaconda là MKL, nhưng khi NumPy được cài đặt với pip, BLAS được gọi là OpenBLAS thường được sử dụng, vì vậy có khả năng sẽ có sự khác biệt về hiệu suất ở đây là.

Sự khác biệt về tốc độ giữa NumPy trong Anaconda và NumPy với pip - Orizuru

BLAS là một thư viện thực hiện toán học ma trận và véc tơ cơ bản. Có nhiều con kiến ​​sống hơn trong thư viện numpy và nó đang trở nên khó hiểu...

"Tốc độ xử lý tính toán thực tế thay đổi bao nhiêu tùy thuộc vào sự khác biệt trong BLAS" và "Làm thế nào để biết BLAS nào được sử dụng trong môi trường của bạn" được tóm tắt chi tiết trên các trang sau.Nếu không phiền, mời bạn tham khảo.

Có vẻ như tốc độ tính toán thay đổi tùy thuộc vào BLAS được sử dụng trong Numpy [Python]

Đó là sự khác biệt giữa conda và pip.

tài liệu tham khảo


Hiểu Conda và Pip
https://conda.io/en/latest/
So sánh tốc độ của NumPy của Anaconda và NumPy của PyPI
Dừng cài đặt Tensorflow bằng pip vì lợi ích hiệu suất!