2016-03-03 23 views
6

Tôi hiện đang sử dụng gói python phụ thuộc vào yêu cầu 2.7.0 hoặc cao hơn, nhưng các yêu cầu trong hệ thống của tôi, Ubuntu 14.04, là phiên bản 2.2.1. Tôi cố gắng để nâng cấp qua pip:Cách cập nhật đúng các yêu cầu trong Ubuntu 14.04

pip install requests==2.7.0 

nhưng nó mang lại cho tôi một lỗi, nói:

Not uninstalling requests at /usr/lib/python2.7/dist-packages, owned by OS 

Tôi cố gắng để nâng cấp nó bằng cách sử dụng apt-get install --only-upgrade python-requests, nhưng nó nói rằng nó là đã có trên phiên bản mới nhất (và không phải của nó).

Sau đó, tôi đã thử cài đặt trong virtualenv, nhưng nó cho cùng một thông báo như thông báo pip ở trên.

Cuối cùng, tôi nghĩ về hai lựa chọn:

1-) Unninstalling qua apt-get và sau đó cài đặt qua pip - Tôi nghĩ rằng nó quá nguy hiểm, vì nó sẽ gỡ bỏ cài đặt rất nhiều gói khác.

2-) Nhân bản từ github và tự cài đặt thông qua setup.py, nhưng tôi cũng lo sợ rằng nó gây rối với các gói khác có thể phụ thuộc vào nó

cách tốt nhất để làm điều đó là gì? Có một cái gì đó đơn giản tôi đang mất tích?

+0

Ông có thể cho chúng ta lệnh pip của bạn bởi vì tôi có thể làm một foo mkvirtualenv sau đó pip cài đặt yêu cầu witout bất kỳ vấn đề và nó cài đặt yêu cầu-2.9.1-py2.py3-none-any.whl. Có lẽ bạn có thể gỡ cài đặt gói debian trước pip – Benjamin

+0

Bạn có cài đặt các yêu cầu với 'sudo' ban đầu không? Tôi đã thấy rằng rất nhiều lỗi 'pip' được gây ra bởi việc cài đặt một cái gì đó ở đâu đó mà' sudo' có thể truy cập nó, nhưng một người dùng bình thường thì không thể. – wpercy

+0

Chỉnh sửa bằng lệnh pip. Sự khác nhau giữa virtualenv foo và mkvirtualenv foo là gì? –

Trả lời

4

này làm việc cho tôi trên Ubuntu 14.04:

~ › sudo apt-get install -u python-requests 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
python-requests is already the newest version. 
python-requests set to manually installed. 
0 to upgrade, 0 to newly install, 0 to remove and 15 not to upgrade. 

~ › python 
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import requests 
>>> requests.__version__ 
'2.0.1' 
>>> 

~ › mkvirtualenv test 
New python executable in test/bin/python 
Installing setuptools, pip, wheel...done. 

~ (test) › pip install requests 
Collecting requests 
    Using cached requests-2.9.1-py2.py3-none-any.whl 
Installing collected packages: requests 
Successfully installed requests-2.9.1 

~ (test) › python 
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import requests 
>>> requests.__version__ 
'2.9.1' 
>>> 

Tôi tự hỏi tại sao hệ điều hành của bạn/Ubuntu phiên bản yêu cầu là 2.2.1, trong khi tôi là 2.0.1. Bạn đã cài đặt phiên bản mới hơn của các yêu cầu theo cách thủ công chưa, thông qua một số cơ chế khác với gói pyeb-requests .deb chính thức? Theo đề xuất của @wilbur trong các nhận xét ở trên, có thể bạn đã chạy sudo pip install requests tại một số thời điểm trong quá khứ không? Nếu có, có thể đáng để chạy sudo pip uninstall requests để xem bạn có thể loại bỏ nó không ...

+1

Nó hoạt động trong virtualenv. Tôi đã sử dụng pip với sudo bên trong virtualenv, và vì vậy nó đã được sử dụng pip hệ thống rộng, không phải là virtualenv một. Cảm ơn bạn đời. –

3

Tôi cần các yêu cầu> 2,10.0 cho hỗ trợ tích hợp proxy. Buộc gỡ cài đặt dpkg --remove --force-depends python-requests ngắt apt (ngay cả khi yêu cầu được cài đặt pip).

apt-get install python-requests cuộn lại về 2.2.1, phiên bản tối đa trong đáng tin cậy repo. Tuy nhiên, yakkety ubuntu repo chứa 2.10.0 python-yêu cầu, khi cần thiết, vì vậy tôi đã làm như sau:

apt-add-repository "deb http://us.archive.ubuntu.com/ubuntu/ yakkety main" 
apt-get update 
apt-get install python-requests # it installs 2.10.0 
apt-add-repository -r "deb http://us.archive.ubuntu.com/ubuntu/ yakkety main" 
apt-get update 

Lưu ý! Điều quan trọng là phải thực hiện lần thứ hai apt-get update để xóa chỉ mục yakkety không được thực thi apt-get upgrade thỉnh thoảng và phá vỡ hệ thống của bạn.

Vì vậy, bây giờ tôi có phiên bản được yêu cầu.

$ sudo pip2 show requests 
    --- 
    Name: requests 
    Version: 2.10.0 
    Location: /usr/lib/python2.7/dist-packages 
    Requires: 
+0

Đây là giải pháp toàn hệ thống. Nếu bạn cần virtualenv, hãy xem câu trả lời trước – voldemarich

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