Pip: 19.0์—์„œ --no-cache-dir์„ ์‚ฌ์šฉํ•  ๋•Œ ์–ด์„ค ์…˜

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

ํ™˜๊ฒฝ

  • pip ๋ฒ„์ „ : 19.0
  • Python ๋ฒ„์ „ : 3.6.7
  • ์šด์˜์ฒด์ œ : Linux 50de819ca3ba 4.9.125-linuxkit # 1 SMP Fri Sep 7 08:20:28 UTC 2018 x86_64 GNU / Linux

dockerfile์—์„œ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.

๊ธฐ์ˆ 

๋‹ค์Œ ๋ช…๋ น์€ pip 18.1์—์„œ ์ž‘๋™ํ•˜๊ณ  19.0์—์„œ๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

pip3 install --no-cache-dir --upgrade -r requirements.txt

19.0์—์„œ๋Š” ๋‹ค์Œ ์˜ˆ์™ธ์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

Exception:
Traceback (most recent call last):
  File "/Users/scotts/.virtualenvs/python3/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 176, in main
    status = self.run(options, args)
  File "/Users/scotts/.virtualenvs/python3/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 346, in run
    session=session, autobuilding=True
  File "/Users/scotts/.virtualenvs/python3/lib/python3.6/site-packages/pip/_internal/wheel.py", line 848, in build
    assert building_is_possible
AssertionError

--no-cache-dir ํ”Œ๋ž˜๊ทธ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์„ค์น˜๊ฐ€ ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค.
requirements.txt

auto-locked bug

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

pip 19.0.1์€์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ •์œผ๋กœ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

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

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
Python v3.6.8
pip version 18.1
์˜ ์œ„์—
Ubuntu:latest ์ด๋ฏธ์ง€.

@snstanton ์–ด๋–ค ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? pip v18.1์—์„œ๋„ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

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

--no-cache-dir ์„ค์ •ํ•˜์ง€ ์•Š์•„๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์„ค์น˜ํ•˜๋ ค๋Š” ๋ชจ๋“  ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ์–ด๋„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • pip ๋ฒ„์ „ : 19.0
  • Python ๋ฒ„์ „ : 3.6.0
  • ์šด์˜์ฒด์ œ : Ubuntu 14.04.4 LTS (GNU / Linux 3.13.0-91-generic x86_64)

์ œ ๊ฒฝ์šฐ์—๋Š” sudo -H ๋ฐ bash -l -c ์กฐํ•ฉ์œผ๋กœ sudo -H pip ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

$ sudo -H bash -l -c  "/data/virtualenvs/events_beta/bin/pip install hypothesis"
Looking in indexes: https://pypi.org/simple, http://pypi.lan.cogtree.com/cogtree/simple/
Collecting hypothesis
  Downloading http://pypi.lan.cogtree.com/cogtree/simple/hypothesis/hypothesis-4.1.0-py3-none-any.whl (238kB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 245kB 120.5MB/s
Requirement already satisfied: attrs>=16.0.0 in /data/virtualenvs/events_beta/lib/python3.6/site-packages (from hypothesis) (18.2.0)
Exception:
Traceback (most recent call last):
  File "/data/virtualenvs/events_beta/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 176, in main
    status = self.run(options, args)
  File "/data/virtualenvs/events_beta/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 346, in run
    session=session, autobuilding=True
  File "/data/virtualenvs/events_beta/lib/python3.6/site-packages/pip/_internal/wheel.py", line 848, in build
    assert building_is_possible
AssertionError

์—†์ด ๊ฐ™์€ ๋ช…๋ น์„ ์‹คํ–‰ -l ๋‚ด์— bash -c , ๋˜๋Š”์—†์ด bash -l -c ์ „ํ˜€ ํฌํ•จ, ๋ชจ๋‘ ์ž‘๋™ ์ž˜.

$ sudo -H bash -c  "/data/virtualenvs/events_beta/bin/pip install hypothesis"
Collecting hypothesis
  Downloading https://files.pythonhosted.org/packages/89/7b/d6206dcde963139daa03a1d85b0c3428cb3ebf2ae8de3244b14a63e22680/hypothesis-4.1.0.tar.gz (180kB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 184kB 33.7MB/s
Requirement already satisfied: attrs>=16.0.0 in /data/virtualenvs/events_beta/lib/python3.6/site-packages (from hypothesis) (18.2.0)
Building wheels for collected packages: hypothesis
  Building wheel for hypothesis (setup.py) ... done
  Stored in directory: /root/.cache/pip/wheels/10/12/eb/4ab734432e8466d545c8501f531458845b45e8c4427d5367f9
Successfully built hypothesis
Installing collected packages: hypothesis
Successfully installed hypothesis-4.1.0

ํฅ๋ฏธ๋กญ๊ฒŒ๋„ sudo ๋˜๋Š” bash ์—†์ด ๋™์ผํ•œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์—ฌ์ „ํžˆ ์‹คํŒจํ•˜๋ฏ€๋กœ ์ด์ƒํ•œ ๊ถŒํ•œ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ์ƒํ™ฉ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

