Pip: Pip 20.2.4λŠ” μ’…μ†μ„±μ˜ λ¬΄ν•œ ν•΄κ²°λ‘œ λ“€μ–΄κ°‘λ‹ˆλ‹€.

에 λ§Œλ“  2020λ…„ 10μ›” 19일  Β·  40μ½”λ©˜νŠΈ  Β·  좜처: pypa/pip

μ•ˆλ…•ν•˜μ„Έμš”,

ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ ν”„λ‘œμ νŠΈμ˜ 쒅속성을 μ„€μΉ˜ν•˜λ €κ³  ν•  λ•Œ λ‚΄ CIκ°€ λ¬΄ν•œ ν•΄κ²°λ©λ‹ˆλ‹€.

pip install -e .[test] --use-feature=2020-resolver -i https://artifactory.company.com/api/pypi/pypi/simple

μ‚°μΆœ

Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting deprecation
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl (11 kB)
Collecting six
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting toolz
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/12/f5/537e55f8ba664ff2a26f26913010fb0fcb98b6bbadc6158af888184fd0b7/toolz-0.11.1-py3-none-any.whl (55 kB)
Collecting packaging
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/46/19/c5ab91b1b05cfe63cccd5cfc971db9214c6dd6ced54e33c30d5af1d2bc43/packaging-20.4-py2.py3-none-any.whl (37 kB)
Collecting pyparsing>=2.0.2
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/8a/bb/488841f56197b13700afd5658fc279a2025a39e22449b7cf29864669b15d/pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Installing collected packages: six, pyparsing, packaging, toolz, deprecation
Successfully installed deprecation-2.1.0 packaging-20.4 pyparsing-2.4.7 six-1.15.0 toolz-0.11.1
[32;1m$ pip install git+https://${CI_REGISTRY_USER}:${CI_JOB_TOKEN}@gitlab.company.com/proj/pygraph.git<strong i="11">@Dev_Py3</strong> ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting git+https://gitlab-ci-token:****@gitlab.company.com/proj/pygraph.git<strong i="12">@Dev_Py3</strong>
  Cloning https://gitlab-ci-token:****@gitlab.company.com/proj/pygraph.git (to revision Dev_Py3) to /tmp/pip-req-build-eulnmcb2
Collecting networkx==2.*
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/9b/cd/dc52755d30ba41c60243235460961fc28022e5b6731f16c268667625baea/networkx-2.5-py3-none-any.whl (1.6 MB)
Collecting redis
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/a7/7c/24fb0511df653cf1a5d938d8f5d19802a88cef255706fdda242ff97e91b7/redis-3.5.3-py2.py3-none-any.whl (72 kB)
Collecting decorator>=4.3.0
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/ed/1b/72a1821152d07cf1d8b6fce298aeb06a7eb90f4d6d41acec9861e7cc6df0/decorator-4.4.2-py2.py3-none-any.whl (9.2 kB)
Building wheels for collected packages: graph-pygraph
  Building wheel for graph-pygraph (setup.py): started
  Building wheel for graph-pygraph (setup.py): finished with status 'done'
  Created wheel for graph-pygraph: filename=graph_pygraph-0.0.202010091542+devpy3-py3-none-any.whl size=71373 sha256=610fe21400ba7adec344b8345b819d42244631d11227a24bfb0fe068c959c309
  Stored in directory: /tmp/pip-ephem-wheel-cache-ovmjos36/wheels/7e/80/09/96d325dfa75fe4d16a6345d433dc8d944ebe48f4a049a12633
Successfully built graph-pygraph
Installing collected packages: decorator, redis, networkx, graph-pygraph
Successfully installed decorator-4.4.2 graph-pygraph-0.0.202010091542+devpy3 networkx-2.5 redis-3.5.3
[32;1m$ pip install git+https://${CI_REGISTRY_USER}:${CI_JOB_TOKEN}@gitlab.company.com/proj/parser.git<strong i="13">@Dev_Py3</strong> ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting git+https://gitlab-ci-token:****@gitlab.company.com/proj/parser.git<strong i="14">@Dev_Py3</strong>
  Cloning https://gitlab-ci-token:****@gitlab.company.com/proj/parser.git (to revision Dev_Py3) to /tmp/pip-req-build-h_satb7q
Requirement already satisfied: deprecation in ./.venv/lib/python3.6/site-packages (from graph-parser==0.0.202009100923+devpy3) (2.1.0)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser==0.0.202009100923+devpy3) (1.15.0)
Collecting defusedxml
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/06/74/9b387472866358ebc08732de3da6dc48e44b0aacd2ddaa5cb85ab7e986a2/defusedxml-0.6.0-py2.py3-none-any.whl (23 kB)
Requirement already satisfied: packaging in ./.venv/lib/python3.6/site-packages (from deprecation->graph-parser==0.0.202009100923+devpy3) (20.4)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser==0.0.202009100923+devpy3) (1.15.0)
Requirement already satisfied: pyparsing>=2.0.2 in ./.venv/lib/python3.6/site-packages (from packaging->deprecation->graph-parser==0.0.202009100923+devpy3) (2.4.7)
Building wheels for collected packages: graph-parser
  Building wheel for graph-parser (setup.py): started
  Building wheel for graph-parser (setup.py): finished with status 'done'
  Created wheel for graph-parser: filename=graph_parser-0.0.202009100923+devpy3-py3-none-any.whl size=20698 sha256=f2d7b651180d9f844b7aafe8b9431938ceecbfec798407c47b7258b94528c75c
  Stored in directory: /tmp/pip-ephem-wheel-cache-bmna_g2x/wheels/fb/eb/f2/38806b77dcb72c250f63911a3567922b604ab6e88ab74ff980
Successfully built graph-parser
Installing collected packages: defusedxml, graph-parser
Successfully installed defusedxml-0.6.0 graph-parser-0.0.202009100923+devpy3
[32;1m$ pip install git+https://${CI_REGISTRY_USER}:${CI_JOB_TOKEN}@gitlab.company.com/proj/interfaces.git<strong i="15">@Dev_Py3</strong> --no-deps ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting git+https://gitlab-ci-token:****@gitlab.company.com/proj/interfaces.git<strong i="16">@Dev_Py3</strong>
  Cloning https://gitlab-ci-token:****@gitlab.company.com/proj/interfaces.git (to revision Dev_Py3) to /tmp/pip-req-build-20dgw2sv
Building wheels for collected packages: graph-interfaces
  Building wheel for graph-interfaces (setup.py): started
  Building wheel for graph-interfaces (setup.py): finished with status 'done'
  Created wheel for graph-interfaces: filename=graph_interfaces-0.0.202009180922+devpy3-py3-none-any.whl size=36309 sha256=4a461620d4810f49bd1072a202ab767d56a171bcaa6c5609dcdbaadcc7c4f0a9
  Stored in directory: /tmp/pip-ephem-wheel-cache-5fdbdk3o/wheels/03/ab/79/5bc1653cb185c54b17d12b2b8d495e5231cf117605d3073d9e
Successfully built graph-interfaces
Installing collected packages: graph-interfaces
Successfully installed graph-interfaces-0.0.202009180922+devpy3
[32;1m$ pip install git+https://${CI_REGISTRY_USER}:${CI_JOB_TOKEN}@gitlab.company.com/proj/post-binding.git<strong i="17">@Dev_Py3</strong> --no-deps ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Collecting git+https://gitlab-ci-token:****@gitlab.company.com/proj/post-binding.git<strong i="18">@Dev_Py3</strong>
  Cloning https://gitlab-ci-token:****@gitlab.company.com/proj/post-binding.git (to revision Dev_Py3) to /tmp/pip-req-build-94mbisdx
Building wheels for collected packages: graph-post-bindings
  Building wheel for graph-post-bindings (setup.py): started
  Building wheel for graph-post-bindings (setup.py): finished with status 'done'
  Created wheel for graph-post-bindings: filename=graph_post_bindings-Dev-py3-none-any.whl size=211749 sha256=efbf8dfa72e4e461740a19a1208952d712fdcace52f17379fd7ad18d9da3b912
  Stored in directory: /tmp/pip-ephem-wheel-cache-vwr6n_g0/wheels/43/7e/ef/8849b821244fee59fc5b97c8694cf87e5609633ea26d65f8a0
Successfully built graph-post-bindings
Installing collected packages: graph-post-bindings
Successfully installed graph-post-bindings-Dev
[32;1m$ pip install -e .[test] ${PIP_OPTS}[0;m
Looking in indexes: https://artifactory.company.com/api/pypi/pypi/simple
Obtaining file:///tmp/proj/scenarios
Requirement already satisfied: graph-pygraph<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202010091542+devpy3)
Requirement already satisfied: graph-interfaces<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009180922+devpy3)
Requirement already satisfied: graph-parser<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009100923+devpy3)
Requirement already satisfied: graph-post_bindings==Dev in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (Dev)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)
Requirement already satisfied: graph-pygraph<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202010091542+devpy3)
Requirement already satisfied: graph-interfaces<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009180922+devpy3)
Requirement already satisfied: graph-parser<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009100923+devpy3)
Requirement already satisfied: graph-post_bindings==Dev in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (Dev)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)
Collecting cerberus
  Downloading https://artifactory.company.com/api/pypi/pypi/packages/packages/90/a7/71c6ed2d46a81065e68c007ac63378b96fa54c7bb614d653c68232f9c50c/Cerberus-1.3.2.tar.gz (52 kB)
