Tôi có thể buộc pip cài đặt lại phiên bản hiện tại không?


507

Tôi đã gặp các tình huống trong đó một phiên bản hiện tại của gói dường như không hoạt động và yêu cầu cài đặt lại. Nhưng pip install -Usẽ không chạm vào một gói đã được cập nhật. Tôi thấy cách buộc cài đặt lại bằng cách gỡ cài đặt đầu tiên (với pip uninstall) và sau đó cài đặt, nhưng có cách nào chỉ đơn giản là buộc "cập nhật" lên phiên bản hiện tại chỉ trong một bước không?


cho những ai muốn cài đặt lại pip nó tự (nếu nó ngừng làm việc vì một lý do;)), câu trả lời có thể được tìm thấy trong này SO Q & A
nsof

Câu trả lời:


744
pip install --upgrade --force-reinstall <package>

Khi nâng cấp, hãy cài đặt lại tất cả các gói ngay cả khi chúng đã được cập nhật.

pip install -I <package>
pip install --ignore-installed <package>

Bỏ qua các gói đã cài đặt (thay vào đó cài đặt lại).


1
Bất kỳ cách nào để buộc ghi đè khi sử dụng cờ --target =? Không ai trong số này làm việc cho tôi. Tôi nhận được đường dẫn đích đã tồn tại lỗi.
radtek

@KeeganQuinn bạn có nghĩ đó là ý nghĩa của Karan khi "Nâng cấp" ...? Tôi cho là như vậy. Nhưng làm rõ của bạn chắc chắn giúp tôi.
Hạt đậu đỏ

Điều gì xảy ra nếu tôi muốn thực hiện thay đổi trong zipline được cài đặt trong quá trình pip install pipeline-livevà chỉ cần nhận thay đổi của tôi trong zipline?
gseatussy

Bao gồm cả --upgradekhi --force-reinstallđang được sử dụng không cần thiết kể từ pip 10.0, FYI: github.com/pypa/pip/issues/1139
cjerdonek

1
@mrgloom using cachedChỉ có nghĩa là nó sử dụng các tệp nguồn được lưu trong bộ nhớ cache ở lần cài đặt cuối cùng. Để buộc tải lại, sử dụng --no-cache-dircờ.
lcnittl

181

Bạn có thể muốn có tất cả ba tùy chọn: --upgrade--force-reinstallđảm bảo cài đặt lại, trong khi --no-depstránh cài đặt lại phụ thuộc.

$ sudo pip install --upgrade --no-deps --force-reinstall <packagename>

Nếu không, bạn có thể gặp phải vấn đề là pip bắt đầu biên dịch lại Numpy hoặc các gói lớn khác.


1
Điều này cũng hoạt động cho các cài đặt ngoại tuyến, trong khi câu trả lời bị loại trừ thì không.
orodbhen

4
Đây là một giải pháp tốt hơn cho các gói có số lượng phụ thuộc lớn mà không cần phải cài đặt lại.
Assil Ksiksi

1
sudolà rất quan trọng trong trường hợp của tôi.
mrgloom

1
Tại sao chúng ta cần --upgradekhi chúng ta sử dụng --force-reinstall?
mrgloom

@ FinnÅrupNielsen tại sao nên nâng cấp phiên bản hiện tại? Theo tôi hiểu ở đây, chúng tôi muốn cài đặt lại gói. Nếu <package-name>==<package-version>định dạng được sử dụng thì sao?
mrgloom

33

Nếu bạn muốn cài đặt lại các gói được chỉ định trong tệp tests.txt, mà không cần nâng cấp, vì vậy chỉ cần cài đặt lại các phiên bản cụ thể được chỉ định trong tệp tests.txt:

pip install -r requirements.txt --ignore-installed

29
--force-reinstall

không xuất hiện để buộc cài đặt lại bằng python2.7 với pip-1.5

Tôi đã phải sử dụng

--no-deps --ignore-installed

20
Bạn phải chỉ định --upgradethêm --force-reinstall, hoặc nó sẽ không có hiệu lực.
Keegan Quinn

6

Nếu bạn có tệp văn bản với vô số gói, bạn cần thêm cờ -r

pip install --upgrade --no-deps --force-reinstall -r requirements.txt

5

Trong trường hợp bạn cần buộc cài đặt lại chính pip, bạn có thể làm:

python -m pip install --upgrade --force-reinstall pip

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.