virtualenv๊ฐ€ ์ตœ์‹  ๋ฒ„์ „์˜ pip๋ฅผ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•œ ์‚ฌ๋žŒ๋“ค์€ virtualenv์— --no-download ์˜ต์…˜์„ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ VIRTUALENV_NO_DOWNLOAD=1 ์„ค์ •ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ virtualenv๋ฅผ ๋งˆ์ง€๋ง‰์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋งค์šฐ ์˜ค๋ž˜๋œ ๋ฒ„์ „์˜ pip๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋˜ํ•œ tox : VIRTUALENV_NO_DOWNLOAD=1 tox ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์น˜์žˆ๋Š” ์ผ : ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฏธ ์„ค์น˜๋œ ๊ฒฝ์šฐ ๋™์ผํ•œ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

gregory.starck<strong i="6">@canon</strong>:~/tmp$ ./venv/bin/pip install --no-cache-dir six ; echo $?
Looking in indexes: http://pypi:3141/root/ax/+simple/
Requirement already satisfied: six in ./venv/lib/python3.6/site-packages (1.12.0)
Exception:
Traceback (most recent call last):
  File "/home/gregory.starck/tmp/venv/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 176, in main
    status = self.run(options, args)
  File "/home/gregory.starck/tmp/venv/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 346, in run
    session=session, autobuilding=True
  File "/home/gregory.starck/tmp/venv/lib/python3.6/site-packages/pip/_internal/wheel.py", line 848, in build
    assert building_is_possible
AssertionError
2
gregory.starck<strong i="7">@canon</strong>:~/tmp$

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ pip ๋ฒ„์ „์„ ์ˆ˜์ •์œผ๋กœ ๊ณ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

pip install --upgrade pip==18.1

๋ฌธ์ œ๋Š” ์–ด์„ค ์…˜ ์‹คํŒจ์ด๋ฏ€๋กœ env PYTHONOPTIMIZE = 1 (๋˜๋Š” ๋งค๊ฐœ ๋ณ€์ˆ˜ -O)์„ ์„ค์ •ํ•˜๋ฉด์ด ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
๋ฐฉ๊ธˆ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ํŒŒ์ด์ฌ์ด ๋ชจ๋“  ์–ด์„ค ์…˜์„ ์ œ๊ฑฐํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
= 2 (๋˜๋Š” -OO)๋กœ ๊ฐ€์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋… ์ŠคํŠธ๋ง์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค๋ฅธ ํŠธ๋ ˆ์ด์Šค ๋ฐฑ์ด ๋‚˜ํƒ€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ์ฝ”๋“œ๋Š” ์ด์— ๋Œ€ํ•ด ์ž‘๋™ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€ ์ด๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค ( source ) :

        # TODO: This check fails if --no-cache-dir is set. And yet we
        #       might be able to build into the ephemeral cache, surely?
        building_is_possible = self._wheel_dir or (
            autobuilding and self.wheel_cache.cache_dir
        )
        assert building_is_possible

https://github.com/pypa/pip/pull/5884 ์ด๊ฒƒ์ด ์›์ธ์ด ๋  ์ˆ˜์žˆ๋Š” ๊ด€๋ จ ๋ณ€๊ฒฝ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?

pip ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€์ด ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๊ทผ 19 ๋ฆด๋ฆฌ์Šค๋ฅผ ๋กค๋ฐฑํ•ด์•ผํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?
19.0 ๋ฆด๋ฆฌ์Šค ์ •๋ณด : https://github.com/pypa/pip/blob/master/NEWS.rst#190 -2019-01-22

์—…๋ฐ์ดํŠธ : ์—ฌ๊ธฐ์—์„œ ์š•์„ค์„ ๋˜์ง€๋ ค๊ณ ํ•˜์ง€ ์•Š๊ณ  ๋ฆด๋ฆฌ์Šค๊ฐ€ _just_ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ์ด ์˜ํ–ฅ์„๋ฐ›๋Š” ์‚ฌ๋žŒ๋“ค์„ ์‹ ์†ํ•˜๊ฒŒ ์ฐจ๋‹จ ํ•ด์ œํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ซํ”ฝ์Šค๋กœ ๋กค ํฌ์›Œ๋“œํ•˜๋Š” ๊ฒƒ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฏธ์…˜ ํฌ๋ฆฌํ‹ฐ์ปฌ ๋„๊ตฌ๋ฅผ ์ง€์›ํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋…ธ๊ณ ์— ๊ฐ์‚ฌ ๋“œ๋ฆฌ๋ฉฐ, ์‹ค์ˆ˜๋กœ๋ถ€ํ„ฐ ๋ฐฐ์šฐ๊ณ  ํ–ฅํ›„ ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ์œ„ํ•œ ์‚ฌํ›„ ๋ถ„์„์— ๋Œ€ํ•œ ์•„๋ž˜์˜ ๊ฐ์ •์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•œํŽธ, ์šฐ๋ฆฌ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“  ์œ„์น˜์—์„œ pip ๋ฒ„์ „์„ ์ž์œ ๋กญ๊ฒŒ ๊ณ ์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

