Có một số đối số:
Sử dụng Kho / PPA vì chúng sẽ giúp bạn luôn ổn định và cập nhật với các bản sửa lỗi bảo mật.
Điều này chủ yếu là đúng. Nếu, ví dụ, nếu bạn cài đặt python-django
như tôi có, bạn sẽ nhận được các bản cập nhật bảo mật. Điều này là tốt bởi vì bạn chỉ phải theo kịp apt nhưng bạn vẫn phải kiểm tra mọi thứ trước khi bạn đẩy các bản cập nhật (mặc dù việc kiểm tra sẽ ổn mỗi lần).
Bạn có thể lập luận rằng nếu bạn đã sử dụng pip
, bạn có thể không bao giờ kiểm tra cập nhật.
Sử dụng pip
để bạn có thể sử dụng các phiên bản "ổn định" thích hợp.
Không có nghi ngờ gì về điều đó: Các repos tụt hậu so với thế giới thực. Django là 2.0 nhưng bản repos cho phiên bản LTS của Ubuntu (rất nhiều người gắn bó với máy chủ) bạn chỉ nhận được 1.8 trên Ubuntu 16.4 lts với Python 2 nhưng vẫn nhận được cập nhật bảo mật trên nó.
pip
cung cấp cho bạn mới nhất mọi lúc. Bạn chỉ cần cập nhật chúng cho mình.
Nâng cấp cài đặt Python được sử dụng lại có thể là một cơn ác mộng
Khi bạn nâng cấp Ubuntu lên phiên bản tiếp theo, nó sẽ nâng cấp rất nhiều gói. Rất nhiều thứ thay đổi. Tôi biết trong Django, điều này có nghĩa là bạn phải cẩn thận để đề phòng sự không tương thích về mã, sự phản đối ... Nhưng điều tương tự cũng áp dụng cho tất cả các mã Python khác.
Điều tương tự cũng đúng pip
nhưng với pip
bạn có thể làm một việc tại một thời điểm. Bạn biết những gì gây ra vấn đề để bạn biết nơi để tìm cách khắc phục.
pip
+ virtualenv
cho phép bạn giữ mọi thứ riêng biệt
virtualenv
cho phép bạn có các môi trường Python nhỏ, di động. Điều này cho phép bạn có một số môi trường Python khác nhau chạy cùng nhau trên cùng một máy.
Lợi ích rõ ràng dường như là để bảo trì vì bạn có thể quản lý môi trường giống như cách bạn quản lý mã. Ngay cả lưu trữ môi trường trong VCS nữa ... nhưng bạn nên nhớ rằng có mười hai virtualenv
s khác nhau có nghĩa là mười hai môi trường bạn cần kiểm tra và cập nhật.
Chỉnh sửa: Sau một loạt các nâng cấp khủng khiếp trên máy chủ để chuyển nó từ Lucid sang Chính xác, tôi đã chuyển từ một hỗn hợp Apt + pip (nr 1 và 2) sang tình huống pip + virtualenv (nr. 4) thuần túy. Thay vì có một virtualenv trên mỗi trang web, tôi đã có một chia sẻ giữa một chục trang web. Điều này đang làm việc cho bây giờ.
Tôi cũng đã phải viết một đoạn script nhỏ để kiểm tra trạng thái của các gói được cài đặt với pip. Nếu có bản cập nhật, tôi phải áp dụng chúng theo cách thủ công (điều này tốt vì tôi đã kiểm tra chúng cục bộ, trong một virtualenv cục bộ). Đây là tất cả vẫn còn một chút đau đớn hơn so với ban đầu nhưng tốt hơn nhiều về lâu dài.