Làm cách nào để cập nhật chính pip từ bên trong môi trường ảo của tôi?


523

Tôi có thể cập nhật các gói được quản lý bởi pip, nhưng làm cách nào để cập nhật chính pip? Theo pip --version, hiện tại tôi đã 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ệnh nào cho điều đó? Tôi có cần sử dụng phân phối hoặc có lệnh pip hoặc virtualenv riêng không? Tôi đã thử pip updatepip update pipkhông thành công.


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

1
Lệnh đó mang lại cho tôi "/ Users / zak / MyProject / venv / bin / pip install: error: không có tùy chọn như vậy: --update"
zakdances

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

2
@Cairnarvon là lệnh khác nhau cho pip3? Tôi đang thử pip3 nhưng nó chỉ nói với tôi rằng nó không thể tìm thấy nó và sau đó tiếp tục phàn nàn rằng nó không cập nhật ... khi nó thậm chí không cho phép tôi cập nhật / nâng cấp nó!
Charlie Parker

Câu trả lời:


929

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

pip install --upgrade pip

Trên Windows, lệnh được đề xuất là:

python -m pip install --upgrade pip

53
Trong Windows, tôi gặp vấn đề về quyền khi cố 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

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

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

@Zitrax bạn đã giải quyết vấn đề này? Tôi đang đối mặt với cùng một vấn đề.
Mohammad ali baghershemirani

@Mohammadalibaghershemirani xin lỗi đây là một thời gian trước đây - không thể nhớ.
Zitrax

58

Phương pháp an toàn hơn là chạy pip mặc dù mô-đun python :

python -m pip install -U pip

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


9
Đây là những gì bản thân pip khuyến nghị, nếu nó phát hiện một phiên bản mới hơn của chính nó.
Tephyr

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

Bạn phải chạy dấu nhắc lệnh trong chế độ quản trị viên để làm việc này. Tôi đã thử một số đề xuất khác và không có gì hoạt động cho đến khi tôi khởi động lại cửa sổ nhắc lệnh trong chế độ quản trị viên, sau đó lệnh này hoạt động hoàn hảo.
DaveN59

42

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

Sửa chữa:

(inside virtualenv):easy_install -U pip

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

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ừ trong virtualenv sẽ thất bại vì nó từ chối gỡ cài đặt pip hiện có bên ngoài venv.
dùng3748764

Chạy này cho tôi thấy rất nhiều thứ bao gồm cả những thứ Download error on https://pypi.python.org/simple/pip/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found!không được hiển thị khi chạy - nâng cấp. Và đó có thể là lý do tại sao việc cài đặt bất kỳ gói pip nào bị lỗi và tại sao việc nâng cấp pip qua pip cũng bị lỗi, SSL dường như bị hỏng.
Vadorequest

9

Tôi đã thử tất cả các giải pháp được đề cập ở trên trong Debian Jessie. Chúng không hoạt động, bởi vì nó chỉ lấy phiên bản mới nhất được biên dịch bởi 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 làm điều kiện tiên quyết sẽ không hoạt động như 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 tốt nhất thực tế để giải quyết những vấn đề này là chạy get-pip.py được tải xuống bằ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

Điều này sẽ cài đặt 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, vượt xa 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)

2
hữu ích khi pip install --upgrade pipthất bại
Aneuway

Nếu tôi có thể nâng cao câu trả lời này một vài lần tôi sẽ làm. Điều này chỉ giải quyết một vấn đề trong đó pip 9.x không thành công với lỗi SSL bằng cách cập nhật lên pip 10.x. Xem stackoverflow.com/questions/25981703/ Mạnh
Keith John Hutchison

Chà, nếu bạn đã nâng cấp nó ngay cả khi tôi sẽ hạnh phúc. Câu trả lời của tôi thường được tìm thấy sau một hoặc hai giờ săn bắn và nhiều năm kinh nghiệm. Không thể nói tương tự cho câu hỏi của tôi? Mọi người có thể thực sự có ý nghĩa! :)
Eamonn Kenny

4

Nâng cấp pip bằng ' cài đặt pip - nâng cấp pip ' không phải lúc nào cũng hoạt động do sự cố chứng chỉ đáng sợ: Đã xảy ra sự cố khi xác nhận chứng chỉ ssl: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] phiên bản giao thức cảnh báo tlsv1

Tôi thích sử dụng lệnh một dòng cho envs ảo:

curl https://bootstrap.pypa.io/get-pip.py | python -

Hoặc nếu bạn muốn cài đặt nó, bạn sẽ cần

curl https://bootstrap.pypa.io/get-pip.py | sudo python -

bạn có thể cho curl một -s cờ nếu bạn muốn im lặng đầu ra khi chạy trong một kịch bản tự động hóa.


