Pip: ImportError: 'pip._internal.distributions.source'์—์„œ 'SourceDistribution' ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 10์›” 15์ผ  ยท  101์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: pypa/pip

ํ™˜๊ฒฝ

Conda๋ฅผ ์‚ฌ์šฉํ•˜๋Š” CircleCI(์˜ˆ: https://circleci.com/gh/peterjc/tapbi-pict/1073)

  • pip ๋ฒ„์ „: pip-19.2.3(conda์—์„œ) 19.3์œผ๋กœ ์—…๋ฐ์ดํŠธ๋จ( pip install --upgrade pip setuptools )
  • ํŒŒ์ด์ฌ ๋ฒ„์ „: python-3.7.3
  • ์šด์˜ ์ฒด์ œ: ๋ฆฌ๋ˆ…์Šค

๋‚ด ์ฝ”๋“œ๋ฅผ ์•ฝ๊ฐ„๋งŒ ๋ณ€๊ฒฝํ–ˆ์ง€๋งŒ ์˜ค๋Š˜ ๋‚ด Python ๋„๊ตฌ์˜ ๋นŒ๋“œ/์„ค์น˜ ๋‹จ๊ณ„์—์„œ CircleCI ๋นŒ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ถ„๊ธฐ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ํƒ€์ด๋ฐ์€ PyPI์˜ pip 19.3 ๋ฆด๋ฆฌ์Šค์— ๋งž์Šต๋‹ˆ๋‹ค.

์„ค๋ช…

pip์˜ ์ตœ๊ทผ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ผ๋ถ€ ๋‚ด๋ถ€ ํŒŒ์ผ์„ ์ด๋™ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์ œ ์ถ”์ธก์œผ๋กœ๋Š” #6830์ž…๋‹ˆ๋‹ค.

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

๋ฒˆ์‹ ๋ฐฉ๋ฒ•

https://github.com/peterjc/tapbi-pict/blob/9fcec2da60e6e6ae5cf7ee6ad4b53dcc3a40cfe7/.circleci/config.yml#L ์„ ์‹คํ–‰ ์ค‘์ธ https://circleci.com/gh/peterjc/tapbi-pict/1073์˜ ์ „์ฒด ์ถœ๋ ฅ

...
python setup.py sdist --formats=gztar
python setup.py bdist_wheel
pip install dist/thapbi_pict-*.whl

์‚ฐ์ถœ

Traceback (most recent call last):
  File "/opt/conda/bin/pip", line 7, in <module>
    from pip._internal import main
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
    from pip._internal.commands import (
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
    from pip._internal.commands.download import DownloadCommand
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/download.py", line 10, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
    from pip._internal.distributions import (
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/opt/conda/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
Exited with code 1
auto-locked support

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@PabloCastellano ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋‚ด ์‹ฌ์žฅ ๋ฐ•๋™์ˆ˜๊ฐ€ ๋” ์ด์ƒ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ ์—ฌ๊ธฐ์—์„œ ๋Œ“๊ธ€์„ ๋ฌด์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. :)

bugfix ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ์ด ๊ฒŒ์‹œ๋ฌผ์— ๐Ÿ‘๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์˜๊ฒฌ์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.

๋ชจ๋“  101 ๋Œ“๊ธ€

CircleCI(๋˜๋Š” conda?) ์„ค์ •์—์„œ ์ด๋Ÿฌํ•œ ๋‚ด๋ถ€ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์•„๋Š” ๊ฒƒ์ด ์ •๋ง ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์žฌ๊ตฌ์„ฑ์€ ์™ธ๋ถ€ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์•Œ๊ณ  ์žˆ๋Š” ์ฃผ์š” ๋ฌธ์ œ๋Š” ๋ž˜ํผ ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” main์˜ ์žฌ๊ตฌ์„ฑ์ด์ง€๋งŒ ์ด๊ฒƒ์€ ์•ฝ๊ฐ„ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์ค„ ์ˆ˜ ์žˆ๋Š” ํ†ต์ฐฐ๋ ฅ์€ ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

pip install --upgrade pip setuptools ์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋จ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/peterjc/tapbi-pict/commit/4060404c1034a676439aef1369260022577a6627
https://circleci.com/gh/peterjc/tapbi-pict/1074

์ฆ‰, pip 19.2.3์—์„œ 19.3์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ €๋Š” ์˜๋„์ ์œผ๋กœ CircleCI ์ œ๊ณต Python์ด ์•„๋‹ˆ๋ผ Conda ์ œ๊ณต Python์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Python์„ ํ˜ผํ•ฉํ•˜์—ฌ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด pip ... ์—์„œ python -m pip ... ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ง€๊ธˆ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…ํ•˜๋ฉด์„œ ๋กœ๊น…์„ ์กฐ๊ธˆ ๋” ์ถ”๊ฐ€ํ•˜๊ณ  ๊นจ์ง„ ๋ฒ„์ „์œผ๋กœ ๋˜๋Œ๋ ธ์Šต๋‹ˆ๋‹ค.

https://circleci.com/gh/peterjc/tapbi-pict/1076

์ด๊ฒƒ์€ ํŠธ๋ ˆ์ด์Šค๋ฐฑ์ด pip install dist/thapbi_pict-*.whl (์ƒˆ๋กœ ๋นŒ๋“œ๋œ ๋‹จ์ผ ํœ ๊ณผ ์ผ์น˜ํ•˜๋Š” ์™€์ผ๋“œ์นด๋“œ)์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜์—ˆ์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

OK, ์‚ฌ์šฉ python -m pip ... ๋ณด๋‹ค๋Š” pip ... ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :

https://circleci.com/gh/peterjc/thapbi-pict/1077
https://github.com/peterjc/tapbi-pict/commit/c168fbb7b61b2670bfb73dfb7ea87605fd17bfaf

๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— from pip._internal import main ๊ฐ€ pip์˜ ๊ฐ„๋‹จํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ์—์„œ ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค(Windows์—์„œ๋Š” ์‹ค์ œ๋กœ ์ข‹์€ ๋น„๊ต๋Š” ์•„๋‹ˆ์ง€๋งŒ ์–ด์จŒ๋“ ...). ๋”ฐ๋ผ์„œ ์—ญ์ถ”์ ์—์„œ ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜๋Š” ์—†์ง€๋งŒ ๊ท€ํ•˜์˜ ํ™˜๊ฒฝ์— ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

CircleCI์—๋Š” VM์— ๋Œ€ํ•œ SSH ์•ก์„ธ์Šค๋กœ ์ž‘์—…์„ ๋‹ค์‹œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์œผ๋ฏ€๋กœ(์‚ฌ์šฉํ•œ ์ ์ด ์—†์Œ) ์ด๋ก ์ ์œผ๋กœ ์ด๊ฒƒ์€ ๋””๋ฒ„๊น…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ง€๊ธˆ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ๊ณ  ์–ด๋Š ์‹œ์ ์—์„œ conda-forge๋Š” pip 19.3๋„ ํŒจํ‚ค์ง€๋กœ ๋งŒ๋“ค ๊ฒƒ์ด๋ฏ€๋กœ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋™์ผํ•œ ์˜ˆ์™ธ๋ฅผ ๋ณด์ง€ ์•Š๋Š” ํ•œ ๋‚ฎ์€ ์šฐ์„  ์ˆœ์œ„๋กœ ๋ณด์ž…๋‹ˆ๊นŒ?

๊ทธ๋ž˜ ์ข‹์•„. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์ง€๊ธˆ์€ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ผ์–ด๋‚˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ณด๊ณ ํ•˜๋Š” ์˜๊ฒฌ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ๋” ํŒŒ๊ณ ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋„์›€์ด ๋  ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

macOS, python: 3.6.9์—์„œ ๋น„์Šทํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ„ฐ๋ฏธ๋„์˜ pip ๋ช…๋ น์ด ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ œ์•ˆ?

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

์ด๊ฒƒ์€ ํ˜„์žฌ ๋„์›€์ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1์‹œ๊ฐ„ ์ „๋ถ€ํ„ฐ CircleCI์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋„์ปค ์ด๋ฏธ์ง€์˜ ๋ฒ„์ „์„ python:3.7 ์—์„œ python:3.7.4๋กœ ๋ณ€๊ฒฝ ํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. (๊ทธ๋ƒฅ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•) . ์ด์™€ ๊ฐ™์ด:

version: 2
...
jobs:
  build:
    docker:
      - image: python:3.7.4
...

์บ์‹ฑ ์‚ฌ์šฉํ•˜์‹œ๋Š” ๋ถ„ ๊ณ„์‹ ๊ฐ€์š”? ์ผ๋ถ€ pip ๋‚ด๋ถ€๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ  ์ด์ „ python ๋ฒ„์ „์˜ ์บ์‹œ๋ฅผ ๋ณต์›ํ•  ๋•Œ pip๊ฐ€ ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. keys ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์„œํด CI ์บ์‹œ๋ฅผ ๋ฌดํšจํ™”ํ•˜๊ณ  ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. (์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค!)

@bgkelly๊ฐ€ ์ œ์•ˆํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์บ์‹œ๋ฅผ ์ง€์šฐ๋Š” ๊ฒƒ๋„ ์ €์—๊ฒŒ

์˜ˆ - ์ €์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค - ์บ์‹œ ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด circleci์— ๋Œ€ํ•œ ์šฐ๋ฆฌ ํŒ€์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. @bgkelly ๊ฐ์‚ฌ

์บ์‹œ ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
requirements.txt ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๊ฒฐ๋˜์ง€๋งŒ ์›ํ•˜๋Š” ์†”๋ฃจ์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ž, ์ด๊ฒƒ์€ CircleCI์˜ ์บ์‹ฑ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ CircleCI ์‚ฌ๋žŒ๋“ค์—๊ฒŒ (์ง€์› ์ฑ„๋„์„ ํ†ตํ•ด) ์—ฐ๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋“ค์ด ์ด๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ณ  ์—ฌ๊ธฐ์— ์ฐจ์ž„์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…• ์นœ๊ตฌ๋“ค,

์ด๊ฒƒ์ด ์–ด๋–ค ์‹์œผ๋กœ๋“  ๋„์›€์ด ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ WeasyPrint๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•˜๋Š” MSYS ์„ค์ •์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

python3-pip ๋ฐ python3-setuptools๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ /usr/lib/python3.7/site-packages/์˜ ๋ชจ๋“  pip ํด๋”๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‘˜ ๋‹ค ๋‹ค์‹œ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

pacman -R python3-pip python3-setuptools
rm -R /usr/lib/python3.7/site-packages/pip
rm -R /usr/lib/python3.7/site-packages/pip-19.3.1.dist-info
pacman -S python3-pip python3-setuptools

๊ณตํ‰ํ•˜๊ฒŒ, ๋‚˜๋Š” ์ด์ œ ์ปดํŒŒ์ผ๋Ÿฌ ๋ฌธ์ œ์— ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ œ๊ฐ€ ๋„์šธ ์ˆ˜ ์žˆ์„์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค....

์ด๊ฒƒ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ๋‹ค๋‹จ๊ณ„ ์„ค์ •์—์„œ ํ•œ ๋„์ปค ์ด๋ฏธ์ง€์—์„œ ๋‹ค๋ฅธ ๋„์ปค ์ด๋ฏธ์ง€๋กœ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋ณต์‚ฌํ•  ๋•Œ ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์†Œ์Šค ์ด๋ฏธ์ง€์—๋Š” pip ์˜ ์ตœ์‹  ๋ฒ„์ „์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๋ฐ˜๋ฉด ๋Œ€์ƒ ์ด๋ฏธ์ง€์—๋Š” pip ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ๋ฒ„์ „์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ์ด๋ฏธ์ง€์˜ ๊ฐ€์ƒ ํ™˜๊ฒฝ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋Œ€์ƒ ์ด๋ฏธ์ง€์— ๋ณต์‚ฌํ•œ ํ›„ ๊ฐ€์ƒ ํ™˜๊ฒฝ site-packages ์•„๋ž˜์— pip-<version>.dist-info ๊ฐœ์˜ ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ( pip ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์•„ ์ด ๋ฌธ์ œ์—์„œ ๋ณด๊ณ ๋œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

์ด๋ฏธ ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋œ ํ™˜๊ฒฝ์— ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ์ด ์ ‘๊ทผ ๋ฐฉ์‹์— ๋‹ค์†Œ ํšŒ์˜์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ํ• ์• ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ํŒจํ‚ค์ง€ ์ถฉ๋Œ ๋ฌธ์ œ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค! :์›ƒ๋‹ค:

์•ˆ๋…•
๋‚ด๋ถ€ ReadTheDocs ์„œ๋ฒ„์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip

ReadTheDocs GUI ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๋นŒ๋“œ ์บ์‹œ๋ฅผ ์ง€์šฐ๋ฉด ๋นŒ๋“œ๊ฐ€ ์„ฑ๊ณตํ•˜์ง€๋งŒ ๋‹ค์Œ์— ๋นŒ๋“œ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ๊นŒ์ง€๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ๋กœ๊ทธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/__main__.py", line 16, in <module>
    from pip._internal import main as _main  # isort:skip # noqa
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
    from pip._internal.commands import (
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
    from pip._internal.commands.download import DownloadCommand
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/download.py", line 10, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
    from pip._internal.distributions import (
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'

์•ˆ๋…•,

๋‚˜๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

OS: ๋ฐ๋น„์•ˆ GNU/๋ฆฌ๋ˆ…์Šค 10(๋ฆฌ๋ˆ…์Šค 4.19.0-6-amd64)
ํ•: 19.3.1
์ฝ˜๋‹ค: 4.7.12
ํŒŒ์ด์ฌ:3.7.4

$ ํ•
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "/home/jiang/anaconda3/bin/pip", 7ํ–‰, in
pip._internal import ๋ฉ”์ธ์—์„œ
ํŒŒ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/__init__.py", 40ํ–‰,
pip._internal.cli.autocompletion ๊ฐ€์ ธ์˜ค๊ธฐ ์ž๋™ ์™„์„ฑ์—์„œ
ํŒŒ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", 8ํ–‰,
pip._internal.cli.main_parser์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ create_main_parser
ํŒŒ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", 11ํ–‰,
pip._internal.commands์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ(
ํŒŒ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", 9ํ–‰, in
pip._internal.commands.download import DownloadCommand์—์„œ
ํŒŒ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/download.py", 10ํ–‰,
pip._internal.operations.prepare import RequirementPreparer์—์„œ
ํŒŒ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", 9ํ–‰,
pip._internal.distributions์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ(
ํŒŒ์ผ "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", ๋ผ์ธ 1, in
pip._internal.distributions.source์—์„œ SourceDistribution ๊ฐ€์ ธ์˜ค๊ธฐ
ImportError: 'pip._internal.distributions.source'(/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)์—์„œ 'SourceDistribution' ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ pip ๋ฒ„์ „ 19.2.3์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋นŒ๋“œ ํ๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋กœ์ปฌ ReadTheDocs ์„œ๋ฒ„์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ReadTheDocs๋Š” ๋‹ค์Œ ๋นŒ๋“œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉฐ ๋” ์ด์ƒ ์บ์‹ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip==19.2.3

๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜๋ฉด ํŠน์ • pip ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋กœ์ปฌ python_environment.py ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/readthedocs/readthedocs.org/blob/7212d6ff738b24a10fb0f4227d3fbdf69e5cab42/readthedocs/doc_builder/py2

cmd = pip_install_cmd + ['pip']

๋ฐ”๋€Œ์—ˆ๋‹ค:

cmd = pip_install_cmd + ['pip==19.2.3']

๋‚ด ์„ค์ •์ด ๋Œ€๋ถ€๋ถ„์˜ ๊ฒƒ๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ๊ฒฐ๊ตญ ๋ฌธ์ œ๋Š” ๊ฐ€์ƒ ํ™˜๊ฒฝ์˜ PIP sources/ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋•Œ๋ฌธ์ด์—ˆ์Šต๋‹ˆ๋‹ค(๋Œ€๋ถ€๋ถ„ PIP ์บ์‹ฑ ๋ฌธ์ œ ๋“ฑ). ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค:
ํ”„๋กœ์ ํŠธ์˜ user_builds/project/envs/ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ ๋นŒ๋“œํ•˜๋ฉด envs/ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋‹ค์‹œ ์žˆ๋Š” ์ƒํƒœ๋กœ ๋‹ค์‹œ ๋นŒ๋“œํ•  ๋•Œ๊นŒ์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๊ณ  ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” user_builds/project/envs/ ๋””๋ ‰ํ† ๋ฆฌ(๋˜๋Š” ๋‚ด๋ถ€์˜ ๋ฌด์–ธ๊ฐ€)๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ํŠนํžˆ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š”์ง€ ์•Œ์•„๋‚ด๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ํ…Œ์ŠคํŠธ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ ๋นŒ๋“œํ–ˆ๋Š”๋ฐ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋นŒ๋“œํ–ˆ๋Š”๋ฐ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ  source/ ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ธ€๋กœ๋ฒŒ ํŒŒ์ด์ฌ ์„ค์น˜์— ๊ฐ€์„œ ์ด๋™ ๊ทธ๋ž˜์„œ /path/to/lib/python3.6/dist-packages/pip/_internal/distributions/source/ PIP์—์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ œ๊ฑฐ user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ ๋ฐ ์žฌ๊ฑด์—์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ. ์ด๊ฒƒ์€ ์„ฑ๊ณต์ ์œผ๋กœ ๋นŒ๋“œ๋˜์—ˆ์œผ๋ฉฐ source/ ํด๋”๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋ฌธ์„œ๊ฐ€ ๋นŒ๋“œ๋  ๋•Œ๋งˆ๋‹ค ์˜ค๋ฅ˜ ์—†์ด ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ.

์ด ์‹œ๋„:

1.์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.ํŒŒ์ด์ฌ get-pip.py

@Guru36

์—ฌ๋Ÿฌ ๋ฒˆ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์ฒ˜์Œ์— ์ด๊ฒƒ์„ ํ•ด์•ผ ๋„์›€์ด ๋˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ.

์ด ์‹œ๋„:

1.์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.ํŒŒ์ด์ฌ get-pip.py

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์ด์ œ 0.20 ๋ฆด๋ฆฌ์Šค์—์„œ ์ด์— ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ ์ด๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ pip 20.0์œผ๋กœ ์žฌ์ƒ์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ์— ๋ถ€๋”ช์ณค๋‹ค.

virtualenv venv
. venv/bin/activate
pip install sqlalchemy pymysql

๊ฒฐ๊ณผ

Traceback (most recent call last):
  File "/tmp/test/venv/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/tmp/test/venv/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/source/__init__.py)

๋ˆ„๊ตฐ๊ฐ€ pip 20.0์œผ๋กœ ์žฌ์ƒ์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ "ํ•์„ ์‚ฌ์šฉํ•ด๋ณด์‹ญ์‹œ์˜ค"! ์ด๋ฏธ scipy๊ฐ€ ์„ค์น˜๋œ ์ž‘์—… ๊ฐ€์ƒ ํ™˜๊ฒฝ์— scipy๋ฅผ ์„ค์น˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•œ ๊ฒฐ๊ณผ(์ฆ‰, pip๊ฐ€ ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•จ):

(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install pip==20.0
Looking in indexes: https://pypi.org/simple, http://phabricator.jbarisk.com:8080
Collecting pip==20.0
  Downloading https://files.pythonhosted.org/packages/60/65/16487a7c4e0f95bb3fc89c2e377be331fd496b7a9b08fd3077de7f3ae2cf/pip-20.0-py2.py3-none-any.whl (1.5MB)
     |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 1.5MB 1.7MB/s
Installing collected packages: pip
  Found existing installation: pip 19.3.1
    Uninstalling pip-19.3.1:
      Successfully uninstalled pip-19.3.1
pipSuccessfully installed pip-20.0

(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install scipy
Traceback (most recent call last):
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib64/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'

curl get-pip.py ํŠธ๋ฆญ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์‹œ์Šคํ…œ์— ์„ค์น˜๋œ "๊ณต์‹ ์ฝ”๋“œ"์™€ ๋‚ด venv ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์ฐพ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. (์ €๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ์Šต๋‹ˆ๋‹ค, _so hic sunt leones_...)

--- /usr/lib/python2.7/site-packages/pip/_internal/distributions/__init__.py 2019-10-28 08:47:20.727522000 +0100
+++ /home/dummyuser/ml/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py 2020-01-21 12:55:48.000000000 +0100
@@ -1,4 +1,4 @@
-pip._internal.distributions.source.legacy import SourceDistribution์—์„œ
+pip._internal.distributions.source ๊ฐ€์ ธ์˜ค๊ธฐ SourceDistribution์—์„œ
pip._internal.distributions.wheel ๊ฐ€์ ธ์˜ค๊ธฐ์—์„œ WheelDistribution
pip._internal.utils.typing์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ MYPY_CHECK_RUNNING

python -m pip ์ด์‚ฌํ•˜๋Š” ๊ฒƒ์ด ์ œ ์ƒํ™ฉ์— ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/ome/jenkins-library-recursivemerge/pull/4/files์—์„œ

์‹คํŒจ:

    (cd build && curl -sfL ${buildInfraUrl} | tar -zxf -)
    virtualenv build/venv && build/venv/bin/pip install ${sccPackage}

ํŒจ์Šค:

    python -m venv build/venv
    . build/venv/bin/activate
    python -m pip install ${sccPackage}

@pradyunsg , Fedora 29์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

rm -rf ~/.local/lib/python3.7
sudo dnf install python3-pip
pip3.7 install -U --user pip
python3.7 -m pip install requests

```
์—ญ์ถ”์ (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰):
ํŒŒ์ผ "/usr/lib64/python3.7/runpy.py", 193ํ–‰, _run_module_as_main
"__main__", mod_spec)
ํŒŒ์ผ "/usr/lib64/python3.7/runpy.py", 85ํ–‰, _run_code
exec(์ฝ”๋“œ, run_globals)
ํŒŒ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/__main__.py", 19ํ–‰,
sys.exit(_main())
ํŒŒ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/main.py", 73ํ–‰, ๋ฉ”์ธ
๋ช…๋ น = create_command(cmd_name, isolated=(cmd_args์˜ "--isolated"))
ํŒŒ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", 96ํ–‰, create_command
๋ชจ๋“ˆ = importlib.import_module(module_path)
import_module์˜ ํŒŒ์ผ "/usr/lib64/python3.7/importlib/__init__.py", 127ํ–‰
return _bootstrap._gcd_import(์ด๋ฆ„[๋ ˆ๋ฒจ:], ํŒจํ‚ค์ง€, ๋ ˆ๋ฒจ)
ํŒŒ์ผ "", 1006ํ–‰, _gcd_import
ํŒŒ์ผ "", 983ํ–‰, _find_and_load
ํŒŒ์ผ "", 967ํ–‰, _find_and_load_unlocked
ํŒŒ์ผ "", 677ํ–‰, _load_unlocked
ํŒŒ์ผ "", exec_module์˜ 728ํ–‰
ํŒŒ์ผ "", 219ํ–‰, _call_with_frames_removed
ํŒŒ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/install.py", 24ํ–‰,
pip._internal.cli.req_command import RequirementCommand์—์„œ
ํŒŒ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", 20ํ–‰,
pip._internal.operations.prepare import RequirementPreparer์—์„œ
ํŒŒ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", 16ํ–‰,
pip._internal.distributions์—์„œ ๊ฐ€์ ธ์˜ค๊ธฐ(
ํŒŒ์ผ "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", ๋ผ์ธ 1, in
pip._internal.distributions.source์—์„œ SourceDistribution ๊ฐ€์ ธ์˜ค๊ธฐ
ImportError: 'pip._internal.distributions.source'(/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)์—์„œ 'SourceDistribution' ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.


๋‚ด ๋ฐฐํฌ๊ฐ€ 19.3.1์—์„œ 20.0์œผ๋กœ pip๋ฅผ ์ž๋™ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์„ ๋•Œ ๋ฐฉ๊ธˆ ์ด๊ฒƒ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์ด ์ด๋ฏธ python -m pip๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค .

JediKev์˜ ์ˆ˜์ • ์‚ฌํ•ญ์€ ์ด ํด๋”๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ์ดํŠธ ํŒจํ‚ค์ง€/pip/_internal/distributions/source

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ

python:3.7-slim ์ปจํ…Œ์ด๋„ˆ(Debian ๊ธฐ๋ฐ˜)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜ Python Docker ์ปจํ…์ŠคํŠธ๋„ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

[32;1m$ docker build --compress -t $REGISTRY_IMAGE_SPARROW .[0;m
#2 [internal] load .dockerignore
#2 transferring context: 493B done
#2 DONE 0.0s

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 1.22kB done
#1 DONE 0.0s

#3 [internal] load metadata for docker.io/library/python:3.7-slim
#3 DONE 0.8s

#4 [base 1/6] FROM docker.io/library/python:3.7-slim<strong i="7">@sha256</strong>:5886bc9424f2edc...
#4 DONE 0.0s

#5 [internal] load build context
#5 transferring context: 531.72kB 0.0s done
#5 DONE 0.0s

#10 [base 6/6] RUN pip install --upgrade pip
#10 CACHED

#8 [base 4/6] RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards co...
#8 CACHED

#9 [base 5/6] WORKDIR /app
#9 CACHED

#6 [base 2/6] COPY docker-entrypoint.sh /usr/local/bin/
#6 CACHED

#7 [base 3/6] RUN chmod +x /usr/local/bin/docker-entrypoint.sh
#7 CACHED

#11 [requirements 1/2] COPY requirements.txt requirements.txt
#11 CACHED

#12 [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt
#12 0.912 Traceback (most recent call last):
#12 0.912   File "/usr/local/bin/pip", line 8, in <module>
#12 0.912     sys.exit(main())
#12 0.912   File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
#12 0.912     command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
#12 0.912   File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
#12 0.912     module = importlib.import_module(module_path)
#12 0.912   File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
#12 0.912     return _bootstrap._gcd_import(name[level:], package, level)
#12 0.912   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
#12 0.912   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
#12 0.912   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
#12 0.912   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
#12 0.913   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
#12 0.913   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
#12 0.913     from pip._internal.cli.req_command import RequirementCommand
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
#12 0.913     from pip._internal.operations.prepare import RequirementPreparer
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
#12 0.913     from pip._internal.distributions import (
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
#12 0.913     from pip._internal.distributions.source import SourceDistribution
#12 0.913 ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
#12 ERROR: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully
------
 > [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt:
------
failed to solve with frontend dockerfile.v0: failed to build LLB: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully

python:3.7.6-alpine github ์ž‘์—…์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒƒ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

Dockerfile ์—์„œ ์ด ์˜ค๋ฅ˜๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

FROM python:3.7

COPY requirements.txt .

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

CMD pip --version

๊ทธ๋ฆฌ๊ณ  requirements.txst :


์ด ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์ด ๋ถˆ์พŒํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. pip๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋ผ์ธ์„ ์ œ๊ฑฐํ•˜๋ฉด ์ด๋ฏธ์ง€๊ฐ€ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.

์ข‹์•„, ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋กœ์ปฌ์—์„œ ์žฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค -- ๊ณง ์ˆ˜์ • ์‚ฌํ•ญ์ด ํฌํ•จ๋œ PR์„ ์ œ์ถœํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

./site-packages/pip/_internal/distributions/source ํด๋”๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค!

์˜ˆ, pip ๋ฒ„์ „ 20.0์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์—ฌ๊ธฐ์— ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(pip 20.0).

์˜ˆ, "virtualenv"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ pip 20.0์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. venv ์ƒ์„ฑ ๋ช…๋ น

์—ฌ๊ธฐ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ pip๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ชจ๋“  CI ๋นŒ๋“œ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ์ชฝ์—์„œ๋„ ๋™์ผํ•œ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋ชจ๋“  ๋นŒ๋“œ๊ฐ€ ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ ๊ณ ์žฅ

pip 19.x๋กœ ๋กค๋ฐฑํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ฉ๋‹ˆ๊นŒ? ํšจ๊ณผ๊ฐ€ ์žˆ์„๊นŒ์š”?

ํŽธ์ง‘ํ•˜๋‹ค:
pip install --upgrade "pip==19.3.1" ์—ฌ์ „ํžˆ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

python 3.7.3 ๋ฐ pip 20.0๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

pip install pip"<20.0" ์ž„์‹œ ์†”๋ฃจ์…˜์ด์ง€๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

virtualenv pip ๋ฒ„์ „์„ 19.3.1(์ด์ „)๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ž‘๋™ํ•˜๋Š” ๋น ๋ฅธ ์ˆ˜์ •์€

์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.pyํŒŒ์ด์ฌ get-pip.py pip==9.0.2

CI ํŒŒ์ดํ”„๋ผ์ธ ์ €์žฅ

๋ฌธ์„œ ์ฝ๊ธฐ ๋ฌธ์„œ๋„ ํ˜„์žฌ ์ด ๋ฌธ์ œ๋กœ ์ธํ•ด ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์–ด ๋ฌธ์„œ ์ž‘์„ฑ์ด ์ง€์†์ ์œผ๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
373AED13-5DF1-4729-9923-114F83603B44

์•„๋งˆ๋„ pip ๋ฒ„์ „์„ 19.3.1(์ด์ „)๋กœ ์„ค์ •ํ•˜๋Š” virtualenv๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@manutero , virtualenv ๋ช…๋ น์˜ --no-download ํ”Œ๋ž˜๊ทธ๋Š” ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•  ๋•Œ pip ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

virtualenv๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ 19.x๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์€ ๋‚ด virtualenv์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

virtualenv --no-pip <ENV NAME>
# activate the virtual environment
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip==19.2.2

์ •๋ ฌํ•˜๋ ค๋ฉด ์ด์ „ ๋ฒ„์ „์„ ์„ ํƒํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.py
ํŒŒ์ด์ฌ get-pip.py pip=19.3.1

python 3.7.6 ๋ฐ pip 20.0๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

ํ• ๋ฒ„์ „-20.0
ํŒŒ์ด์ฌ ๋ฒ„์ „ - 3.6
ํŒŒ์ผ์˜ ์•„๋ž˜ ์ค„์„ ์“ฐ์‹ญ์‹œ์˜ค.
/lib/python3.6/site-packages/pip/_internal/distributions/source/__init__.py

.legacy import SourceDistribution์—์„œ

์ด ์‹คํŒจ๋ฅผ ๋ณด๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด pip/_internal/distributions์— ์†Œ์Šค/ ํด๋”๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํด๋”๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์—ฌ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ์ง€ ๋งˆ์„ธ์š”. ์ด ๊ฒŒ์‹œ๋ฌผ์— ๐Ÿ‘ ๋ฐ˜์‘์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ํ•ด๋‹น ํด๋”๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๐Ÿ‘Ž ๋ฐ˜์‘์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

์šฐ๋ถ„ํˆฌ 19.04์™€ ๋™์ผํ•œ ๋ฌธ์ œ

Successfully installed pip-20.0
Traceback (most recent call last):
  File "/home/pippo/.venvs/test_pgm/bin/pip", line 10, in <module>
    sys.exit(main())
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

pip==19.2.3์œผ๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ง€๊ธˆ์€ ๋˜๋Œ๋ ธ์Šต๋‹ˆ๋‹ค.

"๋‚˜๋„" ์‹ ๊ณ ๋Š” ๊ทธ๋งŒํ•ด์ฃผ์„ธ์š”. @pradyunsg ๋Š” ์ง€๊ธˆ ์ˆ˜์ • ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค. ์ด๊ฒƒ์„ ์น˜๋Š” ๊ฒƒ์€ ์–ด์ œ ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

pipenv ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์Šค๋‹ˆํŽซ

wget https://bootstrap.pypa.io/get-pip.py -O get-pip.py
pipenv run python get-pip.py pip==19.3

๋น ๋ฅธ ์ˆ˜์ •์˜ ๊ฒฝ์šฐ,

$(which easy_install) pip==19.3

๋˜ํ•œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค

๋น ๋ฅธ ์ˆ˜์ •์˜ ๊ฒฝ์šฐ,

$(which easy_install) pip==19.3

๋˜ํ•œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค

๋ชจ๋“  ์ž„์‹œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ค‘์—์„œ ์ด ํ•˜๋‚˜๋งŒ์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

easy_install์„ ์ œ๊ฑฐํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค... :) - ๊ทธ๋Ÿฌ๋ฉด pip ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ• ๊นŒ์š”?

pip install --upgrade pip ๋ฅผ pip install --upgrade pip"<20.0" ๊ต์ฒดํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

์ •๋ ฌํ•˜๋ ค๋ฉด ์ด์ „ ๋ฒ„์ „์„ ์„ ํƒํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ปฌ https://bootstrap.pypa.io/get-pip.py -o get-pip.py
ํŒŒ์ด์ฌ get-pip.py pip=19.3.1

python3 get-pip.py pip==19.3.1์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

pip install --upgrade pip ๋ฅผ pip install --upgrade pip"<20.0" ๊ต์ฒดํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

๋„์ปค์—์„œ ๋„์™€์ฃผ์„ธ์š”
์‹คํ–‰ pip install --upgrade pip"<20.0"

@PabloCastellano ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋‚˜๋Š” ๋‚ด ์‹ฌ์žฅ ๋ฐ•๋™์ˆ˜๊ฐ€ ๋” ์ด์ƒ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ ์—ฌ๊ธฐ์—์„œ ๋Œ“๊ธ€์„ ๋ฌด์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. :)

bugfix ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ์ด ๊ฒŒ์‹œ๋ฌผ์— ๐Ÿ‘๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์˜๊ฒฌ์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค.

XD

๋‚˜๋Š” ๋‚ด ์‹ฌ์žฅ ๋ฐ•๋™์ˆ˜๊ฐ€ ๋” ์ด์ƒ ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :)
bugfix ๋ฆด๋ฆฌ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

@pradyunsg ๋‹น์‹ ์€ ๋ฐฉ๊ธˆ ๋‚ด ๊ฒƒ์„ ๋‚ฎ์ท„์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@SergeyLadutko :

pip install --upgrade pip ๋ฅผ pip install --upgrade pip"<20.0" ๊ต์ฒดํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

๋„์ปค์—์„œ ๋„์™€์ฃผ์„ธ์š”
์‹คํ–‰ pip install --upgrade pip"<20.0"

pip install --upgrade pip==19.3.1 ์‹œ๋„

์ข‹์•„, ๋‚ด ๋นŒ๋“œ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ฒŒ ํ•ด์ค˜

@pradyunsg ๋น ๋ฅธ ์ˆ˜์ •์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. <3 ๊ถ๊ธˆํ•˜์‹  ๋ถ„๋“ค์„ ์œ„ํ•ด ์ด ์ˆ˜์ • ์‚ฌํ•ญ์ด CircleCI ์ž‘์—… ๋‚ด์—์„œ ์ ์šฉ๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

get-pip.py๊ฐ€ ์•„์ง ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์™œ๋ƒํ•˜๋ฉด ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ get-pip์— ๋Œ€ํ•œ ์ž์ฒด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ค‘๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. :)

๋ช‡ ๋ถ„ ์•ˆ์— ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. pip==20.0.1 ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค

@pradyunsg ์•ž์œผ๋กœ ๊ทธ๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก CI ๊ฐœ์„  ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ PR์„ ์ˆ˜๋ฝํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

get-pip.py๊ฐ€ ์•„์ง ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ์™œ๋ƒํ•˜๋ฉด ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ get-pip์— ๋Œ€ํ•œ ์ž์ฒด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ค‘๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. :)

๋ช‡ ๋ถ„ ์•ˆ์— ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

:) ์–ธ์ œ ์ข‹์€์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

๋ช‡ ๋ถ„ ์•ˆ์— ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ํ‘ธ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์ฏค์ด๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด bootstrap.pypa.io๋กœ ์ „ํŒŒ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ์ •๋ง ๊ณง ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๋นŒ๋“œ๋Š” ์ด์ œ get-pip.py๋กœ ์ „๋‹ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @pradyung

pip 20.0.1์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. @pradyunsg ๊ฐ์‚ฌ

์ด์ œ ๋” ์ด์ƒ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ƒˆ๋กœ์šด pip ์ด ์„ค์น˜๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @pradyunsg ๊ฐ์‚ฌ

@pradyunsg ๊ฐ์‚ฌ

@pradyunsg ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋งŽ์ด, ๋” ๋งŽ์ด

๋น ๋ฅธ ์ˆ˜์ •์„ ์œ„ํ•ด @pradyunsg ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐ŸŽ‰

๋น ๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด @pradyunsg ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

source ๋ชจ๋“ˆ ๋””๋ ‰ํ† ๋ฆฌ์™€ pip/_internal/distributions ๊ฒฝ๋กœ์— source.py ๊ฐ€ ์žˆ๊ณ  ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์—‰๋ง์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

pip/_internal/distributions/__init__.py ์— ๊ฐ€์ ธ์˜ค๊ธฐ ๋ผ์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

from pip._internal.distributions.source import SourceDistribution # <-- here
from pip._internal.distributions.wheel import WheelDistribution
from pip._internal.utils.typing import MYPY_CHECK_RUNNING

๊ทธ๋Ÿฌ๋‚˜ ๊ฑฐ๊ธฐ์—๋Š” __init__.py ์žˆ๋Š” source ๋””๋ ‰ํ† ๋ฆฌ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  env ๎‚ฐ ~/.../_internal/distributions ๎‚ฐ ls -ltr
total 32
-rw-r--r-- 1 user xxx 1294 Jan 21 18:02 wheel.py
-rw-r--r-- 1 user xxx  760 Jan 21 18:02 installed.py
-rw-r--r-- 1 user xxx 1425 Jan 21 18:02 base.py
drwxr-xr-x 3 user xxx 4096 Jan 21 18:02 source
-rw-r--r-- 1 user xxx 4201 Jan 21 18:19 source.py
-rw-r--r-- 1 user xxx  961 Jan 21 18:26 __init__.py
drwxr-xr-x 2 user xxx 4096 Jan 21 18:26 __pycache__

๋”ฐ๋ผ์„œ ํ•ด๋‹น ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. source.py ์„ _source.py ๋กœ ๋ฐ”๊พธ๊ณ  __init__.py ์˜ ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ from pip._internal.distributions._source import SourceDistribution ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@pradyunsg ๋น ๋ฅธ ์ˆ˜์ •์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. <3

์—ฌ๊ธฐ์— ์ˆ˜์ • ์‚ฌํ•ญ์— ๋Œ€ํ•œ ํ™˜์ƒ์ ์ธ ์ „ํ™˜์— ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค!

@pradyunsg ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
ํŒŒ์ด์ฌ ๋ฒ„์ „: python-3.7.6
์šด์˜ ์ฒด์ œ: ์œˆ๋„์šฐ

PIP 19.3.1๋กœ ์ด๋™ํ•œ ํ›„ ์ž‘๋™

์ด์ œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ์˜ ํŠน์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ PYPA์—์„œ 20.0 ๋ฆด๋ฆฌ์Šค๋ฅผ ์ œ๊ฑฐํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? https://pypi.org/project/pip/#history

๋˜ ๋‹ค๋ฅธ ์งˆ๋ฌธ์€ ๋ฏธ๋ž˜์— ์œ ์‚ฌํ•œ ํšŒ๊ท€๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ž…๋‹ˆ๋‹ค.

ํŒŒ์†์— ๋Œ€ํ•ด ๋ชจ๋‘์—๊ฒŒ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์†์„ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์—์„œ ์šฐ๋ฆฌ์™€ ํ˜‘๋ ฅํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@xavfernandez๋Š” ์ด๋Ÿฌํ•œ ์ผ์ด ๋ฐœ์ƒํ•œ ์ด์œ ๋ฅผ ํŒŒ์•…ํ–ˆ์œผ๋ฉฐ ํ–ฅํ›„ ์œ ์‚ฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆด๋ฆฌ์Šค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. #7624

ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๋ฒˆ๊ฐœ์ฒ˜๋Ÿผ ๋น ๋ฅธ ์ฒ˜๋ฆฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š” 20.0์—์„œ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค
๋‚ด๊ฐ€ ์‹œ๋„ํ•œ ๋ชจ๋“  ๋ช…๋ น์€ 'SourceDistribution'์— ๋Œ€ํ•œ ์ด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

pip install --upgrade pip
pip install pip "<20.0"
pip install --upgrade "pip==19.3.1"

๋‚˜๋„ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ์ง€์ณค๋‹ค :

pip uninstall pip
python -m pip uninstall pip setuptools

๋ˆ„๊ตฌ๋“ ์ง€ pip๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋‹ค๋ฅธ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์šฐ๋ถ„ํˆฌ 18.04.3 LTS
ํŒŒ์ด์ฌ 3.6.9
virtualenv์—์„œ ์‹คํ–‰

์•ˆ๋…•ํ•˜์„ธ์š” @CharrierCoop์ž…๋‹ˆ๋‹ค! get-pip.py๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ pip 20.0.1์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://pip.pypa.io/en/stable/installing/ ์ฐธ์กฐ

์™„๋ฒฝํ•œ !!
@pradyunsg ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

PYPA์—์„œ 20.0 ๋ฆด๋ฆฌ์Šค๋ฅผ ์ œ๊ฑฐํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”. ์‚ญ์ œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊นจ์ง„ ๋ฆด๋ฆฌ์Šค๋ฅผ "๋Œ์–ด๋‹น๊ธฐ๊ธฐ" ์œ„ํ•œ ํ‘œ์ค€ ์ง€์› ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. PyPI๊ฐ€ ์ด์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด ๋ฆด๋ฆฌ์Šค๋ฅผ ์ œ๊ฑฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ๋•Œ๊นŒ์ง€ ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ).

์ž์„ธํ•œ ๋‚ด์šฉ์€ https://www.python.org/dev/peps/pep-0592/#motivation ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

sudo python get-pip.py pip==19.3.1"
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ

sudo python get-pip.py pip==19.3.1"
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ

๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

sudo ํŒŒ์ด์ฌ get-pip.py pip==19.3.1"
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ

@pradyunsg๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @CharrierCoop์ž…๋‹ˆ๋‹ค! get-pip.py๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ pip 20.0.1์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://pip.pypa.io/en/stable/installing/ ์ฐธ์กฐ

Raspberry Pi 4(Python 3.7.3, pip ๋ฒ„์ „ - 20.0 ๋ฐ OS - Raspbian Buster Lite)์—์„œ ๋™์ผํ•œ ์ž‘์—…์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ค๋ฅ˜: pi p ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š” ๋ฒ„์ „์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์˜ค๋ฅ˜: pip์— ๋Œ€ํ•ด ์ผ์น˜ํ•˜๋Š” ๋ถ„ํฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@Gilf641 ์ƒˆ ๋ฌธ์ œ๋ฅผ

๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ ์ง€๊ธˆ ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด์ „์— ์ œ์ถœ๋œ ์ค‘๋ณต ํ•ญ๋ชฉ(pip 20.0์˜ ๊ฒฝ์šฐ 1์›” 21์ผ ์ดํ›„)์„ ์ฐพ์•„๋ณด๊ณ  ์ค‘๋ณต ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์ œ์ถœํ•˜์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