Và để trả lời bình tĩnh hơn:
- Bạn thực sự luôn phải làm thế
sudo apt-get install ...
, đó chỉ là cách công cụ được thiết kế để hoạt động.
- Sử dụng
sudo [-H]
với pip install
cả hai đều có thể và tùy chọn, tùy thuộc vào chính xác những gì bạn muốn làm (và do đó, "tranh cãi").
Một trong những phương châm của Python là "Nên có một-- và tốt nhất là chỉ có một cách rõ ràng để làm điều đó." Và giống như hầu hết các phương châm, nó bị phá vỡ với niềm vui thích mỉa mai dường như ở mọi cơ hội có thể. (Đó là lý do tại sao phương châm tồn tại, tôi đoán.) Thật không may, theo ý kiến khiêm tốn nhất của tôi, các hệ sinh thái Python gồm nhiều mâu thuẫn "cứng & nhanh" quy tắc, không bao giờ bị phá vỡ ... trừ khi "yada yada yada" (ma quỷ, chi tiết, v.v.) Trong hầu hết các trường hợp, điều này là do sự phát triển lịch sử của ngôn ngữ & công cụ (và ai muốn / cần một bài học lịch sử khi họ chỉ muốn tiếp tục với công việc của họ) - nhưng cũng có thể là do sự khác biệt trong Mac / Win / * Nền tảng Nix (ví dụ: Unix / Linux có tâm lý tương tự,hãy thực hiện tất cả những "người thực hành bị hỏng" và "sai lầm vốn có" - những người sùng bái hàng hóa với một nhúm muối khổng lồ. Một số thực sự có nghĩa là tốt. (Những người khác chỉ là, tốt, có nghĩa là.)
Trước hết, thay vì "cài đặt cho mỗi người dùng" cơ bản, hầu như bạn sẽ luôn thích một virtualenv, bởi vì thực sự, đó có lẽ là thứ bạn sẽ cần. Vì vậy, bạn cũng có thể bắt đầu với nó bây giờ. Làm thế nào điều này được thực hiện, chính xác, "phụ thuộc" (xem phương châm Python, ở trên). Nếu bạn đang sử dụng Conda (chủ yếu cho Mac & Windows), nó sẽ được thiết lập bằng Conda . Nếu sử dụng Python "thuần" [sic] , nó phụ thuộc vào phiên bản nào & bạn sử dụng python nào, nhưng virtualenvwrapper khá tiện dụng.
Thứ hai, giống như một ví dụ đối lập với quy tắc "không bao giờ sudo", bạn có thể thích sudo -H pip install -U numpy
, điều này hoàn toàn tốt, thậm chí có lợi, ở chỗ nó có thể cho phép một người tránh tải xuống / cài đặt lại / duy trì các thư viện lớn, nơi bạn chỉ muốn / cần một phiên bản, vào mỗi virtualenv riêng biệt. Các khung lớn, phổ biến như scikit-learn, NumPy, matplotlib, SciPy, gấu trúc, v.v., có thể được cài đặt một lần & thực hiện và sử dụng lại trên các môi trường . Hơn nữa, quản trị viên hệ thống thân thiện tại địa phương của bạn có thể có thể cài đặt những cài đặt này cho mọi người dùng trên hệ thống - và rõ ràng họ cũng sẽ thực hiện việc này thông qua sudo
, ví dụ, đối với các cài đặt phức tạp hơn, chẳng hạn như TensorFlow.
Và cuối cùng, nếu bạn đang cài đặt một thư viện bên thứ 3 ngẫu nhiên nào đó tương tự (API Twitter, munging văn bản, định dạng mã, v.v.), thì tôi hoàn toàn đồng ý - không cài đặt nó dưới dạng root thông qua sudo. Chắc chắn, cài đặt nó như người dùng hiện tại của bạn. Nhưng chỉ cần nhớ, tài khoản người dùng của bạn có tất cả những thứ thực sự quan trọng của bạn .
sudo pip install
vốn đã sai. - từ stackoverflow.com/a/33004920/95735