Requirement already satisfied: setuptools in ./.venv/lib/python3.6/site-packages (from cerberus->graph-scenarios==0.0.202010191027+unknown) (50.3.2)
Requirement already satisfied: redis in ./.venv/lib/python3.6/site-packages (from graph-pygraph<1->graph-scenarios==0.0.202010191027+unknown) (3.5.3)
Requirement already satisfied: networkx==2.* in ./.venv/lib/python3.6/site-packages (from graph-pygraph<1->graph-scenarios==0.0.202010191027+unknown) (2.5)
Requirement already satisfied: graph-parser<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202009100923+devpy3)
Requirement already satisfied: graph-pygraph<1 in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.0.202010091542+devpy3)
Requirement already satisfied: redis in ./.venv/lib/python3.6/site-packages (from graph-pygraph<1->graph-scenarios==0.0.202010191027+unknown) (3.5.3)
Requirement already satisfied: deprecation in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (2.1.0)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (1.15.0)
Requirement already satisfied: defusedxml in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (0.6.0)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)
Collecting graph-parser<1
  Downloading https://artifactory.company.com/api/pypi/pypi/graph-parser/0.0.202009100923%2Bunknown/graph_parser-0.0.202009100923%2Bunknown-py3-none-any.whl (20 kB)
Requirement already satisfied: deprecation in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (2.1.0)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (1.15.0)
Requirement already satisfied: defusedxml in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (0.6.0)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)

λ§ˆμ§€λ§‰ 4 쀄이 μ˜μ›νžˆ λ°˜λ³΅λ©λ‹ˆλ‹€.

Requirement already satisfied: deprecation in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (2.1.0)
Requirement already satisfied: six in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (1.15.0)
Requirement already satisfied: defusedxml in ./.venv/lib/python3.6/site-packages (from graph-parser<1->graph-scenarios==0.0.202010191027+unknown) (0.6.0)
Requirement already satisfied: toolz in ./.venv/lib/python3.6/site-packages (from graph-scenarios==0.0.202010191027+unknown) (0.11.1)

μΆ”κ°€ 정보

μœ„μ˜ 좜λ ₯μ—μ„œ PIP_OPTS λŠ” --use-feature=2020-resolver -i https://artifactory.company.com/api/pypi/pypi/simple λ©λ‹ˆλ‹€.

pip==20.2.3 λ¬Έμ œκ°€μ—†λŠ” νšŒμ‚¬ ν˜ΈμŠ€νŒ… 인덱슀λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

!release blocker new resolver bug

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

감사! λ¬Έμ œκ°€λ˜λŠ” μš”κ΅¬ 사항을 λ‹€μŒμœΌλ‘œ μ œν•œν–ˆμŠ΅λ‹ˆλ‹€.

pytest-mock>=1.11.0
pytest-sugar>=0.9.3
pytest-testmon<1.0.0
coverage==5.3

이듀 쀑 ν•˜λ‚˜λ₯Ό μ œκ±°ν•˜λ©΄ ν•΄κ²°μžκ°€ μ†”λ£¨μ…˜μ„ 생성 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό κ΅¬μΆ•ν•˜κ³  κ±°κΈ°μ—μ„œ μž‘μ—…ν•˜λ €κ³  λ…Έλ ₯ν•  κ²ƒμž…λ‹ˆλ‹€.


μ°Έκ³  (μžμ‹ μ—κ²Œ) : ν˜„μž¬ 가섀은 ν•΄κ²°μžκ°€ ν•˜λ‚˜ μ΄μƒμ˜ κ΄€λ ¨λ˜μ§€ μ•Šμ€ μΆ©λŒμ„ λ°œκ²¬ν•˜λ©΄μ΄ λ¬Έμ œκ°€ 트리거 될 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. ν•˜λ‚˜λ₯Όλ³΄κ³  μ—­ μΆ”μ ν•˜κ³  λ‹€λ₯Έ ν•˜λ‚˜λ₯Όλ³΄κ³  μ—­ μΆ”μ ν•˜κ³  첫 번째 것을 λ‹€μ‹œ μ³€μŠ΅λ‹ˆλ‹€.

λͺ¨λ“  40 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš”! 이 문제λ₯Ό μ œμΆœν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! pipκ°€ μ„€μΉ˜ν•˜λ €λŠ” μš”κ΅¬ 사항을 곡유 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? κ΄€λ ¨ ν”„λ‘œμ νŠΈμ˜ setup.py/pyproject.toml에 μžˆμŠ΅λ‹ˆλ‹€.

"곡용"쒅속성은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

    install_requires=[
        'cerberus',
        '<inhouse component 1>',
        '<inhouse component 2>',
        '<inhouse component 3>',
        '<inhouse component 4>',
        '<inhouse component 5>',
        'pint',
        '<inhouse component 6>',
        '<inhouse component 7>',
        'toolz',
        'pyyaml>=5.1',
    ],
    extras_require={'test': ['pylint', 'pytest>=4', 'pytest-cov', 'pytest-html', 'pytest-xdist',]},

κ·ΈλŸ¬λ‚˜ λ³΄μ‹œλ‹€μ‹œν”Ό ν•„μš”ν•œ 사내 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ—¬λŸ¬ 개 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ 도움이 될 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ 20.2.3 버전이 μ„€μΉ˜λ˜λŠ” pip list μž…λ‹ˆλ‹€.

$ pip list
Package              Version                  Location
-------------------- ------------------------ ------------------
amqp                 5.0.1
apipkg               1.5
asteval              0.9.19
astroid              2.4.2
attrs                20.2.0
<inhouse>
billiard             3.6.3.0
celery               5.0.1
Cerberus             1.3.2
certifi              2020.6.20
chardet              3.0.4
click                7.1.2
click-didyoumean     0.0.3
click-repl           0.1.6
coverage             5.3
cycler               0.10.0
decorator            4.4.2
defusedxml           0.6.0
deprecation          2.1.0
execnet              1.7.1
future               0.18.2
<inhouse>
<inhouse>
<inhouse>
<inhouse>
<inhouse>
h5py                 2.10.0
importlib-metadata   2.0.0
importlib-resources  3.0.0
iniconfig            1.1.1
isort                5.6.4
kiwisolver           1.2.0
kombu                5.0.2
lazy-object-proxy    1.4.3
<inhouse>
lmfit                1.0.1
matplotlib           3.3.2
mccabe               0.6.1
munch                2.5.0
networkx             2.5
numpy                1.19.2
packaging            20.4
pandas               1.1.3
Pillow               8.0.0
Pint                 0.16.1
pip                  20.2.3
pluggy               0.13.1
<inhouse>
<inhouse>
prompt-toolkit       3.0.8
py                   1.9.0
<inhouse>
<inhouse>
<inhouse>
pylint               2.6.0
pyparsing            2.4.7
<inhouse>
pytest               6.1.1
pytest-cov           2.10.1
pytest-forked        1.3.0
pytest-html          2.1.1
pytest-metadata      1.10.0
WARNING: You are using pip version 20.2.3; however, version 20.2.4 is available.
You should consider upgrading via the '/tmp/ues/scenarios/.venv/bin/python -m pip install --upgrade pip' command.
pytest-xdist         2.1.0
python-dateutil      2.8.1
pytz                 2020.1
PyYAML               5.3.1
redis                3.5.3
scipy                1.5.3
setuptools           50.3.2
six                  1.15.0
tabulate             0.8.7
toml                 0.10.1
toolz                0.11.1
typed-ast            1.4.1
uncertainties        3.1.4
vine                 5.0.0
wcwidth              0.2.5
wheel                0.35.1
wrapt                1.12.1
xlwt                 1.3.0
zipp                 3.3.1

관련성이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ _pre-pip install_ deprecation six toolz , μ‹€μ œλ‘œ λ‹€μŒμ„ μˆ˜ν–‰ν•œλ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

pip install deprecation six toolz ${PIP_OPTS}
# some more pip installation using the new resolver
pip install -e .[test] ${PIP_OPTS}

κ³΅μœ ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜μ΄ μ •λ³΄λŠ” μ—¬μ „νžˆμ΄ 문제λ₯Ό μž¬ν˜„ν•˜κΈ°μ— μΆ©λΆ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. :(

λ‚˜λŠ” 기본적으둜 이것을 디버깅 ν•  수 μžˆλ„λ‘ ν•΄κ²° κ³Όμ •μ—μ„œ pipκ°€ λ³΄λŠ” (package-name, version): [dependencies] 의 전체 맀핑이 ν•„μš”ν•˜λ©° λΆ„λͺ…νžˆ λ‚΄λΆ€ νŒ¨ν‚€μ§€μ˜ 쒅속성을 찾을 수 μ—†μŠ΅λ‹ˆλ‹€. ;)

