Làm thế nào để nâng cấp pip lên mới nhất?


51

Tôi đã cài đặt pip sử dụng get-pip.pysau khi pip freezeném lỗi dưới đây

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/freeze.py", line 74, in run
    req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
  File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 299, in from_dist
    assert len(specs) == 1 and specs[0][0] == '=='
AssertionError

Storing debug log for failure in /home/simon/.pip/pip.log

Vì vậy, tôi đã kiểm tra 1.7 là cái mới nhất. Nếu tôi làm theo các bước dưới đây và nó không cập nhật ... Hãy giúp tôi ở đây ...

simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
simon@simon-OptiPlex-780:~/Nightybuild$ pip install -U pip
Downloading/unpacking pip
  Downloading pip-7.1.2-py2.py3-none-any.whl (1.1MB): 1.1MB downloaded
Installing collected packages: pip
Successfully installed pip
Cleaning up...
simon@simon-OptiPlex-780:~/Nightybuild$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

1
sudo -H cài đặt pip3
nâng cấp

Câu trả lời:


54

Tôi thường chỉ chạy các lệnh sau để nâng cấp cả hai pip2(= piptheo mặc định) và pip3:

sudo -H pip3 install --upgrade pip
sudo -H pip2 install --upgrade pip

Bạn phải đảm bảo rằng bạn nâng cấp phiên bản (cho Python 2 hoặc 3), mà bạn muốn phản ứng trên lệnh pipkhông có số, cuối cùng.

Ngoài ra, xin lưu ý rằng điều này sẽ giữ các phiên bản đóng gói cũ được cài đặt thông qua apt-gethoặc bất kỳ trình quản lý gói nào khác, nhưng thêm các phiên bản mới không liên quan đến các gói hệ thống. Các pipgói đã cài đặt sẽ được ưu tiên, nhưng bạn cũng không nên xóa các gói đã apt-getcài đặt, vì trình quản lý gói không thể biết rằng bất kỳ pipphiên bản nào được cài đặt khác.


3
Tại sao điều quan trọng là đặt nhà ở sudo -H?
Léo Léopold Hertz

11
@Masi Vì pipmuốn ghi các tệp đã tải xuống ở đâu đó để lưu trữ chúng. Nó được triển khai để đặt chúng trong thư mục con của thư mục chính của người dùng hiện tại. Nếu bạn đang chạy nó mà không có -Hnó sẽ phàn nàn, bởi vì nó phát hiện ra rằng thư mục chính hiện tại được đặt (người dùng bình thường) không khớp với người dùng mà nó chạy dưới dạng (root). Nếu nó ghi các tập tin của nó trong thư mục nhà của bạn, chúng sẽ được sở hữu bởi root và không thể truy cập được với bạn như người dùng bình thường nữa. Do đó, nó không lưu trữ các tập tin trong trường hợp này. Nó không phải là khủng khiếp để bỏ qua -Hnhư pipphát hiện nó và cảnh báo bạn.
Chỉ huy Byte

1
Tại sao cả hai lệnh chỉ ghi đè lên piplệnh? Khi tôi nâng cấp, pip2nó không nâng cấp pip2lệnh, chỉ pip.
Yep_It's_Me

@ Yep_It's_Me điều này là do pipliên quan đến phiên bản python mà bạn đang gọi. và là lý do tại sao các lệnh của anh ta pip2& pip3lần lượt gọi phiên bản thích hợp của python để cập nhật pip. Điều đó có ý nghĩa?
JayRizzo

27

Tôi nghĩ rằng

pip install --upgrade pip

lệnh không hoạt động đúng nữa. Lệnh đúng phải là:

  • cho Python 3:

    python3 -m pip install --upgrade pip
  • cho Python 2:

    python2 -m pip install --upgrade pip

Gg @ david-foerster
JayRizzo

Trên Linux, chỉ cần sử dụng pip install -U pip(xem Nâng cấp pip )
Eido95

1
Tôi gặp vấn đề khi cập nhật pip từ root (trong ảnh Docker) và điều này hoạt động như một bùa mê.
Cristian Ramon-Cortes

Hoạt động như một bùa mê trên Linux bạc hà
HelloWorld

5

Truy cập trang web này https://pypi.python.org/pypi/pip

sao chép (hoặc) tải xuống liên kết nguồn (kết thúc bằng .tar.gz)

cho 9.0.1, liên kết là https://pypi.python.org/pypi?:action=show_md5&digest=35f01da33009719497f01a4ba69d63c9

thủ tục cài đặt

wget //link goes here
tar -xzvf pip-9.0.1.tar.gz
cd pip-9.0.1
sudo python3 setup.py install

phiên bản nên được thay đổi thành phiên bản mới nhất và liên kết có thể được cập nhật với liên kết của phiên bản mới nhất

cái này nên hoạt động


đây là điều duy nhất làm việc cho tôi vì mọi thứ khác đều cần kết nối với máy chủ từ trình bao, một lần nữa lại bị lỗi tương tự.
Alok Rajasukumaran


1

Tôi nghĩ rằng điều đáng nói là những gì tôi giải thích bên dưới là nếu bạn mong đợi pip sẽ trỏ tới Python 2 và pip3 để trỏ tới Python 3. Lý do tôi đề cập đến điều này là vì khi bạn nâng cấp pip3, nó cũng chiếm quyền điều khiển pip như tốt. Đây là một quy ước hơi lạ bởi vì theo mặc định, python trỏ đến 2.x và python3 trỏ đến 3.x. Điều đó đang được nói ...

Nếu bạn muốn có các phiên bản mới nhất của python 2.x pip và python 3.x pip3 cùng tồn tại trên cùng một máy (sử dụng pip cho 2.x và pip3 cho 3.x), bạn cần làm như sau:

sudo apt-get install python-pip python3-pip --yes
sudo python3 -m pip install pip --upgrade --force
sudo python -m pip install pip --upgrade --force # this line associates pip with Python 2

Các câu trả lời khác được cung cấp bởi những người khác không đề cập đến rằng sau khi chạy sudo pip3 cài đặt pip - nâng cấp bạn sẽ kết thúc với các gói cài đặt lệnh pip trong các thư mục python 3.x thay vì các thư mục python 2.x.

Một phần trong tôi nghĩ rằng chúng ta chỉ nên rời khỏi pip sau khi nâng cấp pip3 (ngay cả khi nó là pip -> pip3), nhưng có một mối nguy hiểm là mọi người đã kỳ vọng rằng pip hoạt động như python - cả hai đều trỏ đến python 2.x. Nói cách khác, mọi người có thể được đào tạo để sử dụng pip / python cho python 2.x giống như họ được đào tạo để sử dụng pip3 / python3 cho python 3.x.


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.