Không có môi trường ảo
pip <command> --user
thay đổi phạm vi của lệnh pip hiện tại để hoạt động trên vị trí cài đặt gói python cục bộ của tài khoản người dùng hiện tại, thay vì vị trí cài đặt gói toàn hệ thống, là mặc định.
- Xem Cài đặt người dùng trong Hướng dẫn sử dụng PIP.
Điều này chỉ thực sự quan trọng trên một máy nhiều người dùng. Mọi thứ được cài đặt vào vị trí hệ thống sẽ hiển thị cho tất cả người dùng, do đó, cài đặt vào vị trí người dùng sẽ tách biệt cài đặt gói đó với những người dùng khác (họ sẽ không nhìn thấy nó và sẽ phải tự cài đặt riêng để sử dụng nó). Do có thể có xung đột phiên bản, nên việc cài đặt gói với các phụ thuộc cần thiết của các gói khác có thể gây ra sự cố, vì vậy tốt nhất không nên đẩy tất cả các gói mà người dùng đã sử dụng đến vị trí cài đặt hệ thống.
- Nếu là máy một người dùng, có rất ít hoặc không có sự khác biệt nào khi cài đặt vào
--user
vị trí. Nó sẽ được cài đặt vào một thư mục khác, có thể cần hoặc không cần thêm vào đường dẫn, tùy thuộc vào gói và cách sử dụng (nhiều gói cài đặt các công cụ dòng lệnh phải trên đường dẫn để chạy từ trình bao) .
- Nếu đó là máy nhiều người dùng,
--user
được ưu tiên sử dụng root / sudo hoặc yêu cầu cài đặt quản trị viên và ảnh hưởng đến môi trường Python của mọi người dùng, trừ trường hợp các gói chung mà quản trị viên muốn cung cấp cho tất cả người dùng theo mặc định.
- Lưu ý: Trên mỗi nhận xét, trên hầu hết các cài đặt Unix / Linux, người ta đã chỉ ra rằng các cài đặt hệ thống nên sử dụng trình quản lý gói chung, chẳng hạn như
apt
, thay vì pip
.
Với môi trường ảo
Các --user
tùy chọn trong một môi trường venv / virtualenv hoạt động sẽ cài đặt vào vị trí người sử dụng python địa phương (giống như không có một môi trường ảo).
Các gói được cài đặt vào môi trường ảo theo mặc định, nhưng nếu bạn sử dụng --user
nó sẽ buộc nó phải cài đặt bên ngoài môi trường ảo, trong thư mục tập lệnh python của người dùng (trong Windows, hiện tại đây là c:\users\<username>\appdata\roaming\python\python37\scripts
dành cho tôi với Python 3.7).
Tuy nhiên, bạn sẽ không thể truy cập cài đặt hệ thống hoặc người dùng từ trong môi trường ảo (ngay cả khi bạn đã sử dụng --user
khi ở trong môi trường ảo).
Nếu bạn cài đặt một môi trường ảo với --system-site-packages
đối số, bạn sẽ có quyền truy cập vào thư mục tập lệnh hệ thống cho python. Tôi tin rằng điều này bao gồm cả thư mục kịch bản python của người dùng, nhưng tôi không chắc chắn. Tuy nhiên, có thể có những hậu quả không lường trước cho việc này và đó không phải là cách dự định sử dụng môi trường ảo.
Vị trí của hệ thống Python và các thư mục cài đặt người dùng cục bộ
Bạn có thể tìm vị trí của thư mục cài đặt người dùng cho python với python -m site --user-base
. Tôi đang tìm thấy thông tin mâu thuẫn trong Q & A, tài liệu và thực sự sử dụng lệnh này trên PC của tôi để biết mặc định là gì, nhưng chúng nằm bên dưới thư mục nhà của người dùng ( ~
phím tắt trong * nix và c:\users\<username>
thường là cho Windows).
Những chi tiết khác
Các --user
tùy chọn không phải là một giá trị cho mỗi lệnh. Ví dụ: pip uninstall
sẽ tìm và gỡ cài đặt các gói ở bất cứ nơi nào chúng được cài đặt (trong thư mục người dùng, thư mục môi trường ảo, v.v.) và --user
tùy chọn không hợp lệ.
Những thứ được cài đặt pip install --user
sẽ được cài đặt ở một vị trí cục bộ sẽ chỉ được nhìn thấy bởi tài khoản người dùng hiện tại và sẽ không yêu cầu quyền truy cập root (trên * nix) hoặc quyền truy cập của quản trị viên (trên Windows).
Các --user
Sửa lựa chọn tất cả pip
các lệnh mà chấp nhận nó để xem / hoạt động trên người sử dụng cài đặt thư mục, vì vậy nếu bạn sử dụng pip list --user
nó sẽ chỉ cho bạn thấy các gói cài đặt với pip install --user
.
import site; print site.USER_SITE
in vị trí cài đặt. Đối với tôi, tôi đã nhận được/${HOME}/.local/lib/python${PY_MAJOR}.${PY_MINOR}/site-packages
.