easy_install sẽ không kết nối thông qua proxy


19

Tôi đang chạy Ubuntu Server 10.04 64 bit trong VirtualBox và dường như mọi thứ trừ easy_install và pip đều có thể kết nối với Internet. Tôi đã thiết lập và xuất biến môi trường http_proxy và cũng thiết lập địa chỉ proxy ở mọi vị trí khác mà tôi biết. Tuy nhiên easy_install luôn trả về "Mạng không thể truy cập được":

:~$ 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
:~$

Tôi thậm chí có thể kết nối với trang web từ bên trong Python:

>>> 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'

Tôi đã có kết quả tương tự với các gói khác virtualenv. Là easy_install đang tìm kiếm thông tin kết nối ở nơi nào khác, hoặc có điều gì đó rõ ràng tôi đang thiếu?

Câu trả lời:


31

Đó là một vấn đề với sudo. Nếu bạn sử dụng sudo, biến $http_proxykhông xác định trong bối cảnh này.

sudo -imở ra một vỏ gốc. Ở đó bạn có thể đặt lại $http_proxybiến và sau đó easy_install hoạt động - bạn không phải sử dụng sudo vì bạn đã là siêu người dùng.

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

Hoặc bạn có thể có môi trường thực tế của mình trong ngữ cảnh sudo và lưu "bước root" thông qua:

$ sudo -E easy_install virtualenv

1
Cảm ơn bạn. Những con số mà tôi quên về những thứ như phạm vi khi tôi không lập trình. Tôi phải thiết lập http_proxytrong / etc / môi trường trên các cài đặt khác mà tôi không gặp vấn đề gì.
robot.jpg

XUẤT SẮC. Không có hướng dẫn có điều này.
Robert Grant

7

Thay vì mở shell root bằng sudo -ibạn có thể chạy lệnh

$ sudo -E easy_install virtualenv

Công -Etắc bảo vệ môi trường hiện tại của bạn.


Một vấn đề khác là một số thay thế giống như sudo (ví dụ dzdo) từ chối bảo tồn các biến này ngay cả khi bạn bảo chúng.
Sam Brightman

1

Tôi đã phải thêm

# export http_proxy=x.x.x.x:YY
# export https_proxy=x.x.x.x:YY
# export ftp_proxy=x.x.x.x:YY
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.