λ”°λΌμ„œ λͺ‡ 가지 κ΄€λ ¨ 질문이 μžˆμŠ΅λ‹ˆλ‹€.

  • λ‚΄λΆ€ νŒ¨ν‚€μ§€μ— μ•‘μ„ΈμŠ€ ν•  ν•„μš”μ—†μ΄μ΄ μž‘μ—…μ„ μ‹œλ„ ν•  수 μžˆλ„λ‘ μ΅œμ†Œν•œμ˜ μž¬ν˜„κΈ°λ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆκΉŒ? :)

    • 그렇지 μ•Šμ€ 경우 ν•΄κ²° ν”„λ‘œμ„ΈμŠ€ 쀑에 pipκ°€ λ³΄λŠ” νŒ¨ν‚€μ§€μ— λŒ€ν•΄ μœ„μ—μ„œ μ–ΈκΈ‰ ν•œ 맀핑과 같은 것을 제곡 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

  • 둜 μ„€μΉ˜ν•  λ•Œμ΄ 였λ₯˜λ„ λ°œμƒν•©λ‹ˆκΉŒ . λŒ€μ‹  .[test] (즉, ν…ŒμŠ€νŠΈ 좔가없이)?

기본적으둜 λ¦¬μ‘Έλ²„μ˜ λ‚΄λΆ€ μƒνƒœκ°€ λ©ˆμ·„μ„ λ•Œ μž¬μƒμ„± / ν™•μΈν•΄μ•Όν•©λ‹ˆλ‹€. μ—¬λŸ¬ 가지 이유둜 인쇄 / λ‘œκ·Έν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ’‹μ•„ κ·Έλž˜μ„œ λ‚˜λŠ” μ„±κ³΅ν•˜μ§€ μ•Šκ³  문제λ₯Ό λ‘œμ»¬μ—μ„œ μž¬ν˜„ν•˜λ €κ³  λ…Έλ ₯ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것을 λ‹€λ₯Έ μ§€μ μ˜ CIμ—μ„œ μž¬ν˜„ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ μ‹€νŒ¨ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ 였늘 일찍 λ¬Έμ œκ°€ μžˆμ—ˆλ˜ μ›λž˜ 브랜치둜 λŒμ•„κ°€ 20.2.4 둜 λ‹€μ‹œ μ „ν™˜ν–ˆκ³  μ΄λ²ˆμ—λŠ” 쒅속성을 ν•΄κ²°ν•˜λŠ” 데 μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€ ...

이것이 μΊμ‹±μ΄λ‚˜ λ­”κ°€ λ¬Έμ œκ°€ 될 수 μžˆμŠ΅λ‹ˆκΉŒ?

우리 CIλŠ” k8s λŸ¬λ„ˆμ™€ ν•¨κ»˜ μž‘λ™ν•˜λ―€λ‘œ 이것이 사싀 일 수 μžˆλ‹€κ³  μ˜μ‹¬ν•©λ‹ˆλ‹€.

이것을 λ‹«μ•˜λ‹€κ°€ λ‹€μ‹œ λ°œμƒν•˜λ©΄ λ‹€μ‹œ μ—΄μ–΄μ•Όν•©λ‹ˆκΉŒ?

이것이 μΊμ‹±μ΄λ‚˜ λ­”κ°€ λ¬Έμ œκ°€ 될 수 μžˆμŠ΅λ‹ˆκΉŒ?

pipλŠ” 쒅속성 ν•΄κ²° 쀑에 아무것도 μΊμ‹œν•˜μ§€ μ•Šκ³  λ„€νŠΈμ›Œν¬ I / O 만 μΊμ‹œν•©λ‹ˆλ‹€. λ‚˜λŠ” 그것이 될 수 μžˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이것을 λ‹«μ•˜λ‹€κ°€ λ‹€μ‹œ λ°œμƒν•˜λ©΄ λ‹€μ‹œ μ—΄μ–΄μ•Όν•©λ‹ˆκΉŒ?

ν™•μ‹€ν•œ! 그것은 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•©λ‹ˆλ‹€. μž¬ν˜„κΈ°λ₯Ό 생각해 λ‚Ό 수 μžˆλ‹€λ©΄ λŒ€λ‹¨ ν•  κ²ƒμž…λ‹ˆλ‹€!

저도 ν•˜λ£¨ 전에 κ°‘μžκΈ° μ‹œμž‘λœ λΉ„μŠ·ν•œ 문제λ₯Όλ³΄κ³  μžˆμŠ΅λ‹ˆλ‹€.

pip 20.2.4μ—μ„œ μ €λŠ” 이것을 λ‹€μŒκ³Ό 같이 μž¬ν˜„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

pip install --use-feature=2020-resolver "google-api-core>1.18.0,<1.21.0" "google-cloud-monitoring>=2.0.0"

λ™μž‘μ€ μ•½κ°„ λΉ„ 결정적인 κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ μ’…μ†μ„±μ˜ μ—¬λŸ¬ 버전 (μ•„λ§ˆλ„ _every_ version!)을 λ‹€μš΄λ‘œλ“œν•˜κΈ° μ‹œμž‘ν•  λ•Œλ§ˆλ‹€ Requirement already satisfied 루프에 κ°‡νžˆκ±°λ‚˜ μ™„μ „νžˆ 멈좘 κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. 이것은 μš”μ•½ 된 μ˜ˆμ΄μ§€λ§Œ CI λΉŒλ“œκ°€ μ£½κΈ° 전에 6 μ‹œκ°„ λ™μ•ˆ λ©ˆμ·„μŠ΅λ‹ˆλ‹€.

μ„€μΉ˜ν•˜λ €λŠ” 두 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ‹€μ œλ‘œ 버전 μΆ©λŒμ„ μΌμœΌν‚€κ³  --use-feature=2020-resolver λ₯Ό μ‚­μ œν•˜λ©΄ 정상적인 였λ₯˜ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

google-cloud-monitoring 2.0.0 requires google-api-core[grpc]<2.0.0dev,>=1.22.2, but you'll have google-api-core 1.20.1 which is incompatible.

λ˜ν•œ pip 20.2.3 (및 2020-resolver )으둜 λ“œλ‘­ λ‹€μš΄ν•˜λ©΄ 쒅속성 좩돌 였λ₯˜κ°€ λΉ λ₯΄κ²Œ λ°œμƒν•©λ‹ˆλ‹€.

μœ„μ˜ μš”κ΅¬ 사항을 google-cloud-monitoring<2.0.0 둜 λ³€κ²½ν•˜λ©΄ 2020-resolver μœ λ¬΄μ— 관계없이 μ •μƒμ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€

λ‚˜λŠ” 이것도 λ§Œλ‚¬λ‹€-λ‚˜λŠ” 기쑴의 (κ½€ 큰) requirements.txt νŒŒμΌμ— λŒ€ν•΄ μƒˆλ‘œμš΄ 리쑸버λ₯Ό μ‹€ν–‰ν–ˆκ³  κ²°κ΅­ Requirement already satisfied 의 λ¬΄ν•œ λ£¨ν”„λ‘œ μ‹€ν–‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μž¬ν˜„ν•˜λŠ” λ‹¨κ³„λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. https://gist.github.com/simonw/c53ad97ac2cd495e741b52f88d22b45d

더 짧은 버전 : https://gist.githubusercontent.com/simonw/c53ad97ac2cd495e741b52f88d22b45d/raw/e09640304fcdf1990844f8ff8ecc92ef654d21b7/requirements.txt νŒŒμΌμ— λŒ€ν•΄ pip install --use-feature=2020-resolver -r requirements.txt μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

--use-feature= ν”Œλž˜κ·Έμ—†μ΄ μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 κ²°κ³Όκ°€ λ‚˜νƒ€λ‚©λ‹ˆλ‹€.

ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts.

We recommend you use --use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.

pocket-to-sqlite 0.2 requires sqlite-utils~=2.4.4, but you'll have sqlite-utils 2.22 which is incompatible.
healthkit-to-sqlite 0.5 requires sqlite-utils~=2.4.4, but you'll have sqlite-utils 2.22 which is incompatible.

μ΄μƒν•˜κ²Œλ„ λ¬΄ν•œ 루프 λ¬Έμ œλŠ” μ΄λŸ¬ν•œ νŒ¨ν‚€μ§€λ₯Ό μ–ΈκΈ‰ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ λ‹€μŒκ³Ό 같이 λ³΄μ˜€μŠ΅λ‹ˆλ‹€.

Collecting twitter-to-sqlite~=0.20
  Using cached twitter_to_sqlite-0.20-py3-none-any.whl (25 kB)
