2016-03-03 51 views
6

Aktualnie korzystam z pakietu python, który zależy od żądań 2.7.0 lub wyższych, ale żądania w moim systemie, Ubuntu 14.04, to wersja 2.2.1. Próbowałem uaktualnić poprzez pip:Jak prawidłowo aktualizować żądania w Ubuntu 14.04

pip install requests==2.7.0 

ale daje mi błąd, mówiąc:

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

Próbowałem uaktualnić go za pomocą apt-get install --only-upgrade python-requests, ale mówi, że jest już w najnowszej wersji (i nie jest).

Potem próbowałem zainstalować w virtualenv, ale daje ten sam komunikat, co powyższy komunikat pip.

Wreszcie, myślałem o dwóch opcji:

1-) Unninstalling poprzez apt-get, a następnie zainstalowanie poprzez pip - Myślę, że zbyt ryzykowne, ponieważ będzie odinstalować wiele innych pakietów.

2-) Klonowanie z github i ręcznego instalowania poprzez setup.py, ale także obawiają się, że może to bałagan z innymi pakietami w zależności od tego

Jaki jest najlepszy sposób to zrobić? Jest coś prostego, czego mi brakuje?

+0

mógłbyś dać nam swoją komendę pip bo mogę zrobić foo mkvirtualenv następnie pip zainstalować żądań BEZ żadnego problemu i instaluje wnioski-2.9.1-py2.py3-None-any.whl. Może możesz odinstalować pakiet debian przed pip – Benjamin

+0

Czy najpierw instalowałeś żądania z 'sudo'? Odkryłem, że wiele błędów 'pip' jest powodowanych przez zainstalowanie czegoś gdzieś' sudo' może uzyskać do niego dostęp, ale zwykły użytkownik nie może tego zrobić. – wpercy

+0

Edytowane za pomocą polecenia pip. Jaka jest różnica między virtualenv foo a mkvirtualenv foo? –

Odpowiedz

4

Działa to dla mnie na 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' 
>>> 

Zastanawiam się dlaczego OS/wersja Ubuntu wniosków jest 2.2.1, natomiast kopalnia jest 2.0.1. Czy ręcznie zainstalowałeś nowszą wersję żądań za pomocą jakiegoś innego mechanizmu niż oficjalny pakiet python-requests .deb? Jak sugeruje @wilbur w powyższych komentarzach, czy możliwe jest, że w pewnym momencie w przeszłości zdarzyło Ci się uruchomić sudo pip install requests? Jeśli tak, być może warto uruchomić sudo pip uninstall requests, aby się przekonać, czy można się go pozbyć ...

+1

To działało w virtualenv. Używałem pip z sudo wewnątrz virtualenv, więc używałem system pip, a nie virtualenv. Dzięki stary. –

3

Potrzebowałem żądań> 2.10.0 dla skarpetek proxy wbudowanego wsparcia. Wymuś odinstalowanie dpkg --remove --force-depends python-requests zrywa apt (nawet jeśli żądania są zainstalowane na PIP).

z powrotem do wersji 2.2.1, maksymalna wersja w zaufana repo. Jednak yakkety repo Ubuntu zawiera 2.10.0 python-wnioski, w miarę potrzeb, tak zrobiłem, co następuje:

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 

Uwaga! Ważne jest, aby wykonać drugie apt-get update, aby usunąć indeks yakkety, aby nie uruchamiać od czasu do czasu apt-get upgrade i uszkodzić system.

Więc teraz mam wymaganą wersję.

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

To rozwiązanie systemowe. Jeśli potrzebujesz virtualenv, zobacz poprzednie odpowiedzi – voldemarich