Windows에서 pip.ini 설정하기(proxy)
proxy 환경에서 pipenv로 패키지 설치하다가 문제가 좀 있어서.. 삽질했던 내용 정리합니다.
- Windows 에 Python 3.9 설치되어 있음
- 외부 인터넷은 proxy 경유하도록 되어 있음
- pip install pipenv 방법으로 pipenv 설치했고, pipenv 로 패키지 설치시 pypi.org 접속 timeout 발생함
반응형
1. pip.ini 파일 global 로딩 위치 확인하기
C:\> pip config -v list
For variant 'global', will try loading 'C:\ProgramData\pip\pip.ini'
For variant 'user', will try loading 'C:\Users\**\pip\pip.ini'
For variant 'user', will try loading 'C:\Users\**\AppData\Roaming\pip\pip.ini'
For variant 'site', will try loading 'c:\python39\pip.ini'
2. pip.ini 파일 만들기
C:\>mkdir C:\ProgramData\pip
C:\>cd C:\ProgramData\pip
C:\ProgramData\pip> code pip.ini
3. pip.ini 파일 작성
[global]
proxy = http://PROXYSERVERIP:PORT
cert = C:\\CERTIFICATION.cer
trusted-host = pypi.python.org
pypi.org
files.pythonhosted.org
4. 그래도 에러 발생중
- 패키지 생성은 성공했으나, Locking Failed 발생
- Connection to pypi.org timed out. (connect timeout=10) 발생
- 참고URL: https://blog.csdn.net/jpch89/article/details/81952416
- 원인: 공식사이트(https://pypi.org/simple)를 통해 lock작업하면 속도가 느려서 timeout 발생(https://pypi.org/pypi/asgiref/json 접속해서 다운 받는 내용의 사이즈가 생각보다 큼)
(test1-4yfRbVkl) D:\dev\test1>pipenv install django
Installing django...
Adding django to Pipfile's [packages]...
Installation Succeeded
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
Locking Failed!
Traceback (most recent call last):
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\connection.py", line 169, in _new_conn
conn = connection.create_connection(
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\util\connection.py", line 96, in create_connection
raise err
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\util\connection.py", line 86, in create_connection
sock.connect(sa)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\connectionpool.py", line 699, in urlopen
httplib_response = self._make_request(
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\connectionpool.py", line 382, in _make_request
self._validate_conn(conn)
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\connectionpool.py", line 1010, in _validate_conn
conn.connect()
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\connection.py", line 353, in connect
conn = self._new_conn()
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\connection.py", line 174, in _new_conn
raise ConnectTimeoutError(
pipenv.vendor.urllib3.exceptions.ConnectTimeoutError: (<pipenv.vendor.urllib3.connection.HTTPSConnection object at 0x000001F2859C5BE0>, 'Connection to pypi.org timed out. (connect timeout=10)')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\vendor\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\connectionpool.py", line 755, in urlopen
retries = retries.increment(
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\vendor\urllib3\util\retry.py", line 574, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
pipenv.vendor.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi/tzdata/json (Caused by ConnectTimeoutError(<pipenv.vendor.urllib3.connection.HTTPSConnection object at 0x000001F2859C5BE0>, 'Connection to pypi.org timed out. (connect timeout=10)'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\resolver.py", line 766, in <module>
main()
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\resolver.py", line 760, in main
_main(parsed.pre, parsed.clear, parsed.verbose, parsed.system, parsed.write,
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\resolver.py", line 743, in _main
resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\resolver.py", line 704, in resolve_packages
results, resolver = resolve(
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\resolver.py", line 685, in resolve
return resolve_deps(
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\utils.py", line 1377, in resolve_deps
results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
File "c:\users\&&\appdata\roaming\python\python39\site-packages\pipenv\utils.py", line 1107, in actually_resolve_deps
hashes = resolver.resolve_hashes()
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\utils.py", line 981, in resolve_hashes
self.hashes[ireq] = self.collect_hashes(ireq)
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\utils.py", line 966, in collect_hashes
hashes = self._get_hashes_from_pypi(ireq)
File "c:\users\**\appdata\roaming\python\python39\site-packages\pipenv\utils.py", line 928, in _get_hashes_from_pypi
r = session.get(pkg_url, timeout=10)
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\vendor\requests\sessions.py", line 555, in get
return self.request('GET', url, **kwargs)
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\vendor\requests\sessions.py", line 542, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\vendor\requests\sessions.py", line 655, in send
r = adapter.send(request, **kwargs)
File "C:\Users\**\AppData\Roaming\Python\Python39\site-packages\pipenv\vendor\requests\adapters.py", line 504, in send
raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi/tzdata/json (Caused by ConnectTimeoutError(<pipenv.vendor.urllib3.connection.HTTPSConnection object at 0x000001F2859C5BE0>, 'Connection to pypi.org timed out. (connect timeout=10)'))
5. 해결 방법
- 가까운 곳의 mirror 사이트를 통해서 Lock 작업 하도록 설정 변경
- (혹은 timeout 인계치를 3600으로 변경)
- 그런데 mirror 사이트가 중국이라서 동일하게 timeout 발생됨 ^^;;;
- 국내 mirror 사이트는 아직 없는 것 같음
> pip install --upgrade pip --index-url https://mirrors.sustech.edu.cn/pypi/simple
> pip config set global.index-url https://mirrors.sustech.edu.cn/pypi/simple
Writing to C:\Users\*****\AppData\Roaming\pip\pip.ini
6. 아래 처럼 해서 해결함
- global 설정에 "trusted-host = pypi.tuna.tsinghua.edu.cn" 설정 추가
- pipenv install 명령의 --pypi-mirror 옵션 사용
>pipenv install --pypi-mirror https://pypi.tuna.tsinghua.edu.cn/simple/ django
Installing django...
Adding django to Pipfile's [packages]...
Installation Succeeded
Pipfile.lock (16c839) out of date, updating to (06f36b)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Locking...
Resolving dependencies...
Success!
Updated Pipfile.lock (06f36b)!
Installing dependencies from Pipfile.lock (06f36b)...
================================ 0/0 - 00:00:00
.
'dev > Python' 카테고리의 다른 글
defaultdict (0) | 2022.03.04 |
---|---|
django 모듈을 파이썬 소스에서 실행할때.. (0) | 2022.02.15 |
macOS에서 django 개발환경 셋팅하는 순서 (0) | 2022.02.12 |
Unicode HOWTO (0) | 2016.05.10 |
Popular Python recipes (0) | 2016.05.10 |
댓글