Requirement already satisfied: click~=7.1.1 in /Users/simon/.local/share/virtualenvs/pipnext-HNJm0oR8/lib/python3.8/site-packages (from datasette>=0.50.2->-r requirements.txt (line 2)) (7.1.2)
Requirement already satisfied: click~=7.1.1 in /Users/simon/.local/share/virtualenvs/pipnext-HNJm0oR8/lib/python3.8/site-packages (from datasette>=0.50.2->-r requirements.txt (line 2)) (7.1.2)
...

>= μš”κ΅¬ 사항에 λŒ€ν•œ ~= μš”κ΅¬ 사항을 λͺ¨λ‘ μ „ν™˜ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ 여기에 버그가 μžˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€ λ²„κ·Έμž…λ‹ˆλ‹€. λ¬΄ν•œ 루프 μš”κ΅¬ 사항은 경고에 ν‘œμ‹œλœ 쒅속성 μΆ©λŒμ— μ˜ν•΄ 트리거 된 κ²ƒμœΌλ‘œ λ³΄μ΄μ§€λ§Œ 였λ₯˜ 자체 (일뢀 경우 Requirement already satisfied λŒ€ν•œ λ¬΄ν•œ 루프) κ΄€λ ¨μ—†λŠ” νŒ¨ν‚€μ§€) 정말 ν˜Όλž€ μŠ€λŸ¬μ› μŠ΅λ‹ˆλ‹€.

이번 μ£Ό 회의 μ—μ„œ @pradyunsg λŠ”μ΄ 문제λ₯Ό μΆ”κ°€λ‘œ μ‘°μ‚¬ν•΄μ•Όν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ‚¬λžŒμ˜ 도움도 ν™˜μ˜ ν•  κ²ƒμž…λ‹ˆλ‹€ ( @pfmoore 및 @uranusjr λŠ” 도움이 ν•„μš”ν•©λ‹ˆλ‹€).

@pradyunsg λŠ” ν™”μš”μΌμ— 찌λ₯Ό μˆ˜μžˆλŠ” λ¬΄μ–Έκ°€μž…λ‹ˆκΉŒ?

λ‹¨κΈ°μ μœΌλ‘œλŠ” λŒ€μ—­ν­μ΄ 없을 것 κ°™μ§€λ§Œ μ—¬μœ  μ‹œκ°„μ΄μžˆμ„ λ•Œ μ‚΄νŽ΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ λ§ˆμŠ€ν„° 브랜치λ₯Ό μ‚¬μš©ν•˜λ©΄ λͺ¨λ“  μž¬μƒκΈ°κ°€ 기본적으둜 μ¦‰μ‹œ μ‹€νŒ¨ν•©λ‹ˆλ‹€. Ubuntu VM의 κΉ¨λ—ν•œ virtualenvμ—μ„œ μ‹€ν–‰ν–ˆμœΌλ©° pip의 λ§ˆμŠ€ν„° λΈŒλžœμΉ˜λŠ” setuptools 41.2.0μ΄μžˆλŠ” νŽΈμ§‘ κ°€λŠ₯ λͺ¨λ“œλ‘œ μ„€μΉ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

@DanSimon 의 https://github.com/pypa/pip/issues/9011#issuecomment -712280236 :

$ pip install --use-feature=2020-resolver "google-api-core>1.18.0,<1.21.0" "google-cloud-monitoring>=2.0.0"
Collecting google-cloud-monitoring>=2.0.0
  Using cached google_cloud_monitoring-2.0.0-py2.py3-none-any.whl (287 kB)
Collecting google-api-core<1.21.0,>1.18.0
  Using cached google_api_core-1.20.1-py2.py3-none-any.whl (90 kB)
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core<1.21.0,>1.18.0) (41.2.0)
Collecting google-api-core[grpc]<2.0.0dev,>=1.22.2
  Using cached google_api_core-1.23.0-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.4-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.3-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.2-py2.py3-none-any.whl (91 kB)
