Thực sự không có một "câu trả lời" nào cho câu hỏi này, nhưng chắc chắn có một số khái niệm hữu ích có thể giúp bạn đi đến quyết định.
Câu hỏi đầu tiên cần được trả lời trong trường hợp sử dụng của bạn là "Tôi có muốn sử dụng Python hệ thống không?" Nếu bạn muốn sử dụng Python được phân phối với hệ điều hành của mình, thì việc sử dụng phương pháp apt-get install có thể tốt. Tuy nhiên, tùy thuộc vào phương pháp phân phối hệ điều hành, bạn vẫn phải hỏi thêm một số câu hỏi, chẳng hạn như "Tôi có muốn cài đặt nhiều phiên bản của gói này không?" Nếu câu trả lời là có, thì có lẽ không phải là một ý kiến hay khi sử dụng một cái gì đó như apt. Dpkg khá nhiều sẽ chỉ xóa một kho lưu trữ ở gốc của hệ thống tệp, do đó, người bảo trì gói có thể đảm bảo gói cài đặt an toàn với rất ít giả định. Trong trường hợp của hầu hết các gói debian, tôi sẽ cho rằng (ai đó có thể thoải mái sửa cho tôi ở đây) rằng họ chỉ cần gỡ bỏ và cung cấp một gói cấp cao nhất.
Ví dụ: giả sử gói là "virtualenv", bạn sẽ kết thúc bằng /usr/lib/python2.x/site-packages/virtualenv
. Nếu bạn cài đặt nó với easy_install
bạn, bạn sẽ nhận được một cái gì đó giống như /usr/lib/python2.x/site-packages/virtualenv.egg-link
vậy có thể trỏ đến /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.egg
đó có thể là một thư mục hoặc trứng nén. Pip làm điều gì đó tương tự mặc dù nó không sử dụng trứng và thay vào đó sẽ đặt gói cấp cao nhất trực tiếp trong lib
thư mục.
Tôi có thể đi đúng hướng, nhưng vấn đề là mỗi phương pháp có tính đến các nhu cầu khác nhau. Đây là lý do tại sao các công cụ như virtualenv rất hữu ích vì chúng cho phép bạn hộp cát các thư viện Python của mình để bạn có thể có bất kỳ sự kết hợp nào bạn cần giữa các thư viện và phiên bản.
Setuptools cũng cho phép cài đặt các gói dưới dạng đa vũ trụ, nghĩa là không có một mo nào dule_name.egg-link
được tạo ra. Để nhập các gói đó, bạn cần sử dụng pkg_resources và __import__
hàm.
Quay trở lại câu hỏi ban đầu của bạn, nếu bạn hài lòng với hệ thống python và dự định sử dụng virtualenv và pip để xây dựng môi trường cho các ứng dụng khác nhau, thì việc cài đặt virtualenv và / hoặc pip ở cấp hệ thống bằng apt-get có vẻ hoàn toàn phù hợp. Tuy nhiên, một lời cảnh báo là nếu bạn có kế hoạch nâng cấp bản phân phối Python của mình, điều đó có thể có tác động lan truyền qua các virtualenv của bạn nếu bạn liên kết lại với các gói trang web hệ thống của mình.
Tôi cũng nên đề cập rằng không có tùy chọn nào trong số này vốn là tốt hơn các tùy chọn khác. Họ chỉ đơn giản là có những cách tiếp cận khác nhau. Sử dụng phiên bản hệ thống là một cách tuyệt vời để cài đặt các ứng dụng Python, nhưng nó có thể là một cách rất khó để phát triển với Python. Dễ dàng cài đặt và thiết lập công cụ rất thuận tiện trong một thế giới không có virtualenv, nhưng nếu bạn cần sử dụng các phiên bản khác nhau của cùng một thư viện, thì nó cũng trở nên khá khó sử dụng. Pip và virtualenv thực sự hoạt động giống như một máy ảo hơn. Thay vì quan tâm đến việc cài đặt mọi thứ cạnh nhau, bạn chỉ cần tạo ra một môi trường hoàn toàn mới. Nhược điểm ở đây là hơn 30 virtualenvs sau này, bạn có thể đã sử dụng khá nhiều không gian đĩa và làm lộn xộn hệ thống tệp của mình.
Như bạn có thể thấy, với nhiều tùy chọn, rất khó để nói phương pháp nào sẽ sử dụng, nhưng với một chút điều tra về các trường hợp sử dụng của bạn, bạn sẽ có thể tìm ra phương pháp hiệu quả.
ez_setup.py
tìm kiếm một "phiên bản nhẹ" của việc nhận pip. Tôi muốn làm như vậy nhưng sợ rằng nó sẽ phá vỡ trong tương lai gần và tôi sẽ gặp khó khăn ở đây một lần nữa (như tôi luôn luôn làm)