TODO ๋Œ“๊ธ€์„ ์ถ”๊ฐ€ ํ•œ PR๋„ ๋‹ต์žฅ์œผ๋กœ์ด ๋Œ“๊ธ€์ด ์žˆ์Šต๋‹ˆ๋‹ค : https://github.com/pypa/pip/pull/5743/files#r215832743

ํ•ด๋‹น ์ฃผ์„๊ณผ PYTHONOPTIMIZE=1 ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค๋Š” ์œ„์˜ ์ฃผ์„ ์ž‘์„ฑ์ž๊ฐ€ ๋‹จ์–ธ ๋ฌธ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์ˆ˜์ •์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋กค๋ฐฑ ๋ฌธ์ œ์™€ ๋ฌด๊ด€).

์˜ˆ, ๊ทธ ์ฃผ์žฅ์„ ์‚ญ์ œํ•˜๋ฉด ํŒจํ‚ค์ง€๊ฐ€ --no-cache-dir ์ž˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ sdist ํŒจํ‚ค์ง€์˜ ๊ฒฝ์šฐ Building wheel ๋Œ€์‹  Running setup.py install ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค์—์„œ Python 3์„ ์„ค์น˜ํ•˜๋Š” FROM ubuntu:bionic ๋ฐ FROM centos:centos7 ๋นŒ๋“œ ๋œ Docker ์ด๋ฏธ์ง€์—์„œ์ด๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์—ฌ๊ธฐ ์— ํ•ด๋‹น Docker ์ด๋ฏธ์ง€ ๋ชจ๋‘์— ๋Œ€ํ•ด ์‹คํŒจํ•œ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” Gist ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). Gist์˜ ์˜ˆ์—์„œ requirements.txt ์˜ ๊ฒฝ์šฐ

$ pip3 install --upgrade pip setuptools wheel
Requirement already up-to-date: pip in /usr/lib/python3.6/site-packages (19.0)
Requirement already up-to-date: setuptools in /usr/lib/python3.6/site-packages (40.6.3)
Requirement already up-to-date: wheel in /usr/lib/python3.6/site-packages (0.32.3)

๊ทธ๋•Œ

$ pip3 install --upgrade --no-cache-dir -r requirements.txt

์‹คํŒจํ•˜๋‹ค

Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 176, in main
    status = self.run(options, args)
  File "/usr/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 346, in run
    session=session, autobuilding=True
  File "/usr/lib/python3.6/site-packages/pip/_internal/wheel.py", line 848, in build
    assert building_is_possible
AssertionError

๊ทธ๋Ÿฌ๋‚˜

$ pip3 install --upgrade -r requirements.txt

์˜ˆ์ƒ๋Œ€๋กœ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ํŠนํžˆ tox + docker + ENV PIP_NO_CACHE_DIR=off ์ด๊ฒƒ์„ ์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ tox-virtualenv-no-download ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ pip๊ฐ€ ์ž๋™ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋„๋กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ด๋ฏธ์ง€๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Docker ๋‚ด๋ถ€ ์„ค์น˜์— --no-cache-dir ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋™์ผํ•œ RUN ๋‹จ๊ณ„์—์„œ --cache-dir=/pipcache ๋ฐ rm -rf /pipcache ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์ด๋ฏธ์ง€์—์„œ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์€ โ€‹โ€‹์–ด๋ ต๊ณ  ์ด์™€ ๊ฐ™์€ ๋ฒ„๊ทธ๋Š” ํ•ญ์ƒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ์•„๋ฌด๋„์ด ์‚ฌ๊ฑด์— ๋Œ€ํ•ด pip ๊ด€๋ฆฌ์ž ๋‚˜ ๊ธฐ์—ฌ์ž๋ฅผ ๋น„๋‚œํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š”์ด ๋ฒ„๊ทธ๊ฐ€ ์ผ๋ฐ˜ ๋ฆด๋ฆฌ์Šค๋กœ ๋„˜์–ด ๊ฐ€๊ธฐ ์ „์— ์žกํž ์ˆ˜์žˆ๋Š” (๋ˆ„๋ฝ ๋œ) ๊ธฐํšŒ์˜ ์ˆ˜๋กœ ์ธํ•ด pip ํŒ€์˜ ์ผ์ข…์˜ ์‚ฌํ›„ ๋ถ„์„์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด :

  • --no-cache-dir ์™€ ๊ฐ™์€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์˜ ์ž๋™ ํ…Œ์ŠคํŠธ
  • ์‚ฌ์ „ ์ปค๋ฐ‹, ์‚ฌ์ „ ๋ณ‘ํ•ฉ ๋˜๋Š” ์‚ฌ์ „ ๋ฆด๋ฆฌ์Šค ๊ฒ€์‚ฌ๋Š” ํ•ด๋‹น ํ”Œ๋ž˜๊ทธ (๋˜๋Š” ๊ธˆ์ง€) TODO s
  • PR์—์„œ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๋ชจ๋“  ๊ฒ€ํ†  ์ฃผ์„์— ๋Œ€ํ•œ (์ธ๊ฐ„์ ์ธ) ์‚ฌ์ „ ๋ณ‘ํ•ฉ ๊ฒ€ํ†  (Github๋Š” ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒ€ํ†  ์ฃผ์„ ์Šค๋ ˆ๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ตœ์†Œํ™”ํ•˜๋ฉฐ ์ตœ๊ทผ์— ๊ฒ€ํ†  ์ฃผ์„ ์Šค๋ ˆ๋“œ๋ฅผ ํ•ด๊ฒฐ ๋œ ๊ฒƒ์œผ๋กœ ์ˆ˜๋™์œผ๋กœ ํ‘œ์‹œ ํ•  ์ˆ˜ ์žˆ์Œ)
  • ๋ฆด๋ฆฌ์Šค ํ”„๋กœ์„ธ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ โ€” ๋จผ์ € ๋ฒ ํƒ€๋ฅผ ๋ฆด๋ฆฌ์Šค ํ•œ ๋‹ค์Œ ์ผ๋ฐ˜ ๋ฆด๋ฆฌ์Šค ์ „์— ๋ช‡ ์ฃผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค.
  • ๊ธฐํƒ€