Collecting google-api-core<1.21.0,>1.18.0
  Downloading google_api_core-1.19.1-py2.py3-none-any.whl (90 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 90 kB 4.4 MB/s 
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core<1.21.0,>1.18.0) (41.2.0)
  Downloading google_api_core-1.19.0-py2.py3-none-any.whl (90 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 90 kB 4.7 MB/s 
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core<1.21.0,>1.18.0) (41.2.0)
  Downloading google_api_core-1.20.0-py2.py3-none-any.whl (90 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 90 kB 5.9 MB/s 
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core<1.21.0,>1.18.0) (41.2.0)
ERROR: Cannot install google-api-core<1.21.0 and >1.18.0, google-api-core[grpc] 1.23.0, google-api-core<1.21.0 and >1.18.0, google-api-core[grpc] 1.22.4, google-api-core<1.21.0 and >1.18.0, google-api-core[grpc] 1.22.3, google-api-core<1.21.0 and >1.18.0 and google-api-core[grpc] 1.22.2 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested google-api-core<1.21.0 and >1.18.0
    google-api-core[grpc] 1.23.0 depends on google-api-core 1.23.0 (from https://files.pythonhosted.org/packages/2e/3d/d7af13040ab5b259994a4434ff03d68084a994e709bc8afa4bee1235310e/google_api_core-1.23.0-py2.py3-none-any.whl#sha256=94d8c707d358d8d9e8b0045c42be20efb58433d308bd92cf748511c7825569c8 (from https://pypi.org/simple/google-api-core/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*))
    The user requested google-api-core<1.21.0 and >1.18.0
    google-api-core[grpc] 1.22.4 depends on google-api-core 1.22.4 (from https://files.pythonhosted.org/packages/9f/52/e7720d652aeb7d514d3a2e62d263c8058f465beee2fc41260591c0fecc3a/google_api_core-1.22.4-py2.py3-none-any.whl#sha256=15e00ceb7e6dc44159e2a41a222830744e9ebcb3a553c580b61cb5a66572f2f0 (from https://pypi.org/simple/google-api-core/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*))
    The user requested google-api-core<1.21.0 and >1.18.0
    google-api-core[grpc] 1.22.3 depends on google-api-core 1.22.3 (from https://files.pythonhosted.org/packages/eb/b0/ea7b8a2c136095c5be2f14210b31b214cb74c1eb8fee09a01ad0423a2a95/google_api_core-1.22.3-py2.py3-none-any.whl#sha256=6a95bfcf6f661ec0dffd96013b47100765f4f88ce54412562176bfcb11a997c1 (from https://pypi.org/simple/google-api-core/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*))
    The user requested google-api-core<1.21.0 and >1.18.0
    google-api-core[grpc] 1.22.2 depends on google-api-core 1.22.2 (from https://files.pythonhosted.org/packages/3c/45/a5707ce2cbd6681c09e69a0ce10d9bebe98e0231c458a4dc652670f3584f/google_api_core-1.22.2-py2.py3-none-any.whl#sha256=67e33a852dcca7cb7eff49abc35c8cc2c0bb8ab11397dc8306d911505cae2990 (from https://pypi.org/simple/google-api-core/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*))

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

@simonw 의 https://github.com/pypa/pip/issues/9011#issuecomment -714025122 :

$ pip install --use-feature=2020-resolver -r requirements.txt
Collecting https://github.com/simonw/goodreads-to-sqlite/archive/f3d5cd1692e8b5f830416512c6778079e500917a.zip (from -r requirements.txt (line 38))
  Downloading https://github.com/simonw/goodreads-to-sqlite/archive/f3d5cd1692e8b5f830416512c6778079e500917a.zip
     | 364 kB 16.8 MB/s
Collecting datasette>=0.50.2
  Downloading datasette-0.50.2-py3-none-any.whl (205 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 205 kB 10.8 MB/s 
Collecting datasette-haversine
  Downloading datasette_haversine-0.1-py3-none-any.whl (6.5 kB)
Collecting datasette-render-markdown>=1.1.2
  Downloading datasette_render_markdown-1.1.2-py3-none-any.whl (8.7 kB)
Collecting datasette-show-errors
  Downloading datasette_show_errors-0.2-py3-none-any.whl (6.3 kB)
Collecting datasette-write
  Downloading datasette_write-0.1-py3-none-any.whl (3.6 kB)
Collecting datasette-init
  Downloading datasette_init-0.2-py3-none-any.whl (2.9 kB)
Collecting dogsheep-beta>=0.9
  Downloading dogsheep_beta-0.9-py3-none-any.whl (10 kB)
Collecting yaml-to-sqlite~=0.3
  Downloading yaml_to_sqlite-0.3-py3-none-any.whl (7.5 kB)
Collecting healthkit-to-sqlite~=0.5
  Downloading healthkit_to_sqlite-0.5-py3-none-any.whl (9.3 kB)
ERROR: Cannot install sqlite-utils>=2.17, -r requirements.txt (line 25), -r requirements.txt (line 28), -r requirements.txt (line 38), -r requirements.txt (line 39) and -r requirements.txt (line 40) because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested sqlite-utils>=2.17
    datasette-init 0.2 depends on sqlite-utils
    dogsheep-beta 0.9 depends on sqlite-utils
    goodreads-to-sqlite 0.4 depends on sqlite-utils>=2.9
    yaml-to-sqlite 0.3 depends on sqlite-utils
    healthkit-to-sqlite 0.5 depends on sqlite-utils~=2.4.4

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

μ΅œμ‹  λ§ˆμŠ€ν„° 브랜치λ₯Ό μ‚¬μš©ν•˜λ €κ³ ν–ˆμ§€λ§Œ 차이점이 보이지 μ•ŠμŠ΅λ‹ˆλ‹€. μ›λž˜ κ²Œμ‹œ ν•œ λͺ…령을 μ‹€ν–‰ν•˜λ €κ³ ν•˜λ©΄ pipκ°€ μ—¬μ „νžˆ μ€‘λ‹¨λ©λ‹ˆλ‹€. μ•„λ§ˆλ„ λ‚΄κ°€ μ˜³μ€ μΌμ„ν•˜κ³  μžˆμ§€λŠ” μ•Šμ§€λ§Œ ν‘œμ€€ python:3.7 도컀 이미지와 기본적으둜 μƒˆλ‘œμš΄ virtualenv의 macOSμ—μ„œ λͺ¨λ‘ μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

$ docker run --entrypoint=bash -it python:3.7
...
root<strong i="7">@24eb69007fc3</strong>:/# git clone https://github.com/pypa/pip.git
Cloning into 'pip'...
...

root<strong i="8">@24eb69007fc3</strong>:/# cd pip/
root<strong i="9">@24eb69007fc3</strong>:/pip# pip install -e .
...
Successfully installed pip

root<strong i="10">@24eb69007fc3</strong>:/pip# git branch -v
* master 00e531a16 Merge pull request #9017 from pradyunsg/backtracking-messaging

root<strong i="11">@24eb69007fc3</strong>:/pip# pip list
Package    Version   Location
---------- --------- --------
pip        20.3.dev0 /pip/src
setuptools 50.3.2
wheel      0.35.1

root<strong i="12">@24eb69007fc3</strong>:/pip# pip install --use-feature=2020-resolver "google-api-core>1.18.0,<1.21.0" "google-cloud-monitoring>=2.0.0"
Collecting google-api-core<1.21.0,>1.18.0
  Using cached google_api_core-1.20.1-py2.py3-none-any.whl (90 kB)
Requirement already satisfied: setuptools>=34.0.0 in /usr/local/lib/python3.7/site-packages (from google-api-core<1.21.0,>1.18.0) (50.3.2)
Collecting google-cloud-monitoring>=2.0.0
  Using cached google_cloud_monitoring-2.0.0-py2.py3-none-any.whl (287 kB)
Collecting pytz
  Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)
Collecting googleapis-common-protos<2.0dev,>=1.6.0
  Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB)
Collecting requests<3.0.0dev,>=2.18.0
  Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB)
Collecting protobuf>=3.12.0
  Using cached protobuf-3.13.0-cp37-cp37m-manylinux1_x86_64.whl (1.3 MB)
Requirement already satisfied: setuptools>=34.0.0 in /usr/local/lib/python3.7/site-packages (from google-api-core<1.21.0,>1.18.0) (50.3.2)
Collecting six>=1.10.0
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting google-auth<2.0dev,>=1.14.0
  Using cached google_auth-1.22.1-py2.py3-none-any.whl (114 kB)
Requirement already satisfied: setuptools>=34.0.0 in /usr/local/lib/python3.7/site-packages (from google-api-core<1.21.0,>1.18.0) (50.3.2)
Collecting proto-plus>=1.4.0
  Using cached proto-plus-1.11.0.tar.gz (44 kB)
Collecting libcst>=0.2.5
  Using cached libcst-0.3.13-py3-none-any.whl (502 kB)
Collecting google-api-core[grpc]<2.0.0dev,>=1.22.2
  Using cached google_api_core-1.23.0-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.4-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.3-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.2-py2.py3-none-any.whl (91 kB)
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Collecting libcst>=0.2.5
  Using cached libcst-0.3.12-py3-none-any.whl (501 kB)
  Using cached libcst-0.3.11-py3-none-any.whl (501 kB)
  Using cached libcst-0.3.10-py3-none-any.whl (498 kB)
  Using cached libcst-0.3.9-py3-none-any.whl (496 kB)
  Using cached libcst-0.3.8-py3-none-any.whl (488 kB)
  Using cached libcst-0.3.7-py3-none-any.whl (487 kB)
  Using cached libcst-0.3.6-py3-none-any.whl (481 kB)
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
  Using cached libcst-0.3.5-py3-none-any.whl (479 kB)
  Using cached libcst-0.3.4-py3-none-any.whl (476 kB)
  Using cached libcst-0.3.3-py3-none-any.whl (465 kB)
  Using cached libcst-0.3.2-py3-none-any.whl (460 kB)
  Using cached libcst-0.3.1-py3-none-any.whl (445 kB)
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime.If you want to abort this run, you can press Ctrl + C to do so.To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking
  Using cached libcst-0.3.0-py3-none-any.whl (433 kB)
  Using cached libcst-0.2.7-py3-none-any.whl (431 kB)
  Using cached libcst-0.2.6-py3-none-any.whl (430 kB)
  Using cached libcst-0.2.5-py3-none-any.whl (368 kB)
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime.If you want to abort this run, you can press Ctrl + C to do so.To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking

그리고 λ§‰νžˆκ²Œλ©λ‹ˆλ‹€. μ·¨μ†Œν•˜κΈ° 전에 μ•½ 30 λΆ„ λ™μ•ˆ κ·ΈλŒ€λ‘œ λ‘μ—ˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ 이것은 20.2.4에 κ΅­ν•œλ˜μ§€ μ•ŠλŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ 20.2의 λ‹€λ₯Έ 버전 ( 2020-resolver ν”Œλž˜κ·Έκ°€μžˆλŠ” λͺ¨λ“  릴리슀)μ—μ„œ λ™μΌν•œ λ¬΄ν•œ 루프 문제λ₯Ό μΌμœΌν‚¬ μˆ˜μžˆμ—ˆμŠ΅λ‹ˆλ‹€ (μœ„μ— κ²Œμ‹œ ν•œ 것과 μ•½κ°„ 닀름).

pip install --use-feature=2020-resolver "apache-beam[gcp]==2.25.0" google-api-core==1.20.1

κ°μ‚¬ν•©λ‹ˆλ‹€ @DanSimon! apache-beam[gcp] 예제둜 μž¬ν˜„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€ (λ¦¬μ‘Έλ²„μ˜ μž‘μ—… λ‘œκΉ…μ„ κ°œμ„ ν•˜κΈ°μœ„ν•œ λ§ˆμ΄λ„ˆ 패치 포함) :

$ pip install --use-feature=2020-resolver "apache-beam[gcp]==2.25.0" google-api-core==1.20.1
Collecting apache-beam[gcp]==2.25.0
  Using cached apache_beam-2.25.0-cp38-cp38-manylinux2010_x86_64.whl (10.3 MB)
Collecting google-api-core==1.20.1
  Using cached google_api_core-1.20.1-py2.py3-none-any.whl (90 kB)
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core==1.20.1) (41.2.0)
Collecting numpy<2,>=1.14.3
  Using cached numpy-1.19.2-cp38-cp38-manylinux2010_x86_64.whl (14.5 MB)
Collecting future<1.0.0,>=0.18.2
  Using cached future-0.18.2.tar.gz (829 kB)
Collecting pymongo<4.0.0,>=3.8.0
  Using cached pymongo-3.11.0-cp38-cp38-manylinux2014_x86_64.whl (530 kB)
Collecting protobuf<4,>=3.12.2
  Using cached protobuf-3.13.0-cp38-cp38-manylinux1_x86_64.whl (1.3 MB)
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core==1.20.1) (41.2.0)
Collecting pydot<2,>=1.2.0
  Using cached pydot-1.4.1-py2.py3-none-any.whl (19 kB)
Collecting python-dateutil<3,>=2.8.0
  Using cached python_dateutil-2.8.1-py2.py3-none-any.whl (227 kB)
Collecting typing-extensions<3.8.0,>=3.7.0
  Using cached typing_extensions-3.7.4.3-py3-none-any.whl (22 kB)
Collecting pyarrow<0.18.0,>=0.15.1
  Using cached pyarrow-0.17.1-cp38-cp38-manylinux2014_x86_64.whl (63.8 MB)
Collecting httplib2<0.18.0,>=0.8
  Using cached httplib2-0.17.4-py3-none-any.whl (95 kB)
Collecting crcmod<2.0,>=1.7
  Using cached crcmod-1.7.tar.gz (89 kB)
Collecting mock<3.0.0,>=1.0.1
  Using cached mock-2.0.0-py2.py3-none-any.whl (56 kB)
