easy_install nie połączy się przez proxy


19

Używam Ubuntu Server 10.04 64-bit w VirtualBox i wydaje się, że wszystko oprócz easy_install i pip może łączyć się z Internetem. Ustawiłem i wyeksportowałem zmienną środowiskową http_proxy, a także skonfigurowałem adres proxy w każdej innej znanej mi lokalizacji. Jednak easy_install zawsze zwraca „Sieć jest nieosiągalna”:

:~$ echo $http_proxy
http://192.168.1.25:80/

:~$ grep "http_proxy" /etc/bash.bashrc
export http_proxy=http://192.168.1.25:80/

:~$ grep "http_proxy" /etc/wgetrc
http_proxy = http://192.168.1.25:80/

:~$ ping pypi.python.org
PING pypi.python.org (82.94.164.168) 56(84) bytes of data.
64 bytes from pypi.python.org (82.94.164.168): icmp_seq=1 ttl=53 time=114 ms
64 bytes from pypi.python.org (82.94.164.168): icmp_seq=2 ttl=53 time=113 ms
64 bytes from pypi.python.org (82.94.164.168): icmp_seq=3 ttl=53 time=113 ms
64 bytes from pypi.python.org (82.94.164.168): icmp_seq=4 ttl=53 time=113 ms
64 bytes from pypi.python.org (82.94.164.168): icmp_seq=5 ttl=53 time=114 ms
64 bytes from pypi.python.org (82.94.164.168): icmp_seq=6 ttl=53 time=113 ms
^C
--- pypi.python.org ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5006ms
rtt min/avg/max/mdev = 113.367/113.871/114.678/0.614 ms

:~$ sudo easy_install virtualenv
Searching for virtualenv
Reading http://pypi.python.org/simple/virtualenv/
Download error: [Errno 101] Network is unreachable -- Some packages may not be found!
Reading http://pypi.python.org/simple/virtualenv/
^Cinterrupted
:~$

Mogę nawet połączyć się z witryną z poziomu Pythona:

>>> import urllib
>>> obj = urllib.urlopen('http://pypi.python.org/simple/virtualenv/')
>>> obj.readlines()[0]
'<html><head><title>Links for virtualenv</title></head><body><h1>Links for virtualenv</h1><a href="../../packages/source/v/virtualenv/virtualenv-1.5.1.tar.gz#md5=3daa1f449d5d2ee03099484cecb1c2b7">virtualenv-1.5.1.tar.gz</a><br/>\n'

Miałem taki sam wynik z pakietami innymi niż virtualenv. Czy easy_install szuka informacji o połączeniu w innym miejscu, czy też brakuje mi czegoś oczywistego?

Odpowiedzi:


31

To jest problem z sudo. Jeśli używasz sudo, zmienna $http_proxyjest nieznana w tym kontekście.

sudo -iotwiera powłokę roota. Tam możesz $http_proxyponownie ustawić zmienną, a następnie działa easy_install - nie musisz używać sudo, ponieważ jesteś już superużytkownikiem.

$ sudo -i
# export http_proxy=http://192.168.1.25:80
# easy_install virtualenv

Lub możesz mieć swoje rzeczywiste środowisko w kontekście sudo i zapisać „krok rootowania” poprzez:

$ sudo -E easy_install virtualenv

1
Dziękuję Ci. Liczby, które zapominam o takich rzeczach jak zakres, gdy nie programuję. Musiałem skonfigurować http_proxyw / etc / environment na innych instalacjach, w których nie miałem problemu.
robots.jpg

ZNAKOMITY. Żaden przewodnik nie ma tego.
Robert Grant,

7

Zamiast otwierania powłoki roota sudo -imożesz uruchomić polecenie

$ sudo -E easy_install virtualenv

-EPrzełącznik zachowuje swoje bieżące środowisko.


Innym problemem jest to, że niektóre sudo-podobne zamienniki (np. Dzdo) odmawiają zachowania tych zmiennych, nawet jeśli im to każesz.
Sam Brightman,

1

Musiałem dodać

# export http_proxy=x.x.x.x:YY
# export https_proxy=x.x.x.x:YY
# export ftp_proxy=x.x.x.x:YY
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.