์‚ฌํ›„ ๋ถ„์„์€ Python ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ ์ธ pip ์™€ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํ–ฅํ›„์ด ์ •๋„ ๊ทœ๋ชจ์˜ ๋ฒ„๊ทธ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜์ง€ ์•Š๋„๋กํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์œ ์šฉํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ๋ฅผ ๋ณต์ œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --no-cache-dir์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๋„์ปค ์ด๋ฏธ์ง€์—์„œ ์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— @coderanger๊ฐ€ ์ œ์•ˆํ•œ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑด๋ฐฐ ๐ŸŒˆ๐Ÿฐ๐ŸŒˆ

๋ฌธ์ œ # 6166๊ณผ ์ค‘๋ณต ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋น ๋ฅด๊ณ  ์‰ฌ์šด ๋ณต์ œ Dockerfile :

FROM buildpack-deps:buster
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
RUN apt-get update && apt-get install -y --no-install-recommends python3-dev && rm -rf /var/lib/apt/lists/*
RUN curl https://bootstrap.pypa.io/get-pip.py | python3 - --no-cache-dir

๋‹จ์ˆœํžˆ ์–ด์„ค ์…˜์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์ˆ˜์ •์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •ํ™•ํžˆ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ephem์ด ์•„๋‹Œ ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด ์ด๊ฒƒ์„ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„์นจ ์‹์‚ฌ๊ฐ€ ๋๋‚˜๋ฉด ๋ฒ„๊ทธ ์ˆ˜์ • PR์„ ์ œ์ถœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. :)

@pradyunsg ๋‚ด PR์—์„œ ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋‚˜๋ฅผ ์œ„ํ•ด --no-cache (๋˜๋Š” --no-cache-dir ) ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด pip v19.0์ด ์•„๋ฌด๊ฒƒ๋„ ์„ค์น˜ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฒ„๊ทธ ์ˆ˜์ •์œผ๋กœ # 6171์„ ์ œ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์˜ ์‚ฌ๋žŒ๋“ค์ด PR์„ ์‹œ๋„ํ•˜๊ณ  ์‹ค์ œ๋กœ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ถ”์‹  :์ด ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด PR์„ ์ œ์ถœํ•ด ์ฃผ์‹  @tgs ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! :)

wfm, ์ˆ˜์ • ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

$ pip install pip --upgrade
Requirement already up-to-date: pip in ./venv/lib/python3.6/site-packages (19.0)
$ pip install --no-cache-dir pip
Requirement already satisfied: pip in ./venv/lib/python3.6/site-packages (19.0)
Exception:
Traceback (most recent call last):
  File "/tmp/venv/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 176, in main
    status = self.run(options, args)
  File "/tmp/venv/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 346, in run
    session=session, autobuilding=True
  File "/tmp/venv/lib/python3.6/site-packages/pip/_internal/wheel.py", line 848, in build
    assert building_is_possible
AssertionError
$ pip install git+https://github.com/pradyunsg/pip@fix/pep-517-building-assertion
Collecting git+https://github.com/pradyunsg/pip@fix/pep-517-building-assertion
  Cloning https://github.com/pradyunsg/pip (to revision fix/pep-517-building-assertion) to ./pip-req-build-g_3qep31
Branch 'fix/pep-517-building-assertion' set up to track remote branch 'fix/pep-517-building-assertion' from 'origin'.
Switched to a new branch 'fix/pep-517-building-assertion'
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: pip
  Building wheel for pip (PEP 517) ... done
  Stored in directory: /tmp/pip-ephem-wheel-cache-sb1_muik/wheels/bd/86/cd/7688dba746eabc598fb37d4a93e2ff9bd05a6d9f907ee7b6cd
Successfully built pip
Installing collected packages: pip
  Found existing installation: pip 19.0
    Uninstalling pip-19.0:
      Successfully uninstalled pip-19.0
Successfully installed pip-19.1.dev0
$ pip install --no-cache-dir astpretty  # downloads a wheel
Collecting astpretty
  Downloading https://files.pythonhosted.org/packages/9d/10/cb0c3a3edb16f45be05bdba7f37798fcddb8cf085def8cb6e62b2ad7c711/astpretty-1.4.1-py2.py3-none-any.whl
Installing collected packages: astpretty
Successfully installed astpretty-1.4.1
$ pip install --no-cache-dir simplejson  # requires building
Collecting simplejson
  Downloading https://files.pythonhosted.org/packages/e3/24/c35fb1c1c315fc0fffe61ea00d3f88e85469004713dab488dee4f35b0aff/simplejson-3.16.0.tar.gz (81kB)
    100% |โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ| 81kB 1.0MB/s 
Installing collected packages: simplejson
  Running setup.py install for simplejson ... done
Successfully installed simplejson-3.16.0

๊ณง PR6171์„ ๋ณ‘ํ•ฉํ•˜๊ณ  ๋ฒ„์ „ 19.0.1์„ ๋ฆด๋ฆฌ์Šคํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋˜๋Š” ์ข…์†์„ฑ, IMO์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ CI์— pip๋ฅผ ๊ณ ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์žฌํ˜„์„ฑ์ด์—†๊ณ  ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ํŒŒ์†์˜ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์ •ํ•˜๋ฉด ๋ฏธ๋ฆฌ ํ™•์ธํ•˜๊ณ  ์›ํ•˜๋Š” ์†๋„๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋˜๋Š” ์ข…์†์„ฑ, IMO์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ CI์— pip๋ฅผ ๊ณ ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์žฌํ˜„์„ฑ์ด์—†๊ณ  ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ํŒŒ์†์˜ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์ •ํ•˜๋ฉด ๋ฏธ๋ฆฌ ํ™•์ธํ•˜๊ณ  ์›ํ•˜๋Š” ์†๋„๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@cjerdonek : pip ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ๋ณผ ๋•Œ ๋งŽ์€ (์•„๋งˆ๋„ ๋Œ€๋ถ€๋ถ„์˜) ์ปจํ…์ŠคํŠธ์—์„œ pip ์„ ๊ณ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ตœ์†Œํ•œ ๊ณ ์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ •ํ™•ํžˆ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์•„์•ผํ•˜๋ฉฐ, ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ pip ๊ด€๋ฆฌ์ž์—๊ฒŒ ๋ถˆํ‰ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

๊ทธ๋Ÿฌ๋‚˜ ... pip ๊ด€๋ฆฌ์ž ๊ด€์ ์—์„œ (๊ทธ๋ฆฌ๊ณ  ๋” ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ PyPA ๋˜๋Š” Python ํ•ต์‹ฌ ํŒ€ ๊ด€์ ์—์„œ) ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด pip ๊ณ ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ณด๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ž์‚ฐ์œผ๋กœ ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋นŒ๋“œ์— ์˜ํ•ด ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋Ÿฌํ•œ ํ•ต์‹ฌ ๋„๊ตฌ์™€ ์œ ์ง€ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์‹ ๋ขฐ ์ˆ˜์ค€์ด ๋†’์•„ ์กŒ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.)

์ด์™€ ๊ฐ™์€ ์‚ฌ๊ฑด์€ ๊ทธ ์‹ ๋ขฐ๋ฅผ ์•ฝํ™”์‹œํ‚ต๋‹ˆ๋‹ค. ๊นจ์ง„ CI ๋นŒ๋“œ๋Š” ์‹ค์ œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ (๋‹น์‹ ์ด ๋งํ–ˆ๋“ฏ์ด CI ๋นŒ๋“œ์— pip ๋ฅผ ๊ณ ์ •ํ•˜๊ฑฐ๋‚˜ ์–ด๋–ค ์œ„ํ—˜์ด ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•จ) ๋‹ค์Œ์˜ ์ฆ์ƒ ๋˜๋Š” ์˜คํžˆ๋ ค ์ƒ๊ด€ ๋œ ๊ฒฝ๊ณ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ์‹ ๋ขฐ๊ฐ€ ๋ฌด๋„ˆ์กŒ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์ œ๊ฐ€์ด ์‚ฌ๊ฑด์ด ์ผ์ข…์˜ (๋น„๋‚œ์—†๋Š”) ์‚ฌํ›„ ๋ถ„์„ ๊ณผ์ •์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค. pip ๊ด€๋ฆฌ์ž๋Š” ์ง€๊ธˆ ๋‹น์žฅ ๊ธฐ๋ถ„์ด ์ข‹์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ์ด๋ฉฐ ๊ฐœ์„  ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ด์™€ ๊ฐ™์€ ์‚ฌ๊ฑด์€ ์‹ ๋ขฐ ๊ตฌ์ถ•์— ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„ ๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌํ›„ ๋ถ„์„์„ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค (ํ•ญ์ƒ ๊ฐœ์„ ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค ๋ฆด๋ฆฌ์Šค ํ›„์— ๊ทธ๋ ‡๊ฒŒํ•ฉ๋‹ˆ๋‹ค).

(๋Œ€๋ถ€๋ถ„) ์ ์ ˆํ•œ ๋‹ด๋ก ์„ ์œ ์ง€ํ•˜๊ณ  ๊ฑด์„ค์ ์ธ ์˜๊ฒฌ์„ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒํ™ฉ์ด ํ›จ์”ฌ ๋” ๋ถ€์‹๋ฉ๋‹ˆ๋‹ค. :)

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์กฐ์‚ฌํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ณง 19.0.1์ด ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•ต์‹ฌ์€ --no-cache-dir ์•„๋ž˜์—์„œ ๋นŒ๋“œํ•˜๊ธฐ์œ„ํ•œ ์ถฉ๋ถ„ํ•œ ํ…Œ์ŠคํŠธ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋“œ๋Ÿฌ๋ƒˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ์˜์—ญ์˜ ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ๋Š” ์ด์™€ ๊ฐ™์€ ํšŒ๊ท€๋ฅผ ํ”ผํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ฉฐ,๋ณด๋‹ค ์ผ๋ฐ˜์ ์œผ๋กœ "ํ•ต์‹ฌ"๊ธฐ๋Šฅ์ด ๊ณผ์†Œ ํ…Œ์ŠคํŠธ๋˜๊ณ  ์žˆ๋Š”์ง€ ๊ฒ€ํ† ํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ• ๊ด€๋ฆฌ์ž๋กœ์„œ ์ œ๊ฐ€ ๊ฐ€์ง„ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ์‚ฌ๋žŒ๋“ค์ด "ํ•ต์‹ฌ"๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์„ ์•„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” --no-cache-dir ๊ฐ€ ์ƒ๋‹นํžˆ ํ‹ˆ์ƒˆ ์‹œ์žฅ์ด๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ์ด ๊ฒฝ์šฐ์— ๋‚ด ์ง๊ฐ์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. :-) ๋”ฐ๋ผ์„œ ์ด์™€ ๊ฐ™์€ ํ”ผ๋“œ๋ฐฑ์€ ํŠนํžˆ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฒ„๊ทธ์— ๋Œ€ํ•ด์„œ๋งŒ 19.0.1์ด ๊ณง ๋ฆด๋ฆฌ์Šค ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์ค‘์š”ํ•˜๊ณ  ์‹œ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋Š” ๋งค์ผ 19.0.2์—์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ• ๊ด€๋ฆฌ์ž๋กœ์„œ ์ œ๊ฐ€ ๊ฐ€์ง„ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ์‚ฌ๋žŒ๋“ค์ด "ํ•ต์‹ฌ"๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์„ ์•„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” --no-cache-dir ๊ฐ€ ์ƒ๋‹นํžˆ ํ‹ˆ์ƒˆ ์‹œ์žฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์„ ๊ฒƒ์ด๋ฏ€๋กœ ๋ถ„๋ช…ํžˆ์ด ๊ฒฝ์šฐ์— ๋‚ด ์ง๊ฐ์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. :-) ๋”ฐ๋ผ์„œ ์ด์™€ ๊ฐ™์€ ํ”ผ๋“œ๋ฐฑ์€ ํŠนํžˆ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ --no-cache-dir ์‚ฌ์šฉํ•˜๋Š” ์œ ์ผํ•œ ์ด์œ ๋Š” mpi4py ๋ฅผ ์„ค์น˜ํ•˜๊ธฐ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒํ•˜๋ฉด ์„ค์น˜ํ•˜๊ธฐ ์ „์— ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ๋‹ค์‹œ ๋นŒ๋“œํ•˜์—ฌ MPI ๋ฐฐํฌ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๋กœ CI ์‹œ์Šคํ…œ ์™ธ๋ถ€์—์„œ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ pip 18.1.0์œผ๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ–ˆ์œผ๋ฉฐ ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

pip install pip==18.1.0

๊ณง ํฌ๋งํ•˜๊ณ  ์—…๊ทธ๋ ˆ์ด๋“œํ•˜์‹ญ์‹œ์˜ค.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

pip install "pip!=19.0"

ํฌ๋ง 19.1์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. :)

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ธด๊ธ‰ํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ •๊ณผ ํ•จ๊ป˜ ๋น„๊ต์  ๋นจ๋ฆฌ 19.0.1์„ ๊ฐ€์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ PEP 517 ๊ด€๋ จ ๋ฌธ์ œ์ธ https://github.com/pypa/pip ์™€ ๊ฐ™์ด --no-use-pep517 ๋ฅผ --no-cache-dir --no-use-pep517 ์™€ ํ•จ๊ป˜ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ด์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. / issues / 6163 # issuecomment -456772043

ํ• ๊ด€๋ฆฌ์ž๋กœ์„œ ์ œ๊ฐ€ ๊ฐ€์ง„ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๋Š” ์‚ฌ๋žŒ๋“ค์ด "ํ•ต์‹ฌ"๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์„ ์•„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ, ๋‚˜๋Š” --no-cache-dir์ด ์ƒ๋‹นํžˆ ํ‹ˆ์ƒˆ ์‹œ์žฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ถ„๋ช…ํžˆ์ด ๊ฒฝ์šฐ ์ œ ์ง๊ฐ์€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. :-) ๋”ฐ๋ผ์„œ ์ด์™€ ๊ฐ™์€ ํ”ผ๋“œ๋ฐฑ์€ ํŠนํžˆ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

FWIW : Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œ ํ•  ๋•Œ --no-cache-dir ์ž์ฃผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์šฉํ•˜์ง€ ์•Š์€ ํ™˜๊ฒฝ์—์„œ ์บ์‹œ ํฌ๋ž™์ด ๋‚จ์ง€ ์•Š๋„๋กํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ ๋˜๋Š” ์ข…์†์„ฑ, IMO์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ CI์— pip๋ฅผ ๊ณ ์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์žฌํ˜„์„ฑ์ด์—†๊ณ  ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ํŒŒ์†์˜ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์ •ํ•˜๋ฉด ๋ฏธ๋ฆฌ ํ™•์ธํ•˜๊ณ  ์›ํ•˜๋Š” ์†๋„๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ํ™˜๊ฒฝ์—์„œ pip๋Š” ์ข…์†์„ฑ์ด ์•„๋‹™๋‹ˆ๋‹ค. virtualenv๋ฅผ ๋งŒ๋“ค ๋•Œ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ  ์ œํ’ˆ์ด ์ตœ์‹  ๋ฒ„์ „์—์„œ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ๊ธฐ์—์„œ ํ…Œ์ŠคํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ๊ณ ์ •ํ•˜๋ฉด ์ด์ „ ๋ฒ„์ „์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—…๋ฐ์ดํŠธ๋Š” ๊ณง ๋ˆ„๊ตฌ๋„ ๊ฐํžˆ ์‹œ์ž‘ํ•  ์ˆ˜์—†๋Š” ์ž‘์—…์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ ์žˆ์—ˆ์–ด. ๊ทธ๋ž˜์„œ ์ œ ์˜๊ฒฌ์€ ์ •๋ง๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ๊ณ ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ฆ‰์‹œ ์ˆ˜์ •ํ•˜์‹ญ์‹œ์˜ค.

pip 19.0.1์€์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ˆ˜์ •์œผ๋กœ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด 19.0.1 ๋ฒ„์ „ ์ˆ˜์ •์„๋ณด๊ณ  ๊ธฐ๋ปค์ง€ ๋งŒ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ pip <19.0์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” --no-cache-dir ๋กœ Docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฑธ๋ฐ›๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์žˆ๋‚˜์š”?

Exception:
Traceback (most recent call last):
  File "/usr/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 176, in main
    status = self.run(options, args)
  File "/usr/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 346, in run
    session=session, autobuilding=True
  File "/usr/lib/python3.6/site-packages/pip/_internal/wheel.py", line 886, in build
    assert have_directory_for_build
AssertionError

์ƒˆ๋กœ์šด 19.0.1 ๋ฒ„์ „ ์ˆ˜์ •์„๋ณด๊ณ  ๊ธฐ๋ปค์ง€ ๋งŒ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ pip <19.0์—์„œ ์ž˜ ์ž‘๋™ํ•˜๋Š” --no-cache-dir ๋กœ Docker ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฑธ๋ฐ›๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์žˆ๋‚˜์š”?

19.0.1์—์„œ ์ˆ˜์ •์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋„์ปค ๋ ˆ์ด์–ด ์บ์‹œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ? -ํ˜„์žฌ ์‚ฌ์šฉ์ค‘์ธ ๋ฒ„์ „์„ ํ™•์ธํ•˜๋ ค๋ฉด pip --version ์„ (๋ฅผ) ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค.

๋ชจ๋“  Docker ํŒŒ์ผ์— Python ๋ฐ pip ๋ฒ„์ „ ๊ฒ€์‚ฌ๊ฐ€ ์žˆ์œผ๋ฉฐ 19.0.1์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.

@dmulter ์˜ค๋Š˜ ์•„์นจ Gist ์—์„œ ๋‚ด Docker ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋นŒ๋“œํ–ˆ์œผ๋ฉฐ v19.0.1 ์œผ๋กœ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Dockerfile์„ Gist๋กœ ๊ณต์œ ํ•˜์—ฌ ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ™•์ธ์„ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์„ ๋‹ค์‹œ ์ฒญ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Dockerfile ๊ณผ ๋‚ด ๋นŒ๋“œ ์ถœ๋ ฅ ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋œ ๋„์ปค ๋ช…๋ น์— ๋Œ€ํ•œ ๋นŒ๋“œ ์ถœ๋ ฅ์— ๋Œ€ํ•œ ๋‚ด ๋ฉ”๋ชจ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

pip3์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์— ๋‚ด๊ฐ€ ๊ฐ€์ง„ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ...

> pip3 install --upgrade 'pip>=19.01' setuptools

  Could not find a version that satisfies the requirement pip>=19.01 (from versions: 0.2, 0.2.1, 0.3, 0.3.1, 0.4, 0.5, 0.5.1, 0.6, 0.6.1, 0.6.2, 0.6.3, 0.7, 0.7.1, 0.7.2, 0.8, 0.8.1, 0.8.2, 0.8.3, 1.0, 1.0.1, 1.0.2, 1.1, 1.2, 1.2.1, 1.3, 1.3.1, 1.4, 1.4.1, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 6.0, 6.0.1, 6.0.2, 6.0.3, 6.0.4, 6.0.5, 6.0.6, 6.0.7, 6.0.8, 6.1.0, 6.1.1, 7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.1.0, 7.1.1, 7.1.2, 8.0.0, 8.0.1, 8.0.2, 8.0.3, 8.1.0, 8.1.1, 8.1.2, 9.0.0, 9.0.1, 9.0.2, 9.0.3, 10.0.0b1, 10.0.0b2, 10.0.0, 10.0.1, 18.0, 18.1, 19.0)
No matching distribution found for pip>=19.01
You are using pip version 10.0.1, however version 19.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

@MrAtheist ์ž‘์€ ์˜คํƒ€๊ฐ€ 19.0.1 ์ด์ง€๋งŒ 19.01 ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฃ„์†ก ํ•ฉ๋‹ˆ๋‹ค๋งŒ, ์–ด๋Š ์ชฝ์ด๋“  ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „์—๋Š” 19.0.1 ๋ชฉ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค ... ยฏ_ (ใƒ„) _ / ยฏ

@dmulter ์ฒ˜๋Ÿผ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์ถœ๋ ฅ์—์„œ โ€‹โ€‹์ถ”์ถœ :

. venv/bin/activate;  python -m pip install --upgrade pip; python -m pip install ndg_httpsclient; python -m pip install . -i https://xxxx.yyyy.com/simple --upgrade --no-cache-dir flask
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Requirement already up-to-date: pip in ./venv/lib/python2.7/site-packages (19.0.1)
...
Requirement already satisfied, skipping upgrade: pycparser in ./venv/lib/python2.7/site-packages (from cffi>=1.1->bcrypt>=3.1.3->paramiko<3.0,>=1.10->Fabric==1.14.0->conference-gll-load-test===0.0.1-SNAPSHOT) (2.19)
Exception:
Traceback (most recent call last):
  File "/mnt/jenkins/workspace/venv/local/lib/python2.7/site-packages/pip/_internal/cli/base_command.py", line 176, in main
    status = self.run(options, args)
  File "/mnt/jenkins/workspace/venv/local/lib/python2.7/site-packages/pip/_internal/commands/install.py", line 346, in run
    session=session, autobuilding=True
  File "/mnt/jenkins/workspace/venv/local/lib/python2.7/site-packages/pip/_internal/wheel.py", line 886, in build
    assert have_directory_for_build
AssertionError
make: *** [install] Error 2

์ด์ „ ์Šค๋ ˆ๋“œ์—์„œ I๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๋ฌผ์—ˆ๋‹ค --no-use-pep517 ๊ณผ ํ•จ๊ป˜ --no-cache-dir ์‚ฌ๋žŒ๋“ค์„์œ„ํ•œ ์ผ ์ž‘๋™ ํ•  ์ˆ˜์žˆ๊ฒŒ,ํ•˜์ง€๋งŒ ๋‚˜๋Š” ๋‹ต์žฅ์„ ๋ณด์ง€ ๋ชปํ–ˆ๋‹ค. ์—ฌ์ „ํžˆ ์˜ต์…˜์„ ๊ฒฝํ—˜ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

--no-use-pep517 ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ”์œ„๋ฅผ ์ขํžˆ๋Š” ๋ฐ ๋„์›€์ด๋˜๋Š” ํฌ๋ง.

pip 19.0.1์€ virtualenv์—์„œ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Jenkins (Shining Panda) ๋‚ด๋ถ€์—์„œ๋Š” ์—ฌ์ „ํžˆ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. --no-use-pep517์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ์ „ํžˆ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ --no-use-pep517 ์—์„œ pip 19.0.1๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜ ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์™œ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๊ฐ€ pip๊ฐ€ ์ƒˆ ๋ฒ„์ „์„ ์–ป์„ ๋•Œ๋งˆ๋‹ค ์ ์‘ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

@pradyunsg ์˜ ์š”์ฒญ ์— ๋”ฐ๋ผ 19.0.1 ๋ฆด๋ฆฌ์Šค์˜ AssertionError ์— ํ•ด๋‹นํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฌธ์ œ (https://github.com/pypa/pip/issues/6197)๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒ”์œ„์— ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด ์กฐ์‚ฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š”์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ๋‹ซ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ pip ๋ฒ„์ „์„ ์ˆ˜์ •์œผ๋กœ ๊ณ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

pip install --upgrade pip==18.1

๋˜๋Š” FROM python:3.6-alpine ์ด FROM python:3.6.7-alpine ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋Š” ๋‹ซํžŒ ํ›„ ์ตœ๊ทผ ํ™œ๋™์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ์ž ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ด€๋ จ ๋ฒ„๊ทธ์— ๋Œ€ํ•œ ์ƒˆ ๋ฌธ์ œ๋ฅผ์—ฌ์‹ญ์‹œ์˜ค.

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