Как я могу отключить мой pip-прокси (не в экспорте оболочки)? - PullRequest
0 голосов
/ 09 ноября 2019

Я использую Mac и пытаюсь установить пакеты по пипсу:

(venv) ➜  ✗ pip install -r requirements.txt   
Collecting certifi==2019.9.11 (from -r requirements.txt (line 1))
http://127.0.0.1:6152
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x1041660d0>: Failed to establish a new connection: [Errno 61] Connection refused'))': /simple/certifi/
http://127.0.0.1:6152

Я изменил код пипа, чтобы он мог печатать, какой прокси я использую.

venv/lib/python3.8/site-packages/pip-19.0.3-py3.8.egg/pip/_vendor/urllib3/connectionpool.py: urlopen метод:

        elif isinstance(e, (SocketError, NewConnectionError)) and self.proxy:
            print(self.proxy) # add this line
            e = ProxyError('Cannot connect to proxy.', e)

Но я ничего не нашел в своем export:

(venv) ➜  ✗ export | grep proxy
(venv) ➜  ✗ 

Итак, как я могу отключить прокси, который я использую (http://127.0.0.1:6152)?

1 Ответ

0 голосов
/ 09 ноября 2019

После прочтения кода я обнаружил в /lib/python3.8/urllib/request.py:

if sys.platform == 'darwin':
    from _scproxy import _get_proxy_settings, _get_proxies

    def proxy_bypass_macosx_sysconf(host):
        proxy_settings = _get_proxy_settings()
        return _proxy_bypass_macosx_sysconf(host, proxy_settings)

    def getproxies_macosx_sysconf():
        """Return a dictionary of scheme -> proxy server URL mappings.

        This function uses the MacOSX framework SystemConfiguration
        to fetch the proxy information.
        """
        return _get_proxies()



    def proxy_bypass(host):
        """Return True, if host should be bypassed.

        Checks proxy settings gathered from the environment, if specified,
        or from the MacOSX framework SystemConfiguration.

        """
        proxies = getproxies_environment()
        if proxies:
            return proxy_bypass_environment(host, proxies)
        else:
            return proxy_bypass_macosx_sysconf(host)

    def getproxies():
        return getproxies_environment() or getproxies_macosx_sysconf()

Обратите внимание:

def getproxies():
    return getproxies_environment() or getproxies_macosx_sysconf()

urllib получить прокси из двух источников:

  1. оболочка env
  2. настройки sys

Я отладил, он получил этот прокси от sys. Поэтому я проверяю настройки своей сети:

network settings

И я нашел, где я настроил этот прокси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...