Use socks proxifier, for example proxychains.
Command pip will be like proxychains pip install package_name
.
Or use another proxifier.
Domanda
I'm using ssh -D
to create a socket proxy and want to know how to use pip
(or easy_install
) with it? I find this question but that's an http proxy.
Also, please give me a solution works under OS X. (I tried proxifier, it works with pip install
, but not sudo pip install
)
Soluzione 2
Use socks proxifier, for example proxychains.
Command pip will be like proxychains pip install package_name
.
Or use another proxifier.
Altri suggerimenti
Easiest method, also works on many OS's:
pip install pysocks
pip install <yourpacakge> --proxy socks5:127.0.0.1:8123
Substitute socks4, and your own ip/port as needed.
For CentOS, you can use privoxy to convert socks5 proxy to http proxy.
yum install privoxy
Then edit /etc/privoxy/config
, at the end of the file, add:
forward-socks5 / 127.0.0.1:1080 .
It will convert socks5 proxy from 1080
to http proxy 8118
. Then you can specify the proxy in your pip config file:
[global]
proxy = 127.0.0.1:8118
DO NOT use polipo
, as it is already deprecated.
As other users have posted the following works well for using pip via a remote host:
# SOCKS4 proxy creation
ssh -D9999 <remote host URI>
# use pip with the previously created proxy connection (requires pysocks)
python3 -m pip install <package name> --proxy socks5:localhost:9999
Bootstrapping
"But I need pysocks to run pip through a proxy and you can't connect to the pypi to download packages as I don't have functioning pip"
One way to get around this is to download the pysocks wheel package on another machine:
python3 -m pip download pysocks
This will download the pysocks package to your machine. Transfer the PySocks-x-x-x-py3-none-any.whl file to the machine that requires proxy functionality and install:
python3 -m pip install PySocks*.whl
Nevermind, --proxy seems to work with http(s) proxy only.
From "pip --help"
--proxy <proxy> Specify a proxy in the form
[user:passwd@]proxy.server:port.
Edit: I finally gave up sock proxy and run a java http proxy (jhttp2.sourceforge.net/) on my remote machine and use ssh -L port:localhost:port to forward the port to the remote machine and use that http proxy.
Run these two commands:
pip install pysocks5
pip install --proxy socks5://[user:passwd@]proxy.server:port something
first of all you can try install proxychains-ng using
brew install proxychains-ng
the can try make a socks5 proxy using ssh -D like
ssh -D 12345 -fqN root@[your-vps-ip]
and use public-key or password to access your vps
then you have both proxychain and socks5.
Now edit /etc/proxychains.conf , simply add this line at the end of it
socks5 127.0.0.1 12345
and comment this
socks4 127.0.0.1 9050
Finally
proxychains4 pip install [whateveryouwant]
On Windows (mine was Win2012R2) I managed connecting through SOCKS5-proxy by doing those steps:
All-user-level-pip:
Adding this lines to pip.ini under "C:\ProgramData\pip":
[global]
proxy = socks5:{proxy-ip}:{proxy-port}
Opening cmd.exe (maybe but not necessarily as administrator ... depends on your file-system configuration...) Setting proxy variables to "no-proxy" explicitly!!! ... like that:
set http_proxy=no-proxy
set https_proxy=no-proxy
running for example pip install your_module
and finally it works through the socks5-proxy specified in the pip.ini
For user-level-pip you need to place the pip.ini somewhere else according pip-documentation.