2013-03-05 34 views
286

Tôi có thể cập nhật các gói được quản lý bằng pip, nhưng làm cách nào để tự cập nhật pip? Theo số pip --version, tôi hiện đã cài đặt pip 1.1 trong virtualenv của mình và tôi muốn cập nhật lên phiên bản mới nhất.Làm cách nào để tự cập nhật pip từ bên trong môi trường ảo của tôi?

Lệnh cho điều đó là gì? Tôi có cần phải sử dụng phân phối hoặc là có một bản địa pip hoặc virtualenv lệnh? Tôi đã thử pip updatepip update pip không thành công.

+18

'pip install --uplrade pip'? Nó chỉ là một gói PyPI khác. – Cairnarvon

+0

Lệnh đó cho tôi "/ Người dùng/zak/MyProject/venv/bin/pip cài đặt: lỗi: không có tùy chọn như vậy: --update" – zakdances

+3

Đó là '--upgrade', không phải' --update', xin lỗi. Tôi đã chỉnh sửa bài đăng của tôi ngay lập tức, nhưng bạn phải nhìn thấy nó vào đúng thời điểm. – Cairnarvon

Trả lời

533

pip chỉ là một PyPI package giống như bất kỳ hình thức nào khác; bạn có thể sử dụng nó để nâng cấp bản thân giống như cách bạn sẽ nâng cấp bất kỳ gói:

pip install --upgrade pip 

Trên Windows các recommended command là:

python -m pip install --upgrade pip 
+31

Trong Windows, tôi gặp vấn đề về quyền truy cập để nâng cấp pip bằng pip. Thay vào đó tôi đã sử dụng easy_install để nâng cấp: 'easy_install pip' – bsa

+6

Khi tôi thực hiện pip này có vẻ nâng cấp (1.1 -> 1.4), nhưng khi tôi thực hiện" pip --version "nó vẫn hiển thị phiên bản cũ 1.1. Đã cố tắt và kích hoạt lại virtualenv nhưng vẫn hiển thị phiên bản cũ. – Zitrax

+26

Trên Windows có lẽ là tốt hơn để sử dụng lệnh như thế: 'python -m pip install --upgrade pip' để tránh chạy pip.exe từ thư mục scripts. – bialix

32

Phương pháp an toàn hơn là để run pip though a python module:

python -m pip install -U pip 

Trên các cửa sổ có vẻ như là một vấn đề với các tập tin nhị phân cố gắng thay thế bản thân, phương pháp này hoạt động xung quanh giới hạn đó.

+5

Bây giờ, bản thân pip này đề xuất, nếu nó phát hiện phiên bản mới hơn của chính nó. – tephyr

+1

Tôi tin rằng lý do này là an toàn hơn là vì trên một số hệ điều hành (Windows), chỉ cần chạy pip trực tiếp có thể tạo ra một khóa tập tin trên thực thi, mà sẽ ngăn chặn việc cập nhật nó. Bằng cách gọi Python và yêu cầu nó tải trực tiếp mô-đun, bạn tránh truy cập vào tệp thực thi. – jpmc26

0

Trong trường hợp của tôi làm việc này từ dòng lệnh Terminal trong Debian ổn định

python3 -m pip install --upgrade pip 
5

Trong trường hợp của tôi phiên bản pip của tôi bị hỏng nên cập nhật bởi chính nó sẽ không hoạt động.

Fix:

(inside virtualenv):easy_install -U pip 
+0

Đó cũng là trường hợp của tôi. Tôi đã thử tất cả các phương pháp khác nhưng chỉ có một điều này giúp tôi. Cảm ơn ! – levif

+0

Tương tự ở đây, đó là cách duy nhất phù hợp với tôi trên Debian. Sử dụng python hoặc pip để nâng cấp pip từ bên trong virtualenv sẽ thất bại vì nó từ chối gỡ bỏ pip hiện có đang nằm bên ngoài venv. – user3748764

1

Tôi đã thử tất cả các giải pháp nêu trên dưới Debian Jessie. Chúng không hoạt động vì nó chỉ biên dịch phiên bản mới nhất của trình quản lý gói debian là 1.5.6, tương đương với phiên bản 6.0.x. Một số gói sử dụng pip như điều kiện tiên quyết sẽ không hoạt động như một kết quả, chẳng hạn như spaCy (cần tùy chọn --no-cache-dir để hoạt động chính xác).

Vì vậy, cách thực tế tốt nhất để giải quyết những vấn đề này là để chạy get-pip.py tải về sử dụng wget, từ trang web hoặc sử dụng curl như sau:

wget https://bootstrap.pypa.io/get-pip.py -O ./get-pip.py 
python ./get-pip.py 
python3 ./get-pip.py 

này sẽ cài đặt các phiên bản hiện tại mà tại thời điểm viết giải pháp này là 9.0.1 là cách vượt quá những gì Debian cung cấp.

$ pip --version 
pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python2.7/dist-packages (python 2.7) 
$ pip3 --version 
pip 9.0.1 from /home/myhomedir/myvirtualenvdir/lib/python3.4/site-packages (python 3.4) 
0

Để làm việc này cho tôi, tôi phải đi sâu vào thư mục Python bằng dấu nhắc lệnh Python (trên WIN10 từ VS CODE). Trong trường hợp của tôi, nó nằm trong thư mục "AppData \ Local \ Programs \ Python \ python35-32" của tôi. Từ đó, tôi đã chạy lệnh ...

python -m pip install --upgrade pip 

Điều này có hiệu quả và tôi rất tốt.

Các vấn đề liên quan