Collecting hdfs<3.0.0,>=2.1.0
  Using cached hdfs-2.5.8.tar.gz (41 kB)
Collecting requests<3.0.0,>=2.24.0
  Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB)
Collecting grpcio<2,>=1.29.0
  Using cached grpcio-1.33.2-cp38-cp38-manylinux2014_x86_64.whl (3.8 MB)
Collecting avro-python3!=1.9.2,<1.10.0,>=1.8.1
  Using cached avro-python3-1.9.2.1.tar.gz (37 kB)
Collecting dill<0.3.2,>=0.3.1.1
  Using cached dill-0.3.1.1.tar.gz (151 kB)
Collecting fastavro<2,>=0.21.4
  Using cached fastavro-1.0.0.post1-cp38-cp38-manylinux2014_x86_64.whl (1.7 MB)
Collecting pytz>=2018.3
  Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)
Collecting oauth2client<5,>=2.0.1
  Using cached oauth2client-4.1.3-py2.py3-none-any.whl (98 kB)
Collecting google-cloud-build<3,>=2.0.0
  Using cached google_cloud_build-2.0.0-py2.py3-none-any.whl (67 kB)
Collecting google-auth<2,>=1.18.0
  Using cached google_auth-1.22.1-py2.py3-none-any.whl (114 kB)
Requirement already satisfied: setuptools>=34.0.0 in ./pythonenv3.8/lib/python3.8/site-packages (from google-api-core==1.20.1) (41.2.0)
Collecting google-apitools<0.5.32,>=0.5.31
  Using cached google-apitools-0.5.31.tar.gz (173 kB)
Collecting google-cloud-spanner<2,>=1.13.0
  Using cached google_cloud_spanner-1.19.1-py2.py3-none-any.whl (255 kB)
Collecting google-cloud-dlp<2,>=0.12.0
  Using cached google_cloud_dlp-1.0.0-py2.py3-none-any.whl (169 kB)
Collecting grpcio-gcp<1,>=0.2.2
  Using cached grpcio_gcp-0.2.2-py2.py3-none-any.whl (9.4 kB)
Collecting google-cloud-language<2,>=1.3.0
  Using cached google_cloud_language-1.3.0-py2.py3-none-any.whl (83 kB)
Collecting google-cloud-core<2,>=0.28.1
  Using cached google_cloud_core-1.4.3-py2.py3-none-any.whl (27 kB)
Collecting google-cloud-videointelligence<2,>=1.8.0
  Using cached google_cloud_videointelligence-1.16.0-py2.py3-none-any.whl (183 kB)
Collecting google-cloud-datastore<2,>=1.7.1
  Using cached google_cloud_datastore-1.15.3-py2.py3-none-any.whl (134 kB)
Collecting cachetools<5,>=3.1.0
  Using cached cachetools-4.1.1-py3-none-any.whl (10 kB)
Collecting google-cloud-pubsub<2,>=0.39.0
  Using cached google_cloud_pubsub-1.7.0-py2.py3-none-any.whl (144 kB)
Collecting google-cloud-bigquery<2,>=1.6.0
  Using cached google_cloud_bigquery-1.28.0-py2.py3-none-any.whl (187 kB)
  Using cached google_cloud_bigquery-1.27.2-py2.py3-none-any.whl (172 kB)
  Using cached google_cloud_bigquery-1.26.1-py2.py3-none-any.whl (170 kB)
  Using cached google_cloud_bigquery-1.26.0-py2.py3-none-any.whl (170 kB)
  Using cached google_cloud_bigquery-1.25.0-py2.py3-none-any.whl (169 kB)
Collecting google-cloud-vision<2,>=0.38.0
  Using cached google_cloud_vision-1.0.0-py2.py3-none-any.whl (435 kB)
Collecting google-cloud-bigtable<2,>=0.31.1
  Using cached google_cloud_bigtable-1.5.1-py2.py3-none-any.whl (266 kB)
Collecting six>=1.10.0
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
Collecting googleapis-common-protos<2.0dev,>=1.6.0
  Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB)
Collecting pyparsing>=2.1.4
  Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
Collecting pbr>=0.11
  Using cached pbr-5.5.1-py2.py3-none-any.whl (106 kB)
Collecting docopt
  Using cached docopt-0.6.2.tar.gz (25 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2020.6.20-py2.py3-none-any.whl (156 kB)
Collecting chardet<4,>=3.0.2
  Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
  Using cached urllib3-1.25.11-py2.py3-none-any.whl (127 kB)
Collecting idna<3,>=2.5
  Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
Collecting pyasn1-modules>=0.0.5
  Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB)
Collecting rsa>=3.1.4
  Using cached rsa-4.6-py3-none-any.whl (47 kB)
Collecting pyasn1>=0.1.7
  Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
Collecting google-api-core[grpc]<2.0.0dev,>=1.22.0
  Using cached google_api_core-1.23.0-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.4-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.3-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.2-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.1-py2.py3-none-any.whl (91 kB)
  Using cached google_api_core-1.22.0-py2.py3-none-any.whl (91 kB)
