Bỏ qua lời nhắc xác nhận để gỡ cài đặt pip


89

Tôi đang cố gỡ cài đặt tất cả các gói django trong môi trường superuser của mình để đảm bảo rằng tất cả các phụ thuộc ứng dụng web của tôi đều được cài đặt vào virtualenv của tôi.

sudo su
sudo pip freeze | grep -E '^django-' | xargs pip -q uninstall

Nhưng pip muốn xác nhận mọi gói gỡ cài đặt và dường như không có -ytùy chọn cho pip. Có cách nào tốt hơn để gỡ cài đặt một loạt mô-đun python không? Có phải là rm -rf .../site-packages/một cách thích hợp để đi? Có giải pháp thay thế easy_install không?

Ngoài ra, sẽ tốt hơn nếu buộc pip cài đặt tất cả các phụ thuộc vào virtualenv thay vì dựa vào các mô-đun python hệ thống để đáp ứng các phụ thuộc đó, ví dụ: pip --upgrade installnhưng buộc phải cài đặt các phiên bản cũ tương đương để ghi đè bất kỳ mô-đun hệ thống nào. Tôi đã thử kích hoạt virtualenv của mình và sau đó pip install --upgrade -r requirements.txt, điều đó dường như cài đặt các phụ thuộc, ngay cả những phụ thuộc hiện có trong đường dẫn hệ thống của tôi, nhưng tôi không thể chắc chắn liệu đó có phải là do các mô-đun hệ thống của tôi đã cũ hay không. Và man pipdường như không đảm bảo hành vi này (tức là cài đặt cùng một phiên bản của gói đã tồn tại trong gói trang hệ thống).

Câu trả lời:


199

bắt đầu với phiên bản pip 7.1.2 bạn có thể chạy pip uninstall -y <python package(s)>

pip uninstall -y package1 package2 package3

hoặc từ tệp

pip uninstall -y -r requirements.txt

65

Pip KHÔNG bao gồm tùy chọn --yes (kể từ phiên bản pip 1.3.1).

WORKAROUND: có cho nó!

$ sudo ls  # enter pw so not prompted again
$ /usr/bin/yes | sudo pip uninstall pymongo

2
à, thật đơn giản. cảm ơn vì lời nhắc chương trình unix. yesrất hữu ích.
hobs

nhưng tôi không nghĩ điều này sẽ hoạt động (quá nhút nhát để thử nó trên hệ thống của tôi ngày hôm nay). yes | sudo pip freeze | grep -E '^django-' | xargs pip -q uninstallbởi vì các yeses sẽ bị ngốn bởi pip freezekhông phải xargsđối số / lệnh pip uninstall,.
hobs

3
pip freeze > all_to_uninstall.txt yes | pip uninstall -r all_to_uninstall.txt
Nick

8

Nếu bạn muốn gỡ cài đặt mọi gói requirements.txt,

pip uninstall -y -r requirements.txt

1

Ngoài ra, sẽ tốt hơn nếu buộc pip cài đặt tất cả các phụ thuộc vào virtualenv hơn là dựa vào các mô-đun python hệ thống để đáp ứng các phụ thuộc đó,

Đúng. Đừng làm phiền quá nhiều với các gói cài đặt sẵn của hệ thống. Nhiều gói hệ thống, đặc biệt là trong OS X (thậm chí là debian và các loại có nguồn gốc) phụ thuộc quá nhiều vào chúng.

pip - nâng cấp cài đặt, nhưng buộc cài đặt ngay cả các phiên bản cũ tương đương để ghi đè bất kỳ mô-đun hệ thống nào.

Sẽ không có vấn đề gì lớn nếu có thêm một vài gói được cài đặt trong venv đã có sẵn trong gói hệ thống, đặc biệt nếu chúng thuộc phiên bản khác. Đó là toàn bộ điểm của virtualenv.

Tôi đã thử kích hoạt virtualenv của mình và sau đó pip install --upgrade -r architects.txt và điều đó dường như cài đặt các phần phụ thuộc, ngay cả những phần tử hiện có trong đường dẫn hệ thống của tôi, nhưng tôi không thể chắc chắn liệu đó có phải là do các mô-đun hệ thống của tôi đã cũ hay không. Và man pip dường như không đảm bảo hành vi này (tức là cài đặt cùng một phiên bản của gói đã tồn tại trong gói trang hệ thống).

Không, nó không cài đặt các gói đã có trong cài đặt chính trừ khi bạn đã sử dụng --no-site-packagescờ để tạo nó hoặc các phiên bản bắt buộc và hiện tại khác nhau ..


1

Lakshman Prasad đã đúng, pip --upgradevà / hoặc virtualenv --no-site-packageslà con đường để đi. Việc gỡ cài đặt các mô-đun python trên toàn hệ thống là không tốt.

Các --upgradetùy chọn để pip không cài đặt các module cần thiết trong env ảo, ngay cả khi họ đã tồn tại trong môi trường hệ thống, và thậm chí nếu phiên bản yêu cầu hoặc phiên bản mới nhất hiện có cũng giống như các phiên bản hệ điều.

pip --upgrade install

Và, sử dụng tùy chọn --no-site-pack khi tạo môi trường ảo đảm bảo rằng các phần phụ thuộc bị thiếu có thể không bị che bởi sự hiện diện của các mô-đun bị thiếu trong đường dẫn hệ thống. Điều này giúp giải quyết các vấn đề trong quá trình di chuyển mô-đun từ gói này sang gói khác, ví dụ: pinax.apps.groups -> django-groups, đặc biệt là khi sự cố xảy ra với câu lệnh load templatetags trong django tìm kiếm tất cả các mô-đun có sẵn cho thư mục templatetags và định nghĩa thẻ bên trong.


0
pip install -U xxxx 

có thể bỏ qua xác nhận


2
Hãy cố gắng viết đầy đủ một câu có ý nghĩa và chỉnh sửa các phần mã.
YesThatIsMyName
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.