Làm cách nào để cài đặt gói pip trên toàn cầu thay vì cục bộ?


100

Tôi đang cố gắng cài đặt gói flake8 bằng cách sử dụng pip3 và có vẻ như nó từ chối cài đặt vì đã được cài đặt ở một vị trí cục bộ.

Làm cách nào để buộc nó phải cài đặt trên toàn cầu (cấp hệ thống)?

pip3 install flake8
Requirement already satisfied (use --upgrade to upgrade): flake8 in ./.local/lib/python3.4/site-packages

Xin lưu ý rằng tôi thích một giải pháp chung (hoạt động trên Debian, OS X có thể cả Windows), một giải pháp nên được sử dụng trên mọi nền tảng nên tôi không muốn tự mình chỉ định đích.

Vì một số lý do kỳ lạ, nó hoạt động giống như tôi đã chỉ định --usercái nào trong trường hợp của tôi thì tôi không làm vậy.

Cách duy nhất để tôi có thể cài đặt một gói trên toàn cầu là trước tiên hãy gỡ bỏ nó và cài đặt lại sau đó. Bằng cách nào đó, có vẻ như pip (8.1.1) từ chối cài đặt một gói trên toàn cầu nếu nó tồn tại cục bộ.

Tuyên bố từ chối trách nhiệm: Không có môi trường ảo nào được sử dụng hoặc gây hại trong quá trình thử nghiệm.


3
Bạn đã thử từ người dùng root hoặc sudo chưa?
matino

Bạn đã thử pip install flake8 --upgradechưa?
Mauro Baraldi

Trong trường hợp các vấn đề tương tự liên quan đến việc sử dụng môi trường ảo (venv), hãy sử dụng --system-site-packagestùy chọn để kế thừa các gói được cài đặt toàn cầu vào venv của bạn. Xem stackoverflow.com/a/61326709/4445175
Wlad

Câu trả lời:


140

Tại sao bạn không thử sudovới Hlá cờ? Cái này cần phải dùng mẹo.

sudo -H pip install flake8

Một người bình thường sudo pip install flake8sẽ cố gắng sử dụng thư mục chính của riêng bạn. Nó -Hhướng dẫn nó sử dụng thư mục chính của hệ thống. Thông tin thêm tại https://stackoverflow.com/a/43623102/


99
Hnhư trong Hlobal?
Matt

63
-Hnhư trong hey sudo, hãy ngừng sử dụng thư mục chính của tôi. sử dụng riêng của bạn Hthư mục ome thay stackoverflow.com/a/43623102
nikhilweee

6
Điều này không thực sự cài đặt nó trên toàn cầu, nhưng thay vào đó dường như chỉ lưu trữ nó trong thư mục chính của người dùng 'root'
parsecpython

@nikhilweee Tôi không hiểu điều này khác như thế nào so với pip3 install ipythonkhi virtualenv bị hủy kích hoạt, chúng dường như cài đặt vào cùng một site-packagesthư mục.
iamfrancisyo

@parsecpython đối với tôi, nó thực hiện thủ thuật và cài đặt các gói vào /usr/local/lib/python3.8/dist-packages mà tôi muốn
yota

8

Có lẽ --force-reinstallsẽ hiệu quả, nếu không thì --ignore-installednên làm thủ thuật.


5

Bạn đang sử dụng virtualenv? Nếu có, hãy hủy kích hoạt virtualenv. Nếu bạn không sử dụng, nó đã được cài đặt rộng rãi (cấp hệ thống). Cố gắng nâng cấp gói.

pip install flake8 --upgrade

2
Không hoàn toàn đúng.
GMaster

2

Tôi thực sự không thấy vấn đề của bạn. Toàn cầu là bất kỳ gói nào nằm trong thư mục gói trang web của đường dẫn python3 của bạn.

Nếu bạn chỉ muốn sử dụng nó cục bộ thì bạn phải cấu hình virtualenv và cài đặt lại các gói với một môi trường ảo đã được kích hoạt.


Khi tạo một venv, bạn có thể sử dụng --system-site-packages .venv/devđể kế thừa các gói toàn cầu, do đó bạn không phải cài đặt lại chúng trong mỗi venv. Điều này có ý nghĩa đối với các gói mà người ta có thể muốn sử dụng trong bất kỳ dự án nào, chẳng hạn như black, flake8, pytest. Ví dụ:python -m venv --system-site-packages .venv/dev
Wlad

-1

Việc cài đặt pip xảy ra ở đâu trong python?

Tôi sẽ đưa ra một giải pháp cửa sổ mà tôi đang gặp phải và mất một thời gian để giải quyết.

Trước hết, trong windows (tôi sẽ lấy Windows làm hệ điều hành ở đây), nếu bạn làm vậy pip install <package_name>, nó sẽ được cài đặt mặc định trên toàn cầu ( nếu bạn chưa kích hoạt môi trường ảo ). Khi bạn kích hoạt một môi trường ảo và bạn đang ở bên trong nó, tất cả các cài đặt pip sẽ nằm bên trong môi trường ảo đó.


pip đang cài đặt các gói đã nói nhưng không phải tôi không thể sử dụng chúng?

Đối với pip này có thể đưa ra cảnh báo rằng các tệp thực thi của pip như pip3.exe, pip.exekhông có trên biến đường dẫn của bạn. Đối với điều này, bạn có thể thêm đường dẫn này (thường là - C:\Users\<your_username>\AppData\Roaming\Programs\Python\) vào các biến môi trường của bạn . Sau khi khởi động lại của bạn cmdvà bây giờ hãy thử sử dụng gói python đã cài đặt của bạn. Nó sẽ hoạt động ngay bây giờ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.