Backtracking pyasn1 0.4.8 LinkCandidate
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Collecting pyasn1>=0.1.7
  Downloading pyasn1-0.4.7-py2.py3-none-any.whl (76 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 76 kB 2.7 MB/s 
Backtracking pyasn1 0.4.7 LinkCandidate
  Downloading pyasn1-0.4.6-py2.py3-none-any.whl (75 kB)
     |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 75 kB 2.5 MB/s 
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime.If you want to abort this run, you can press Ctrl + C to do so.To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
INFO: pip is looking at multiple versions of this package to determine which version is compatible with other requirements. This could take a while.
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime.If you want to abort this run, you can press Ctrl + C to do so.To improve how pip performs, tell us what happened here: https://pip.pypa.io/surveys/backtracking
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate
Backtracking pyasn1 0.4.7 LinkCandidate
Backtracking pyasn1 0.4.6 LinkCandidate
Backtracking rsa 4.6 LinkCandidate

문제λ₯Ό ν™•μΈν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. sarugaku / resolvelib # 60에 제좜 된 μˆ˜μ • 사항은 λ¬Έμ œμ— λŒ€ν•œ 이해도λ₯Ό μ„€λͺ…ν–ˆμŠ΅λ‹ˆλ‹€.

@uranusjr λ‚˜λŠ”μ΄ 문제λ₯Ό μž¬ν˜„ν•˜λŠ” 사내 방법이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

PR을 μ–΄λ–»κ²Œ ν…ŒμŠ€νŠΈ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” ν™•μ‹€ν•˜μ§€ μ–Όλ§ˆλ‚˜ resolvelib 에 톡합 pip ...

@romaingz λ‚˜λŠ” μ‚¬λžŒλ“€μ΄ ν…ŒμŠ€νŠΈ ν•  수 μžˆλ„λ‘ λ³€κ²½ 사항을 κ°€μ Έ 였기 μœ„ν•΄ PR μž‘μ—… μ€‘μž…λ‹ˆλ‹€.

λ‚΄ 포크에 패치 된 핍을 λ°€μ–΄ λ„£μ—ˆμŠ΅λ‹ˆλ‹€. λ‹€μŒμœΌλ‘œ ν…ŒμŠ€νŠΈ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

python -m pip install -U https://github.com/uranusjr/pip/archive/resolvelib-dev.zip

μœ„μ˜ apache-beam[gcp] + google-api-core μ˜ˆμ œμ—μ„œμ΄ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό 생성 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

ERROR: Cannot install apache-beam, apache-beam, apache-beam, apache-beam, apache-beam, apache-beam,
apache-beam, apache-beam, apache-beam, apache-beam, apache-beam, apache-beam, google-api-core==1.20.1,
google-api-core==1.20.1, google-api-core==1.20.1, google-api-core==1.20.1, google-api-core==1.20.1,
google-api-core==1.20.1, google-api-core[grpc] 1.22.0, google-api-core[grpc] 1.22.1,
google-api-core[grpc] 1.22.2, google-api-core[grpc] 1.22.3, google-api-core[grpc] 1.22.4 and
google-api-core[grpc] 1.23.0 because these package versions have conflicting dependencies.
ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

(λ©”μ‹œμ§€ κ°œμ„ μ— λŒ€ν•œ λ…Όμ˜λŠ” # 8495λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€. μ§€κΈˆμ€ κ·ΈλŒ€λ‘œ λ‘κ² μŠ΅λ‹ˆλ‹€.)

κ·ΈλŸ¬λ‚˜ ν•΄κ²° ν”„λ‘œκ·Έλž¨μ΄ μš”κ΅¬ 사항을 μ‹œλ„ν•˜λŠ” μˆœμ„œκ°€ 결정적이지 μ•ŠκΈ° λ•Œλ¬Έμ— 였λ₯˜ λ©”μ‹œμ§€κ°€ 일관성이 μ—†μŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. 그리고 결정적 μˆœμ„œλ₯Ό μΆ”κ°€ν•˜κ³  μˆ˜μ • 사항을 μ œκ±°ν•˜λ©΄ λ¬΄ν•œ 해상도λ₯Ό 생성 ν•  수 μ—†μŠ΅λ‹ˆλ‹€ 😞

κ·Έλž˜μ„œ μ–΄μ œ ν•˜λ£¨ 쒅일 μ‹€νŒ¨ν–ˆλ˜ 것이 였늘 ( @uranusjr 의 νŒ¨μΉ˜μ—†μ΄) μ‹€νŒ¨λ₯Ό λ©ˆμ·„μŠ΅λ‹ˆλ‹€.

μΌκ΄€λœ κ²°κ³Όλ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•΄ μ‹€νŒ¨ν•œ μ‹œλ„μ—μ„œ κ²€μƒ‰ν•˜κ³  λ‹€λ₯Έ μ‹œλ„μ—μ„œ μž¬μ‚¬μš© ν•  μˆ˜μžˆλŠ” μ‹œλ“œκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

μΌκ΄€λœ κ²°κ³Όλ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•΄ μ‹€νŒ¨ν•œ μ‹œλ„μ—μ„œ κ²€μƒ‰ν•˜κ³  λ‹€λ₯Έ μ‹œλ„μ—μ„œ μž¬μ‚¬μš© ν•  μˆ˜μžˆλŠ” μ‹œλ“œκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” κ·Έλ ‡κ²Œ μƒκ°ν•˜μ§€ μ•ŠλŠ”λ‹€-그것은 νŒŒμ΄μ¬μ΄ν•˜λŠ” ν•΄μ‹œ λ¬΄μž‘μœ„ 화에 의쑴 ν•  κ°€λŠ₯성이 λ†’λ‹€ (μ •λ ¬ μˆœμ„œ 논리가 λ™μΌν•œ ν‚€λ₯Ό 가진 μ—¬λŸ¬ ν•­λͺ©μ„ μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— # 9100μ—μ„œ μˆ˜μ • 됨).

이 λ¬Έμ œλŠ” 였늘 cheroot ν”„λ‘œμ νŠΈμ—μ„œ λ‚˜λ₯Ό λ¬Όμ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” cherrypy / cheroot @ 5de9b053을 ν™•μΈν•˜κ³  PIP_USE_FEATURE=2020-resolver 을 μ„€μ •ν•˜κ³  tox λ₯Ό μ‹€ν–‰ν–ˆλŠ”λ° 쀑단 된 κ²ƒμ²˜λŸΌ λ³΄μ˜€μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것을 μ·¨μ†Œν•˜κ³ , μ •λ¦¬ν•˜κ³ , tox -vvv λ‹€μ‹œ μ‹œμž‘ν–ˆκ³ , pytest와 컀버리지λ₯Ό μ„€μΉ˜ν•˜λŠ” 것에 κ΄€ν•œ λ©”μ‹œμ§€λ₯Ό λ³Ό 수 μžˆμ—ˆλ‹€. κΈ°λŠ₯ ν”Œλž˜κ·Έλ₯Ό μ§€μš°λ©΄ ν…ŒμŠ€νŠΈκ°€ μ˜ˆμƒλŒ€λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€. toxκ°€ μ„€μΉ˜ν•˜λŠ” pip 버전은 20.2.3μž…λ‹ˆλ‹€ (20.2.4도 μ‚¬μš©ν•  수 있음). 아직 더 쑰사 ν•  κΈ°νšŒκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

https://github.com/cherrypy/cheroot/tree/pypa-9011 μ—μ„œ μ €λŠ” 문제λ₯Ό λ³΅μ œν•˜λŠ” 컀밋과 μ œμ•ˆ 된 μˆ˜μ • 사항을 μ μš©ν•˜λŠ” 컀밋 두 개λ₯Ό μ»€λ°‹ν–ˆμŠ΅λ‹ˆλ‹€. μ œμ•ˆ 된 μˆ˜μ • 사항을 μ μš©ν•œ ν›„ μ½”λ“œκ°€ 더 이상 μ€‘λ‹¨λ˜μ§€ μ•Šμ§€λ§Œ 이제 μΆ©λŒμ„ κ°μ§€ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ΄λŠ” μˆ˜μ •μ΄ μ‹€μ œλ‘œ 문제λ₯Ό ν•΄κ²°ν•œλ‹€λŠ” 것을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

흠. λ‚΄κ°€ λ„ˆλ¬΄ 빨리 말 ν–ˆλ‚˜λ΄. ν•΄λ‹Ή 브랜치의 일뢀 λΉŒλ“œλŠ” λΉ λ₯΄κ²Œ (~ 90 초) μ‹€νŒ¨ν–ˆμ§€λ§Œ λ‹€λ₯Έ λΉŒλ“œλŠ” 계속 μ‹€ν–‰λ©λ‹ˆλ‹€ (~ 20m). λ‚΄ 둜컬 μ›Œν¬ μŠ€ν…Œμ΄μ…˜μ—μ„œ 일뢀 싀행은 μ€‘λ‹¨λ˜κ³  λ‹€λ₯Έ 싀행은 μ™„λ£Œλ©λ‹ˆλ‹€.

λ˜ν•œ λΆˆν™•μ‹€ν•œ 문제 (# 9100μ—μ„œ μˆ˜μ • 됨)의 영ν–₯을받을 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. master와 ν•¨κ»˜ 쀑단 문제λ₯Ό μž¬ν˜„ ν•  수 μžˆλ‹€λ©΄ μ‹œλ„ν•΄ λ³Ό 수 μžˆμŠ΅λ‹ˆκΉŒ (μΌκ΄€λ˜κ²Œ μ‹€νŒ¨ν•˜κ±°λ‚˜ μ„±κ³΅ν•΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€)?

확인-pip λ§ˆμŠ€ν„°μ—μ„œ μ‹€ν–‰ν•˜λ©΄ ν…ŒμŠ€νŠΈκ°€ μ•ˆμ •μ  으둜

감사! λ¬Έμ œκ°€λ˜λŠ” μš”κ΅¬ 사항을 λ‹€μŒμœΌλ‘œ μ œν•œν–ˆμŠ΅λ‹ˆλ‹€.

pytest-mock>=1.11.0
pytest-sugar>=0.9.3
pytest-testmon<1.0.0
coverage==5.3

이듀 쀑 ν•˜λ‚˜λ₯Ό μ œκ±°ν•˜λ©΄ ν•΄κ²°μžκ°€ μ†”λ£¨μ…˜μ„ 생성 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό κ΅¬μΆ•ν•˜κ³  κ±°κΈ°μ—μ„œ μž‘μ—…ν•˜λ €κ³  λ…Έλ ₯ν•  κ²ƒμž…λ‹ˆλ‹€.


μ°Έκ³  (μžμ‹ μ—κ²Œ) : ν˜„μž¬ 가섀은 ν•΄κ²°μžκ°€ ν•˜λ‚˜ μ΄μƒμ˜ κ΄€λ ¨λ˜μ§€ μ•Šμ€ μΆ©λŒμ„ λ°œκ²¬ν•˜λ©΄μ΄ λ¬Έμ œκ°€ 트리거 될 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. ν•˜λ‚˜λ₯Όλ³΄κ³  μ—­ μΆ”μ ν•˜κ³  λ‹€λ₯Έ ν•˜λ‚˜λ₯Όλ³΄κ³  μ—­ μΆ”μ ν•˜κ³  첫 번째 것을 λ‹€μ‹œ μ³€μŠ΅λ‹ˆλ‹€.

이 λ²„κ·ΈλŠ” μΆ”κ°€ κΈ°λŠ₯κ³Ό κ΄€λ ¨μ΄μžˆμ„ 수 있으며 μš”κ΅¬ 사항에 사전 릴리슀λ₯Ό μ–ΈκΈ‰ ν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 이것은 λ‚΄κ°€ νŒ¨ν‚€μ§€μ™€ νŒ¨ν‚€μ§€ ν”ŒλŸ¬κ·ΈμΈ 사이에 λμ—†λŠ” λ£¨ν”„λ‘œ 끝났을 λ•Œ λ‚΄ κ²½μš°μ— μΌμ–΄λ‚œ μΌμž…λ‹ˆλ‹€. λ‚˜λŠ” 프리 릴리즈λ₯Ό ν”Όν•¨μœΌλ‘œμ¨ ν•΄κ²°ν•  수 μžˆμ—ˆλŠ”λ°, 이것은 λ˜ν•œ ꢌμž₯λœλ‹€. κ·ΈλŸ¬λ‚˜ λ‚˜λŠ”μ΄ 버그가 μ§€λ‚œ 3 κ°œμ›” λ™μ•ˆ 적어도 3 번, 그리고 ν•œ 번만 ... λ‚˜μ˜ μ •μ›μ—μ„œ λ§Œλ‚œ 것이 두렡닀.

μ—¬κΈ°μžˆλŠ” μ‚¬λžŒλ“€μ€ 이 μ—…λ°μ΄νŠΈμ— 관심

이것은 이제 pip 20.3을 λ¦΄λ¦¬μŠ€ν•˜λŠ” 두 가지 μ£Όμš” 차단기 쀑 ν•˜λ‚˜μ΄λ©°, μ½λŠ” μ‚¬λžŒλ“€μ—κ²ŒλŠ” FYIμž…λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈ : 이에 λŒ€ν•œ μˆ˜μ • 사항이 ν•¨κ»˜ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. pip 20.3 (μˆ˜μ • 사항을 포함해야 함)이 곧 λ°œμƒν•  κ°€λŠ₯성이 μžˆμ§€λ§Œ 포크 ( 이 μ£Όμ„μ—μ„œ μ–ΈκΈ‰ )λ₯Ό ν¬ν•¨ν•˜λ„λ‘ μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€. 자유둭게 μ‚¬μš©ν•΄λ³΄κ³  λ¬Έμ œκ°€ μ‹€μ œλ‘œ ν•΄κ²°λ˜λŠ”μ§€λ³΄κ³ ν•˜μ‹­μ‹œμ˜€!

이 "resolvelib-dev"μ œμ•ˆ νŒ¨μΉ˜λŠ” λ‚΄ μžμ‹ μ˜ λ¬΄ν•œ ν•΄κ²° 사둀λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€. https://github.com/pypa/pip/issues/9112#issuecomment -735222069

λ‚˜λŠ” μ„€μΉ˜ν•˜λ €κ³  λ¬΄ν•œ 루프λ₯Ό μ–»κ³  λ‹€μŒ requirements.txt 와 pip==20.3 λ§₯에 μ‹ μ„ ν•œ venv, 파이썬 버전 3.8.5λ‘œμ—κ²Œ :

tensorboard==2.2.2
torch==1.7.0
tqdm>=4.54

nltk==3.5.0
transformers==3.5.0
tokenizers==0.9.4
jsonlines>=1.2
sacrebleu>=1.4

pytest>=6.1
pytest-cov>=2.10
codecov>=2.1
flake8>=3.8
black==20.8b1

μ„€μΉ˜λŠ” κ²°κ΅­ λ‹€μŒκ³Ό 같은 좜λ ₯이 λ°˜λ³΅λ˜λŠ” λ£¨ν”„μ—μ„œ 멈 μΆ₯λ‹ˆ λ‹€.

Requirement already satisfied: typing-extensions>=3.7.4 in ./testenv/lib/python3.8/site-packages (from black==20.8b1->-r requirements.txt (line 15)) (3.7.4.3)
Requirement already satisfied: regex>=2020.1.8 in ./testenv/lib/python3.8/site-packages (from black==20.8b1->-r requirements.txt (line 15)) (2020.11.13)
Requirement already satisfied: setuptools>=41.0.0 in ./testenv/lib/python3.8/site-packages (from tensorboard==2.2.2->-r requirements.txt (line 1)) (44.0.0)

--use-feature=2020-resolver ν™œμ„±ν™” 된 20.2.4 좜λ ₯ :

ERROR: Cannot install tokenizers==0.9.4 and transformers 3.5.0 because these package versions have conflicting dependencies.

.. μ„€μΉ˜κ°€ μ’…λ£Œλ©λ‹ˆλ‹€.

νŽΈμ§‘ : transformers==4.0.0 μ„€μΉ˜λ₯Ό μš”κ΅¬ν•˜μ—¬ μΆ©λŒμ„ μˆ˜μ •ν•©λ‹ˆλ‹€.

재개.

이것도 λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€.

λ‹€μŒμ€ pip 20.3을 μ‚¬μš©ν•˜μ—¬ λ‚˜λ₯Ό μœ„ν•΄ μž¬ν˜„ν•˜λŠ” μš”κ΅¬ 사항 νŒŒμΌμž…λ‹ˆλ‹€.
pip --version pip 20.3 from /home/elijah/venvs/pipresolve/lib64/python3.8/site-packages/pip (python 3.8)

boto3
botocore
cryptography
elasticsearch
gcloud
google-api-python-client
junit-xml
junit2html
junitparser
kubernetes>=8.0.0,<9.0.0
openshift==0.8.9

20.2.4μ—μ„œλŠ” μ„€μΉ˜μ— 였λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.
openshift 0.8.9 requires urllib3<1.25, but you'll have urllib3 1.26.2 which is incompatible. ν•˜μ§€λ§Œ μ„€μΉ˜κ°€ μ™„λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

@tomhosking의 사건은 κ²°κ΅­ λ‚˜μ—κ²Œ μ€€λ‹€

ERROR: Cannot install -r r.txt (line 6) and tokenizers==0.9.4 because these package versions have conflicting dependencies.

The conflict is caused by:
    The user requested tokenizers==0.9.4
    transformers 3.5.0 depends on tokenizers==0.9.3

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/user_guide/#fixing-conflicting-dependencies

두 번째 μž‘μ—…μ„ μ™„λ£Œν•˜μ§€λŠ” μ•Šμ•˜μ§€λ§Œ 좜λ ₯으둜 νŒλ‹¨ν•˜λŠ” μ΅œμ’… 였λ₯˜λ„ λ°œμƒν•  κ²ƒμœΌλ‘œ μ˜ˆμƒλ©λ‹ˆλ‹€.

두 경우 λͺ¨λ‘ λ™μΌν•œ νŒ¨ν‚€μ§€λ₯Ό λ°˜λ³΅ν•΄μ„œ 보여주기 λ•Œλ¬Έμ— 좜λ ₯이 멈좘 κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μžμ„Ένžˆ μ‚΄νŽ΄λ³΄λ©΄ λ¦¬μ‘Έλ²„λŠ” 가끔씩 λ‹€λ₯Έ 것을 뱉어내어 진행 상황을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

@tomhosking의 예 :

  Downloading codecov-2.1.5-py2.py3-none-any.whl (16 kB)
(a ton of setuptools and wheel lines)
  Downloading codecov-2.1.4-py2.py3-none-any.whl (16 kB)
(a ton of setuptools and wheel lines)
  Downloading codecov-2.1.3.tar.gz (18 kB)
(goes on and on)

@kdelee의 예 :

  Using cached junit-xml-1.8.tar.gz (10.0 kB)
(a ton of setuptools lines)
  Using cached junit-xml-1.7.tar.gz (9.1 kB)
(a ton of setuptools lines)
  Downloading junit-xml-1.6.tar.gz (9.1 kB)
(...)

κ·Έλž˜μ„œ μ €λŠ” 리쑸버에 논리적 였λ₯˜κ°€ μžˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 단지 pip의 좜λ ₯이 (μ•„μ£Ό μ•½κ°„) λ‹€λ₯Έ 것을 μ‹œλ„ν•˜λŠ” 방식을 잘 ν‘œν˜„ν•˜μ§€ λͺ»ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

@kdelee의 예 :
κ·Έλž˜μ„œ μ €λŠ” 리쑸버에 논리적 였λ₯˜κ°€ μžˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 단지 pip의 좜λ ₯이 (μ•„μ£Ό μ•½κ°„) λ‹€λ₯Έ 것을 μ‹œλ„ν•˜λŠ” 방식을 잘 ν‘œν˜„ν•˜μ§€ λͺ»ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

그것은 λ―Ώμ„λ§Œν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ 이것이 "λ¬΄ν•œ"μž¬κ·€μ˜ κ²½μš°λŠ” μ•„λ‹ˆμ§€λ§Œ, μ œκ°€ 기닀릴 μˆ˜μžˆλŠ” 것보닀 더 많이 μ‹œλ„ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ (ν˜„μž¬ pip μ„€μΉ˜μ—μ„œ 3 μ‹œκ°„ 이상 λ°˜λ³΅λ˜λŠ” μž‘μ—…μ΄ μžˆμŠ΅λ‹ˆλ‹€.) 그리고 μ‹€μ œλ‘œ 무엇이 잘λͺ»λ˜μ—ˆλŠ”지 λ§ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. https://github.com/pypa/pip/issues/9185 처럼 λ“€λ¦¬λŠ” 것은 쒋은 μƒκ°μž…λ‹ˆλ‹€.

@uranusjrλ₯Ό 확인해 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€! @kdelee 와 λΉ„μŠ·

이 μ‹œμ μ— λ“€μ–΄μ˜€λŠ” λ³΄κ³ μ„œλŠ” μ›λž˜ λͺ©μ  (20.3의 릴리슀 μ°¨λ‹¨κΈ°λ‘œ 좔적 ν•œ λ‚΄μš©)κ³Ό λ‹€λ¦…λ‹ˆλ‹€.

20.2.4 λŒ€ 20.3 λ³΄κ³ μ„œλ₯Ό λ³„λ„μ˜ 문제둜 μœ μ§€ν•˜κ³  μ‹ΆκΈ° λ•Œλ¬Έμ— # 9187에 μ°¬μ„±ν•˜μ—¬ μ’…λ£Œν•˜κ² μŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