1

Trong trường hợp của tôi, nó hoạt động từ dòng lệnh đầu cuối trong Debian Stable

python3 -m pip install --upgrade pip

1

Để làm việc này với tôi, tôi phải truy 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 đã làm việc và tôi tốt để đi.


1

Mở Command Prompt với quyền quản trị viên và lặp lại lệnh:

python -m pip install --upgrade pip

4
Đây không giống như một số câu trả lời hiện có sao?
hkchengrex

Đó là nhưng, tôi đã gặp sự cố và nó đã được giải quyết khi tôi chạy CMD với Đặc quyền quản trị viên.
MRamzan

1

Pip phiên bản 10 có vấn đề. Nó sẽ biểu hiện như lỗi:

ubuntu@mymachine-:~/mydir$ sudo pip install --upgrade pip
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name main

Giải pháp là ở trong venv bạn muốn nâng cấp và sau đó chạy:

sudo myvenv/bin/pip install --upgrade pip

thay vì chỉ

sudo pip install --upgrade pip

1

Trong trường hợp bạn đang sử dụng venv, bất kỳ cập nhật nào cho việc cài đặt pip sẽ dẫn đến việc nâng cấp hệ thống pip thay vì pip venv. Bạn cũng cần nâng cấp các gói bootstrapping pip.

  python3 -m pip install --upgrade pip setuptools wheel

có một số vấn đề về người đưa thư python hoặc pepa. Thật không may, tất cả các bên đã đẩy lùi trách nhiệm là not my motorollervấn đề
dre-hh

0

Tôi đã cài đặt Python trong C: \ Python \ Python36 vì vậy tôi đã đến dấu nhắc lệnh của Windows và gõ "cd C: \ Python \ Python36 để vào đúng thư mục. Sau đó, nhập" python -m install --upTHER pip " tốt


0

Trên lap-top của tôi với Windows 7, cách cài đặt đúng phiên bản pip mới nhất là:

python.exe -m pip install --upgrade pip

0

Chương trình Python một dòng
Cách tốt nhất tôi đã tìm thấy là viết chương trình một dòng tải xuống và chạy tập lệnh get-pip chính thức. Xem dưới đây cho mã.

Các tài liệu chính thức khuyên bạn nên sử dụng curl để tải xuống tập lệnh get-pip, nhưng vì tôi làm việc trên windows và không cài đặt curl nên tôi thích sử dụng python để tải xuống và chạy tập lệnh.

Đây là chương trình dòng đơn có thể chạy qua dòng lệnh bằng Python 3:

python -c "import urllib.request; exec(urllib.request.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Dòng này nhận được tập lệnh "get-pip.py" chính thức theo ghi chú cài đặt và thực thi tập lệnh bằng lệnh "exec".

Đối với Python2, bạn sẽ thay thế "urllib.request" bằng "urllib2":

python -c "import urllib2; exec(urllib2.urlopen('https://bootstrap.pypa.io/get-pip.py').read())"

Các biện pháp phòng ngừa
Điều đáng lưu ý là việc chạy bất kỳ tập lệnh python nào là nguy hiểm. Vì lý do này, các hướng dẫn chính thức khuyên bạn nên tải xuống tập lệnh và kiểm tra tập lệnh trước khi chạy.

Điều đó nói rằng, nhiều người không thực sự kiểm tra mã và chỉ chạy nó. Chương trình một dòng này làm cho điều đó dễ dàng hơn.


0

Tôi đã có một vấn đề tương tự trên một quả mâm xôi pi.

Vấn đề là http yêu cầu SSL và vì vậy tôi cần buộc nó sử dụng https để giải quyết yêu cầu này.

sudo pip install --upgrade pip --index-url=https://pypi.python.org/simple

hoặc là

sudo pip-3.2 --upgrade pip --index-url=https://pypi.python.org/simple/

0

Tôi đã ở trong một tình huống tương tự và muốn cập nhật gói urllib3. Những gì làm việc cho tôi là:

pip3 install --upgrade --force-reinstall --ignore-installed urllib3==1.25.3

0

Có điều gì đó không ổn với các cửa sổ với thiết lập Pycharm để cài đặt / nâng cấp pip. Tôi hy vọng lệnh này sẽ làm việc.

easy_install -U pip


-2

Rất đơn giản. Chỉ cần tải xuống pip từ https://bootstrap.pypa.io/get-pip.py . Lưu tệp trong một số forlder hoặc dekstop. Tôi đã lưu tệp trong ổ đĩa D. Sau đó, từ dấu nhắc lệnh của bạn điều hướng đến thư mục mà bạn đã tải xuống pip. Sau đó gõ vào đó

python -get-pip.py

Ảnh chụp màn hình cài đặt 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.