https://github.com/pypa/pipenv/issues/1137 ์์ ์ธ๊ธํ๋ฏ์ด pipenv
๋ ํ์ฌ [packages]
์ [dev-packages]
์ฌ์ด์ ์๊ตฌ ์ฌํญ ์ถฉ๋์ ํ์ธํ์ง ์์ต๋๋ค. ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ํฌํจํ๋ ํ๋ซ requirements.txt
์ ์์ฑํ๋ ค๊ณ ํ ๋ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๋ฟ๋ง ์๋๋ผ ์ข
์์ฑ์ด ์ถฉ๋ํ ๋ ์ผ๋ฐ์ ์ธ ์ด์ํจ์ ์ ๋ฐํฉ๋๋ค.
pipenv install
์๋ํ๋ ๋ฐฉ์(์ค์น๋ฅผ ์คํํ ๋ค์ ์ ๊ธ ํ์ผ ์
๋ฐ์ดํธ)์ ๋ก์ปฌ ํ๊ฒฝ์ด ์ ๊ธ ํ์ผ๊ณผ ๋๊ธฐํ๋์ง ์๋ ๊ฒ๋ ๋น๊ต์ ์ฝ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ค์น ์์ฒญ์ด ์ด๋ฏธ ์ค์น๋ ํจํค์ง๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ, ๊ทธ๋ฌ๋ฉด ๋ก์ปฌ๋ก ์
๋ฐ์ดํธ๋์ง ์์ง๋ง ์ ๊ธ ํ์ผ์ ๊ตฌ์ฑ๋ ํจํค์ง ์ธ๋ฑ์ค์์ ์ฌ์ฉํ ์ ์๋ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธ๋ฉ๋๋ค.
์ด ๋ฌธ์ ๋ ๊ฐ๋ณ ๊ธฐ๋ฅ ์์ฒญ์ ๋ค๋ฃจ์ง ์์ต๋๋ค. ๋์ ์ ๊ธ ํ์ผ์ ๋จผ์ ์์ ํ ๋ค์ ์ ๋ฐ์ดํธ๋ ์ ๊ธ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ค์ ์ค์น ๋จ๊ณ๋ฅผ ์งํํ๋๋ก ์ค์น ๋ช ๋ น์ ๊ตฌ์ฑํ์ฌ ์ ๊ธ ํ์ผ๊ณผ ๋ก์ปฌ ํ๊ฒฝ ๊ฐ์ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๋ชฉํ๋ฅผ ์ค์ ํฉ๋๋ค. (์ด ์์ ์ ์์๋๋ ์๊ฐ์ ๋ํ ๋ชฉํ ETA๋ ์์ต๋๋ค. ๊ธฐ๋กํ๋ ๊ฒ์ ๋จ์ง ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์๊ณ ๊ทธ ๋ฐฉํฅ์ ํธ์ํ๋ค๋ ๊ฒ์ ํ์ธํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค.)
์ด๊ฒ์ ํต์ฌ ์ธก๋ฉด์ pipenv install
, pipenv uninstall
, pipenv lock
๋ฐ pipenv update
๊ฐ์ ์ฑ
์ ๋ถํ ์ ๋ช
ํํ ํ๋ ๊ฒ์
๋๋ค. ํ์ํ๋ค๊ณ ํ๋จ๋๋ ๊ฒฝ์ฐ ์ ํ์ ๋ช
๋ น).
์ ์๋ ํ์ ๋จ๊ณ:
pipenv sync
๋ถ์ํ๋ ํ์ฌ ํ๊ฒฝ (์ ์ฌํ ๋กํฌ ํ์ผ๊ณผ ์ผ์นํ๋ ๊ฒ์ ๋ณด์ฅ pip-sync
์์ pip-tools
). (10.0.0์ฉ @kennethreitz ์ ์ํด ๊ตฌํ๋์์ผ๋ฉฐ pipenv sync
๋ ์ ๊ธด ํจํค์ง์ ๋ฒ์ ์ด ์ ๊ธ ํ์ผ๊ณผ ์ผ์นํ๋๋ก ํ๋ ๋ฐ๋ฉด pipenv clean
๋ ์ ๊ธ ํ์ผ์ ์๋ ํจํค์ง๋ฅผ ์ ๊ฑฐํฉ๋๋ค. pip-sync
, ๋ค๋ฅธ ๋ช
๋ น์ ์์์ ๋๊ธฐํ๋ฅผ ํฌํจํด๋ ๊ฐ์ ํ๊ฒฝ์์ ์๋ฌด ๊ฒ๋ ์๊ธฐ์น ์๊ฒ ์ญ์ ๋์ง ์์์ ์๋ฏธํฉ๋๋ค.pipenv install
๋ํ ํ์ฌ ๋์์ ์ ์งํ์ง๋ง ์๋ก์ด ํ๊ฒฝ์ ์ค์ ํ ๋ pipenv sync
์ฌ์ฉ์ ๊ถ์ฅํ๋๋ก ์ ํํฉ๋๋ค(๊ทธ๋ฌ๋ฉด pipenv install
๊ฐ ์ฃผ๋ก ์ค์น๋ ๊ตฌ์ฑ ์์ ๋ณ๊ฒฝ )[packages]
๋ฐ [dev-packages]
๊ฐ ํญ์ ์๋ก ์ผ์นํ๋๋ก pipenv lock
์
๋ฐ์ดํธ(#1137์ ๋ํ ํด์๋)pipenv update
๋ฅผ pipenv lock && pipenv sync
์ ๋์ผํ๊ฒ ๋ณ๊ฒฝํฉ๋๋ค(pipenv ์
๋ฐ์ดํธ๋ ๋์ ์์ ํ ์ ๊ฑฐ๋ฉ๋๋ค. ์ด์ ๋์์ ์ค์ ๋ก ํ์ฌ pipenv sync && pipenv clean
๊ฒ๊ณผ ๋น์ทํ์ต๋๋ค).Pipfile
์์ ์ฌ์ ํ ์๋ก์ด Pipfile.lock
๋ฅผ ์์ฑํ๋ ์๋ก์ด pipenv lock --keep-outdated
์ต์
์ ์ถ๊ฐํ์ง๋ง Pipfile
๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ถฉ์กฑ์ํค๋ ๋ฐ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ๋ง ์ต์ํํฉ๋๋ค. pipenv install <packages>
๋ฅผ "Pipfile์์ ํญ๋ชฉ ์ถ๊ฐ ๋๋ ์
๋ฐ์ดํธ" ๋ค์์ pipenv lock && pipenv sync
(#1486์์ ๊ตฌํ๋จ).pipenv lock
์์
์ผ๋ก ์ ๋ฌ๋๋ pipenv ์ค์น์ --keep-outdated
์ต์
์ ์ถ๊ฐํฉ๋๋ค.pipenv install --selective-upgrade <packages>
๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ pipenv lock --keep-outdated
๋ฅผ ์คํํ ๋ค์ pipenv install --keep-outdated <packages>
(์ด๋ https://github.com/pypa/pipenv/issues/966์ ๋ํ ์ง์์ ์ ๊ณตํ๋ ๋ง์ง๋ง ๋จ๊ณ). ํจํค์ง ์ด๋ฆ๋ง ์ง์ ํ๋ฉด Pipfile
์ ๊ธฐ์กด ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด์ด ์ฌ์ฉ๋๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ์ง์ ๋ ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด์ด ๊ธฐ์กด ์ ์ฝ ์กฐ๊ฑด์ ๋ฎ์ด์๋๋ค. ์ด๊ฒ์ด ํ์ฌ ํ๊ฒฝ์ ๋ฏธ์น๋ ์ํฅ์ pip 9+์ pip install --upgrade --upgrade-strategy=only-if-needed <packages>
์ ๋์ผํด์ผ ํฉ๋๋ค( Pipfile.lock
๋ ์
๋ฐ์ดํธ๋๋ค๋ ์ ๋ง ์ ์ธ).์ด ํ์ ๋จ๊ณ ์ค ํ๋๋ฅผ ์ ํํ๋ ค๋ ์ฌ๋์ด ์์ผ๋ฉด ์๋์ ์๊ฒฌ์ ์์ฑํ์ฌ ์์ ์ค์ด๋ผ๊ณ ๋งํ ๋ค์(๋ ธ๋ ฅ์ ์ค๋ณต์ ์ต์ํํ๊ธฐ ์ํด) ์ด ๋ฌธ์ ์ ์ฐ๊ฒฐ๋๋ PR์ ์ ์ถํ์ญ์์ค. (์์ ๋์ด๋ ๋จ๊ณ๋ ์ดํ ๋จ๊ณ๊ฐ ์คํ๋๊ธฐ ์ ์ ์๋ฃํด์ผ ํจ)
์ด๋ฆฐ ์ง๋ฌธ:
ํด๊ฒฐ๋ ์ง๋ฌธ(์ ์ด๋ ๊ฐ๊น์ด ์ฅ๋์):
pipenv lock
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์
๊ทธ๋ ์ด๋ํ๋๋ก ๊ณ์ ๊ธฐ๋ณธ ์ค์ ๋๋ฉฐ pipenv lock --keep-outdated
๋ Pipfile
๋ณ๊ฒฝ(์ถ๊ฐ, ์ ๊ฑฐ ๋ฐ ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด ๋ณ๊ฒฝ)pipenv lock --skip-lock
๋ ์ค๋๋ ๊ณผ ๊ฐ์ด ๊ณ์ ์๋ํฉ๋๋ค(์ ๊ธ ํ์ผ๊ณผ ๋ก์ปฌ ํ๊ฒฝ์ด ๋๊ธฐํ๋์ง ์์ ์ ์์์ ์๋ฏธํ๋๋ผ๋: pipenv sync && pipenv clean
๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ๋๊ธฐํ).pipenv install
๋ฐ pipenv install <package>
๋ ๊ณ์ํด์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฒด pipenv lock
๋ฅผ ์๋ฏธํ๋ฉฐ pipenv install --keep-outdated
๋ ์ค์น ์์ฒญ์ ์ถฉ์กฑ์ํค๋ ๋ฐ ํ์ํ ์ต์ํ์ ๋ณ๊ฒฝ๋ง ์์ฒญํ๋ ๋ฐ ํ์ํฉ๋๋ค.pipenv install <package>
๋ ์๋ก์ด --selective-upgrade
์ต์
์ ๋ํด์๋ ๋ช
๋ น์ค์ ์๋ฌด๊ฒ๋ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ Pipfile
์ ๊ธฐ์กด ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด์ ๊ณ์ ์ ์งํฉ๋๋ค.pipenv uninstall <package>
๋ ์ง์ ๋ ํจํค์ง๋ฅผ ์ ๊ฑฐํ๋ฏ๋ก ๋ก์ปฌ ํ๊ฒฝ์ ๋ ์ด์ ํ์ํ ์ข
์์ฑ์ด ๋จ์ง ์์ ์ ์์ต๋๋ค. pipenv lock && pipenv sync && pipenv clean
ํ๋ฉด ์ง์์ง๋๋ค.์ฐธ๊ณ : ์ฌ๊ธฐ์ ์๋ ์ ์์ ์ ๊ธ ํ์ผ์ ์์ฑํ ๋ [dev-packages]
๋ฐ [packages]
๊ฐ ๋๊ธฐํ๋ ์ํ๋ก ์ ์ง๋๊ณ ์ฒ์ ๋ช ๊ฐ์ ๊ฒ์๋ฌผ์ด ์ด๋ฅผ ๋ฐ์ํ๋๋ก ํ๋ ๊ฒ์ด์์ต๋๋ค. ํ์ฌ ์ ์์ ๋์ https://github.com/pypa/pipenv/issues/1255#issuecomment -354585775์์ ์ฒ์ ์ธ๊ธ๋ ์ ๊ธ ํ์ผ ๊ธฐ๋ฐ ๋์นญ ์
๋ฐ์ดํธ ์ ์์ ๋ค๋ฃน๋๋ค.
์ฌ๊ธฐ์ ์ ์ฌ์ ์ธ ๊ตฌํ ๋ฌธ์ ๋ฅผ ์ธ๊ธํฉ๋๋ค. pip-tools
ํ์ฌ ์ ์ฝ ์กฐ๊ฑด ํ์ผ์ ์ง์ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๋จผ์ ํด๋น ์ง์์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ pip๊ฐ ์ค์ ์ค์น๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ค์น ์๊ฐ ์ถฉ๋ ๊ฐ์ง ๋ ์๊ด์์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
์ค์น ์๊ฐ ์์ฒด๊น์ง ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค. ์ ๊ธ ํ์ผ์ ๋ํ ์ ์ฒด ์ ์ด ์ข ์์ฑ์ ํด๊ฒฐํ ๋ ์ด๋ฅผ ์ํํ ์ ์์ต๋๋ค.
https://github.com/pypa/pipenv/issues/966#issuecomment -339707418์์ ๊ด๋ จ ์๋ ์ข
์์ฑ์ ์
๋ฐ์ดํธํ์ง ๋ง๋ผ๋ @vphilippon ์ ์์ ๋ฐ๋ผ ๋๋ถ๋ถ LocalRequirementsRepository
์ด ์์
์ ์ํํ ์ ์์ต๋๋ค. https://github.com/taion/pipf/blob/1feee35a2e4480bc7e5b53bfab17587d37bdf9dd/pipf/pipfile.py#L175 -L185์ฒ๋ผ ๋ณด์
๋๋ค.
https://github.com/pypa/pipfile/issues/100 ๋ Pipfile.lock
๊ฐ ์๋ก ๋ค๋ฅธ ๊ทธ๋ฃน์ ๋ํด ํธํ๋์ง ์๋ ์ฌ๋ฌ ์ข
์์ฑ ์งํฉ์ ๋ํ๋ผ ์ ์๋ค๋ ๊ฒ์ ์ฌ์ ํ โโ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ์
๋๋ค.
@taion ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ ์ข
์์ฑ์ ๋ณด์ง ์๊ณ ๋ฐฐํฌ ์ข
์์ฑ์ ๋ค์ ์ ๊ทธ๋ ๋๊ตฌ๋ฅผ ์ง์ํ๊ธฐ๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ Pipfile.lock
๋ฅผ ํ๋ฉด ํํ์ผ๋ก ์ ํํ์ง ์์ ๊ฒ์
๋๋ค. ์, ์ด๋ [dev-packages]
์น์
์ด ์ต์ ์ด ์๋ ์ ์์์ ์๋ฏธํ์ง๋ง ์ด๊ฒ์ด ์ด ๋ฌธ์ ์ ๋ชฉ์ ์
๋๋ค. [dev-packages]
์น์
์ด ์
๋ฐ์ดํธ๋ ๋ ํด๋น ์น์
์ด ๋ฐฐํฌ ํจํค์ง ์น์
.
ํ์ง๋ง ์ค์น ์๊ฐ์ด ์๋ ์ ๊ธ ์๊ฐ์ ์ถฉ๋์ ๊ฐ์งํ ์ ์๋ค๋ฉด ํ๋ฅญํ ๊ฒ์ ๋๋ค.
์ค์ ๋ก ์ฌ์ฉ์ ๊ด์ ์์๋ https://github.com/pypa/pipenv/issues/966 ๋ฐ ๊ธฐํ ๊ด๋ จ(๋ซํ) ๋ฌธ์ ์ ํน๋ณํ ๊ฒฝ์ฐ์ผ ๋ฟ์ ๋๋ค.
์ต์ ์ ๊ฒฝ์ฐ์ฒ๋ผ ์ ๊ธ ํ์ผ์์ ํด๊ฒฐ๋ ์ ์ด ์ข ์์ฑ์ ์บ์ํ๋ฉด ๋ฉ๋๋ค. Yarn๊ณผ npm์ ์ด๋ฏธ ๊ทธ๋ ๊ฒ ํฉ๋๋ค. ๊ฐ๋ฐ์ dep์ ๋ํด PyPI๋ฅผ ๋๋ฅด์ง ์๊ณ ๋ชจ๋ prod dep๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ง ์๋ ํ ๋๊ธฐํ๋์ง ์์ ์ํ๋ก ํ๋ฌ๊ฐ๋๋ก ๋ด๋ฒ๋ ค ๋๋ ์ ๊ทน์ ์ธ ์ด์ ์ด ์์ต๋๋ค. ์ด๋ฌํ ํจํค์ง ๊ด๋ฆฌ ํจํด์ ๋ง์ ์๊ฐ์ ๋ณด๋ธ ์ฌ๋์ผ๋ก์ ๊ธฐ์กด ๋๊ตฌ๊ฐ ์๋ํ๋ ๋ฐฉ์์์ ์ด๋ฌํ ํธ์ฐจ์ ๋๋ถ๋ถ์ ๊ณ ํต์ ์ผ๊ธฐํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ํ npm์ ์ค์ ๋ก ํ๋ก๋์ ์ข ์์ฑ ์ ๋ฐ์ดํธ๋ง ์ง์ํ๊ณ ๊ฐ๋ฐ ์ข ์์ฑ์ ์ง์ํ์ง ์์ผ๋ฉฐ ์ค์ ๋ก ํ๋ซ ์ ๊ธ ํ์ผ(์บ์๋ ํด์๋ ํฌํจ)์ ์ฌ์ฉํ๋ค๊ณ ๋ง๋ถ์ ๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ Yarn์ ๋๋ "์ ๋ฐ์ดํธ ์ข ์์ฑ" ํ์ ๋ช ๋ น์ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ(๋ํํ ๋ฒ์ ์ prod ๋ฐ dev deps๋ฅผ ๋ถํ ํ์ง๋ง) ์ด์ ๋ํด ๋ถํํ๋ ์ฌ๋์ด ์๋ ๊ฒ ๊ฐ์ง๋ง ์๋ง๋ npm - ๊ธฐ๋ณธ์ ์ผ๋ก ์ข ์์ฑ์ ๋ํด ์บ๋ฟ ๋ฒ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์ ์ฌํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก SemVer๋ฅผ ๋ฐ๋ฅด๋ ๋ฐ ์ถฉ๋ถํ ๋ฅ์ํ์ฌ ์ฌ์ฉ์์๊ฒ dev dep ์ถฉ๋๋ก ์ธํ ๋ฌธ์ ๋ฅผ ๊ฑฐ์ ์ผ์ผํค์ง ์์ต๋๋ค. Python ์ํ๊ณ๋ ๊ทธ๋ค์ง ๋ง์ง ์์ต๋๋ค.
@taion ๋ช
์์ pipenv lock
์ด๋ฏธ [packages]
๋ฐ [dev-packages]
๋ชจ๋ ์์ ํ ํด๊ฒฐํ๋ฏ๋ก ์ด ๊ฒฝ์ฐ ๊ตฌ์ฑ ๋๋ฆฌํํธ์ ๋ํด ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค. ์ข
์์ฑ ์ถฉ๋์ ๊ฐ์งํ๋ ๊ฒ์ด ๊ฐ์ฅ ๋ฐ๋์งํฉ๋๋ค).
pipenv install package
๋ฐ pipenv install --dev package
๋ถ์ผ์น๋ฅผ ๊ฐ์ง(๋ฐ ํด๊ฒฐ)ํ ์ ์๋ ๋์นญ ์๋ฃจ์
์ด ์๋ค๋ฉด ๊ทธ๊ฒ์ด ์ข์ ๋ฐฉ๋ฒ์ด ๋ ๊ฒ์ด๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋น๋์นญ ์๋ฃจ์
์ด ๊ตฌํํ๊ธฐ ๋ ์ฝ๋ค๋ฉด(๋ฐ๋ผ์ ์ด ์ ์์ ํ์ด ์กํ) ๋น๋์นญ ์๋ฃจ์
๋ ๊ด์ฐฎ์ ๊ฒ์
๋๋ค.
๋์นญ ์ ๊ทผ ๋ฐฉ์์ ๊ฒฝ์ฐ @vphilippon ์ด https://github.com/pypa/pipenv/issues/966#issuecomment -339791934์ ์ค๋ช ๋ ์ ๊ทผ ๋ฐฉ์์ ์ถ๊ตฌํ๋ ๊ฒ์ด ํ๋ ์ ๋ฐ ๊ตฌํ์ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ด์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํฉ๋๋ค. :
pipenv lock --keep-outdated
์ต์
์ถ๊ฐpipenv install package
๋ฅผ "Pipfile ํธ์ง -> pipenv lock --keep-outdated
-> pipenv install
"๋ก ์ ์ํ๋๋ก ๋ณ๊ฒฝํฉ๋๋ค.(์ฐธ๊ณ : ๋ณด์ ๊ด๋ฆฌ์์ ์ด์ ๋ก, ๋ ์ ๋ง์ ๊ธฐ๋ณธ ๋์์ ์ ์งํ๋ ค๋ฉด pipenv lock
์
๊ทธ๋ ์ด๋ ๋ฑ ๋ชจ๋ ๊ฒ์ - ๊ทธ๋ฌ๋, ๋๋ ๊ฐ์ ๊ธฐ๋ฅ์ ์๊ฐ ํ๋๊ฐ --keep-outdated
๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ด ์ ์๋ฆฌ์์์ ๋ ์ฅ์๋ฅผ ๊ฐ์ง๊ณ ์ข
์์ฑ์์ ๋ณด๊ณ ๋ ๋ณด์ ๋ฌธ์ ์ ๋ํ ์ ์ ์๋ต์ ๋ณด์ฅํ๊ธฐ ์ํด)
pipenv install
๋ํด ์ค๋ช
ํ๋ ๋์์ ๋๋ถ๋ถ #966์ด ์ป๋ ๊ฒ์ด์ง๋ง ์ ํํ ๋์ผํ์ง๋ ์์ต๋๋ค. X = "*"
๊ฐ ์๋ค๊ณ ์์ํด๋ณด์ญ์์ค. ์ด๋ ๊ฒ pipenv install X
์๋ง ์ฌ์ ํ ์
๊ทธ๋ ์ด๋ํด์ผํฉ๋๋ค X
์ ๋ณํ๊ฐ ์๋คํ๋๋ผ๋, ์ ๊ธ ํ์ผ์ Pipfile
. Pipenv๋ _์ค์ ๋ก_ ์
๋ฐ์ดํธ๋๋ ๋ด์ฉ์ ์ถ์ ํด์ผ ํฉ๋๋ค.
์ฆ, "์ ๊ธ"์์ "์ค์น"๋ฅผ ์์ ํ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด https://github.com/taion/pipf/blob/1feee35a2e4480bc7e5b53bfab17587d37bdf9dd/pipf/pipfile.py#L150 -L155๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ์ ๊ธ ํ์ผ์ ์ฌ์์ฑํ ๋ ์ญ์ ํ๊ธฐ ์ํด ์ค์น๋๋ ํจํค์ง์ ๋ํ ์ด์ ์ ์ฝ ์กฐ๊ฑด์ ๋ช ์์ ์ผ๋ก ์ ๋ฌํฉ๋๋ค. .
์ด์จ๋ ๋ถ๋ง์ ๋ช
์์ ์ธ pipenv lock
์ ๊ฐ์ ๊ฒ์ด ๋ชจ๋ ์ข
์์ฑ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ์ผ๋ก ์
๋ฐ์ดํธํ๋ค๋ ๊ฒ์ด ์๋๋๋ค. pipenv install Y
๊ฐ ๊ด๋ จ ์๋ X
์ ๋ฒ์ ์ ๊ฑด๋๋ฆฌ๋ ๊ฒ์
๋๋ค. ๋ค์ ๋งํด์, ์ฌ๋๋ค์ ์ค์ ๋ก pipenv lock --keep-outdated
๋ฅผ ๋ช
์์ ์ผ๋ก ์คํํ ํ์๊ฐ ์์ต๋๋ค.
์ฌ๊ธฐ์์ Yarn์ ์ฒ๋ฆฌ๋ CLI ์ธก๋ฉด์์ ๊ฝค ์ข์ ์์
๋๋ค. Yarn์๋ ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝํ์ง ์๊ณ ์ ๊ธ ํ์ผ์ ์์ฑํ๋ yarn lockfile
๊ฐ ์์ผ๋ฉฐ ๋ช
์์ ์ผ๋ก "[not] required"๋ก ํ์๋์ด ์์ผ๋ฉฐ ๋ชจ๋ ๊ฒ์ ์
๊ทธ๋ ์ด๋ํ๋ yarn upgrade
๊ฐ ์์ต๋๋ค. ์ด๋ค ์ด์ ๋ก ์ข
์์ฑ์ ์๋์ผ๋ก ํธ์งํ๋ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ๋ yarn install
๋ฅผ ์คํํ๋ ๊ฒ์
๋๋ค. ์ด๋ ์ ๊ธ ํ์ผ์ (์ต์ํ๊ฒ) ์
๋ฐ์ดํธํ๊ณ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
์ ๋ฐ์ดํธ๋ ์ข ์์ฑ์ ์ค์นํ๋ ๊ฒ ์ธ์๋ ์ ๊ธ ํ์ผ์ ๋ช ์์ ์ผ๋ก ์์ฑํ ํ์๊ฐ ์์์ผ๋ฉฐ ์ ๊ทธ๋ ๊ฒ ํ๊ณ ์ถ์์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ค์น๋ ์ข ์์ฑ์ ์์ ํ๊ธฐ ์ํด ์ทจํ๋ ๊ฑฐ์ ๋ชจ๋ ์์ ์ด ์ด์จ๋ ์ ๊ธ ํ์ผ์ ์ ๋ฐ์ดํธํ๊ธฐ ๋๋ฌธ์ ์ ๊ธ ํจํค์ง ๊ด๋ฆฌ์์ ์ผ๋ฐ์ ์ธ ์์ ์ด ์๋๋๋ค. ๋์ ์ฌ์ฉ์ ๋๋ฉด ์ํธ ์์ฉ ์ธํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
(1)๊ณผ (2)๋ ํญ์ ๋ด ์ ๊ธ ํ์ผ์ ์ต์ํ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํด์ผ ํ๋ฉฐ(๋๋ ํ์ํ ๊ฒฝ์ฐ ์์ฑํด์ผ ํจ), (3)์ ๋ณธ์ง์ ์ผ๋ก ๊ธฐ์กด ์ ๊ธ ํ์ผ์ ๋ฌด์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ๊ธ ํ์ผ์ ์์ฑํ๋ ๊ฒ๋ง์ผ๋ก๋ (1)์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค(์ด์จ๋ ๋ชจ๋ ๊ฒ์ด ์ค์น๋ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์คํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค).
PS Yarn์ yarn install
(๋ชจ๋ ์ข
์์ฑ ์ค์น)์์ yarn add
(์ข
์์ฑ ์ถ๊ฐ)๋ฅผ ๋ถํ ํฉ๋๋ค. ์ฒ์์๋ ๋ค์ ํผ๋์ค๋ฝ๊ณ ์ง์ฆ์ด ๋ฌ์ง๋ง ์ฌ์ฉํ ์๋ก ๊ทธ ๊ตฌ๋ถ์ด ๋ง์์ ๋ญ๋๋ค. ํน์ ์ข
์์ฑ์ ์ถ๊ฐํ๊ณ _๊ทธ๋ฆฌ๊ณ _ ๋ชจ๋ ํ๋ก์ ํธ ์ข
์์ฑ์ ์ค์นํ๋ ๋จ์ผ install
๋ช
๋ น์ ๊ฐ๋ ๊ฒ์ ์๊ฐํด๋ณด๋ฉด ์ด์ํฉ๋๋ค. ์ด ๋ ๊ฐ์ง ํ๋์ ๊ฐ์ ๊ฒ์ด ์๋๋๋ค.
https://lwn.net/Articles/711906/ ์ ์ฒ์ ๋ช ๋จ๋ฝ์ ์ฌ๊ธฐ์์ ๋ด ์ฌ๊ณ ๋ฐฉ์์ ์ ์ค๋ช ํ๊ณ ์์ต๋๋ค. "์์ง์ด๋ ๋์"์ ๋ชจ๋ ํ๋ก์ ํธ์ ๊ธฐ๋ณธ ๋ณด์ ๋ชจ๋ธ์ด์ด์ผ ํ๋ฉฐ ์ด๋ฅผ ์ตํธ์์ํด์ผ ํฉ๋๋ค. "๋จ๋จํ ๋ฒ์ปค" ์ ๊ทผ ๋ฐฉ์์ ์ ์ถฉ์ ์ ๊ณ ๋ คํ ํ์๋ง ์ ์คํ ์ค๊ณ ๊ฒฐ์ ์ ๋ด๋ ค์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ต์
์ด๋ฆ๋ ์ ํํฉ๋๋ค. --keep-outdated
๋ pip list --outdated
์์ ์๊ฐ์ ๋ฐ์ ๊ฒ์ด ์๋๋ผ ๋ช
๋ น์ค์์ ์์ฌ์ค๋ฝ๊ฒ ๋ณด์ด๋๋ก ์๋์ ์ผ๋ก ์ ํ๋์์ต๋๋ค. ๋ณด์ ๊ด์ ).
pipenv install X
์ ํน์ ๊ฒฝ์ฐ ์๋ ์์์ ์ผ๋ก ์
๊ทธ๋ ์ด๋๋ฅผ ์ํํ์ง ์์์ผ ํฉ๋๋ค. pip install X
๋ ์์์ ์ผ๋ก ์
๊ทธ๋ ์ด๋๋ฅผ ์ํํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค.
pipenv
๋ ํ์ฌ ํ์์ ์ ๊ณผ ๊ด๋ จํ์ฌ ๋ค์์ ์ํํ๋ฏ๋ก ์ผ๊ด์ฑ์ด ์์ต๋๋ค.
pip install package
ํธ์ถ(์์์ ์
๊ทธ๋ ์ด๋ ์์)pipenv lock
ํธ์ถ(์์์ ์
๊ทธ๋ ์ด๋)๋ฐ๋ผ์ ํญ์ ์ ๊ธ ํ์ผ์ ์ฌ์ฉํ์ฌ ์ค์น๋ฅผ ์ ๋ํ๊ณ ( --skip-lock
๊ฐ ์ฌ์ฉ๋์ง ์๋ ํ) ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ pip์ only-if-needed
์
๊ทธ๋ ์ด๋ ์ ๋ต๊ณผ ์ผ์นํ๋๋ก pipenv lock --keep-outdated
๋ฅผ ์ ๊ณตํ๋ค๋ ์์ด๋์ด์
๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ์์กด์ฑ์ ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค๋ ์ค์ง์ ์ธ ์์ ์ ๋์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ก pipenv install -U <package>
๋จ์ผ ํจํค์ง๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒ์ Pip๊ณผ ๋ณํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํ์ง๋ง ์ผ๋ฐ์ ์ธ ์ํฌํ๋ก์์ ์ฌ์ฉ์๋ --keep-outdated
๋๋ ๊ธฐํ ์์ด pipenv lock
๋ฅผ ์คํํ ์ด์ ๊ฐ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๋ค์ํ ์๋๋ฆฌ์ค์์ ์คํํ ์ ์๋ ๋ช
๋ น ์ธํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pipenv init
pipenv install
pipenv install <package>
(๊ทธ๋ฆฌ๊ณ Yarn์ด ์ด๊ฒ์ add
๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ ๋ค์ ์ฃผ๋ชฉํ์ธ์. ์ด๋ ์ข์ ์๊ฐ์
๋๋ค)Pipfile
์๋์ผ๋ก ํธ์งํ ํ ์ค์น๋ ์ข
์์ฑ์ ๋ค์ ๋๊ธฐํํ์ญ์์ค: pipenv install
pipenv update
์์ ๋ชจ๋ ์์
์ Pipfile.lock
๋ฅผ ๋๊ธฐํ ์ํ๋ก ์ ์งํฉ๋๋ค.
๋๋ ๋ฌ๋ฆฌ ๋งํ๋ฉด npm shrinkwrap
(npm 5 ์ฌ์ฉ)์ ์คํํ ํ์๊ฐ ์์๊ณ yarn lockfile
๋ฅผ ์คํํ ํ์๊ฐ ์์์ต๋๋ค.
(๊ทธ๋ฆฌ๊ณ ์ ๋ฐ์ดํธ๋ ์ข ์์ฑ์ด ์๋ ์ ๊ธ ํ์ผ์ ์์ฑํ๋ ๊ฒ์ด ๊ทธ๋ค์ง ์ ์ฉํ์ง ์์ ์ด์ ๋ ๊ฐ๋ฐ ์ํฌํ๋ก์ ๋ฐ๋ก ๋ค์ ๋จ๊ณ๊ฐ ์ ๋ฐ์ดํธ๋ ์ข ์์ฑ์ ๋ค์ ์ค์นํ๊ณ ํ ์คํธ ์ค์ํธ๋ฅผ ์คํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.)
FWIW, ๋ด๊ฐ ์ข
์ ์
๋ฐ์ดํธ์ PR ์๋์ผ๋ก (์์ฑํ๋ ๋๊ตฌ๋ฅผ ์คํ Dependabot์ Pipfiles ์ํด ํฌํจํ์ฌ), ๊ทธ๋ฆฌ๊ณ ๋๋ ์ฌ๋ pipenv lock --keep-outdated
์ต์
์ ์ ํํฉ๋๋ค. ํ์ฌ Pipfiles๋ฅผ ํธ์งํ์ฌ PR์ ์์ฑํ ๋ ์
๋ฐ์ดํธํ๋ ์ข
์์ฑ์ ์ ์ธํ ๋ชจ๋ ์ข
์์ฑ์ ์ ๊ธ๋๋ค.
๋ด ๊ฒฝํ์ ๋จ์ผ ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ๋ PR์ ํ ๋ฒ์ ๋ง์ ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ๋ PR๋ณด๋ค ๋ณํฉ๋ ๊ฐ๋ฅ์ฑ์ด
๋ง์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ PR ์์ฑ์ pipenv lock --keep-outdated
๊ฐ ์ ์ฉํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ณณ์
๋๋ค. "pipenv install && run tests" ๋จ๊ณ๋ PR์ด ์์ฑ๋ ์์คํ
์ด ์๋๋ผ CI ์๋ฒ์์ ์๊ฒฉ์ผ๋ก ๋ฐ์ํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก pipenv lock
๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ก์ปฌ์ ์ ์ฉํ๋ ๊ฒ์ ๋ํด ์ง๋์น๊ฒ ๊ฑฑ์ ํ์ง ์๊ณ CI์์ ํ
์คํธํ ์ผ๊ด ์
๋ฐ์ดํธ PR์ ์์ฑํ๋ ค๋ ๊ฒฝ์ฐ์
๋๋ค.
๊ทธ๋ฐ ๋งฅ๋ฝ์์ pipenv install <requirement>
๊ฐ "update Pipfile + pipenv lock --keep-outdated
+ pipenv install
"์ ๋๋ฑํด์ง๋ค๋ฉด pipenv update
๊ฐ ๋๋ฑํด์ง๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๋ค. pipenv lock && pipenv install
.
ํ์ง๋ง yarn
๊ตฌ๋ณํ๊ฒ yarn install
๋ฐ yarn add
, ์ฐ๋ฆฌ๊ฐ ์ด์ ๊น์ง ๊ทธ๋ฌํ ๊ตฌ๋ถ์ ์ถ๊ฐํ๋ค๋ฉด pipenv
, ๋๋ ๋ ๋น๋ ค ๊ฒฝ์ฌ ํ ๊ฒ pip-tools
์ฉ์ด์์ pipenv sync
๋ช
๋ น์ ์ถ๊ฐํ์ฌ "ํ์ฌ ํ๊ฒฝ์ ์ ๊ธ ํ์ผ๊ณผ ์ผ์น์ํค์ญ์์ค"๋ผ๊ณ ๋งํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ์ ์ด ์ ์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค. ํนํ ๋ฐฐํฌ ์ข
์์ฑ๊ณผ ๊ฐ๋ฐ ์ข
์์ฑ ๊ฐ์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ๊ธฐํ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ์ค์ ์ ๋์ด์ผ ํฉ๋๋ค.
@greysteil
Greenkeeper/&c์ ํด๋นํฉ๋๋ค. npm์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ง์ฃ ?
$ npm install --package-lock-only <package><strong i="8">@latest</strong>
์ฌ์ค npm5๋ ๋ง๋ค _just_ ์์๋ ๋ฐฉ๋ฒ ๋
ธ์ถ ์์ต๋๋ค package-lock.json
์ธ๋ถ npm install
?
@ncoghlan
Greenkeeper์ ๊ฐ์ ์๋น์ค๋ ๋งค์ฐ ํ๋ฅญํ๊ณ ์ฌ์ฉํ ๊ฐ์น๊ฐ ์์ง๋ง ํต์ฌ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ ์ด์ํ ๊ฒ์ ๋๋ค. ๋ ๊นจ๋ํ ํํ์ ์ธ์ ํฉ๋๋ค).
์, ๋๋ฌด ๋นจ๋ฆฌ ์ํฐ๋ฅผ ์ณค์ต๋๋ค. Greenkeeper ์คํ์ผ์ ์ํฌํ๋ก๋ฅผ ์ ์ธํ๊ณ ๋ก์ปฌ์์ ๋๊ธฐํํ์ง ์๊ณ ์ข ์์ฑ์ _๊ทธ๋ฅ_ ๋ฒํ๋ ๊ฒ์ ๊ฑฐ์ ์ฌ๋ผ์ ธ ๋ฒ๋ฆด ์ ๋๋ก ๋๋ฌธ ์ผ์ ๋๋ค. ์ด๋ป๊ฒ๋ deps์ ๋ก์ปฌ ๋ณต์ฌ๋ณธ์ด ์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ์๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ PR ์ ์ฉ ์๋น์ค๋ ์์ธ์ ๋๋ค.
์ฌ๊ธฐ์ ์ค๋ช ์ " ์ธ๊ฐ์ ์ํ Python ๊ฐ๋ฐ ์ํฌํ๋ก"์ด๋ฏ๋ก ์ค์ ๊ฐ๋ฐ ์ํฌํ๋ก๊ฐ ์ด๋ป๊ฒ ์๊ฒผ๋์ง ์ผ๋์ ๋ ๊ฐ์น๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ "๋กํ์ผ ์์ฑ" ์์ ์ ๋ช ์์ ์ผ๋ก ์คํํ๋ ๊ฒ์ด ๊ฑฐ์ ํ์ํ์ง ์๋ค๋ ๊ฝค ์ข์ ์กด์ฌ ์ฆ๊ฑฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ์ด์ ๋ํด ๋๋ฌด ๋ง์ด ์๊ฐํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฌ๊ธฐ์ ํน์ ๋ฌธ์ ์ธ BTW๋ Pipenv๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก *
๋ฒ์๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์
๋๋ค. pipenv install flask
ํ๋ฉด flask = "*"
์ Pipfile
๋ฉ๋๋ค. ์ฆ, ์ค์น๋ Flask ๋ฒ์ ์ ๊น๋ํ ๋ฐฉ์์ผ๋ก ์
๊ทธ๋ ์ด๋ํ๋ ค๋ ๊ฒฝ์ฐ ์ ๊ธ ํ์ผ ์ ์ฉ ๋ณ๊ฒฝ์ด ํ์ํฉ๋๋ค.
์
๊ทธ๋ ์ด๋ ์์
์ ์์น์ ์ผ๋ก *
์๊ตฌ ์ฌํญ์ >=
๋ฒ์ ๋๋ Pipfile
์ ์๋ ๊ฒ์ผ๋ก ์ ํํ ์ ์์ง๋ง ์ด๋ "์
๊ทธ๋ ์ด๋"์ "์ด๊ธฐ ์ค์น" ์ฌ์ด์ ์ด์ํ ๋น๋์นญ์ ๋ง๋ญ๋๋ค. ์ฌ๊ธฐ์์ ๊ฐ์ฅ ์ข์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ด์จ๋ ์ด๊ธฐ ์ค์น์ >=
๋ฒ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ ์ด๋ ๊ฑฐ๊ธฐ์์ *
๋ฒ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ํ๋นํ ์ด์ ๊ฐ ์๋์ง ํ์ ํ ์ ์์ต๋๋ค.
@taion - ๋ค, ๋์ํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ด ์ฐ๋ฆฌ/๋ค๋ฅธ ์ข
์์ฑ ์
๋ฐ์ดํธ ๋๊ตฌ๋ฅผ ๋๋ฌด ๋ง์ด ์ผ๋์ ๋๊ธฐ๋ฅผ ๊ธฐ๋ํ์ง๋ ์์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ฉด ๋งค์ฐ ๊ฐ์ฌํฉ๋๋ค! ๋ด๊ฐ ์ด์ ์ง์ฅ์์ ์ข
์์ฑ์ ์
๋ฐ์ดํธํ๋ค๋ฉด ์๋์ผ๋ก pipenv lock --keep-outdated
์ฌ์ฉํ์ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์ธ๊ธํ ๊ฒ ๋ฟ์
๋๋ค(์ฐ๋ฆฌ๋ ์ข
์์ฑ ์
๋ฐ์ดํธ ์ ์ฑ
๋น ํ๋์ PR์ ๊ฐ์ง).
์ฐธ๊ณ ๋ก npm
๋ ์ต์ ๋ฆด๋ฆฌ์ค( changelog )์์ package-lock-only
์ต์
์ ์ถ๊ฐํ์ต๋๋ค.
@greysteil *
๋ฒ์๊ฐ Pipfile
์ด๋ฉด ์ด๋ป๊ฒ ํ์๊ฒ ์ต๋๊น? ์์ flask = "*"
์์ ๊ฐ์ต๋๋ค. ์ด๊ฒ์ด Pipenv๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ข
์์ฑ์ ์ถ๊ฐํ๋ ๋ฐฉ์์ด๋ผ๋ ์ ์ ๊ฐ์ํ ๋ ์ ๊ธ ํ์ผ์ ๋ค์ ๋น๋ํ ๋ ๊ณ ์ ์ ํด์ ํด์ผ ํ๋ ์๊ตฌ ์ฌํญ์ ์์์ผ ํฉ๋๋ค. ์๋์?
_๋๋ ์ด ์ค๋ ๋์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ํํ๋ ์ธ๋ถ ์ฌํญ ๊ทผ์ฒ์์ Pipenv์ ์์ ์ ์ดํดํ์ง ๋ชปํ๋ฉฐ ์ฃผ์ ์์ ๋ฒ์ด๋๊ณ ์ถ์ง ์์ต๋๋ค. ์๋๊ฐ ์ ์ฉํ๋ค๋ฉด ์ข์ต๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ฃ์กํฉ๋๋ค!_
์ฐ๋ฆฌ๋ ๋ถ์พํ hax๋ฅผ ์ฌ์ฉํฉ๋๋ค:
pip-tool
์ ๋ฆฌ์กธ๋ฒ๋ฅผ ์ฌ์ฉํด์ผ ํ์ง๋ง ์์ง ์ฌ์ฉํ์ง ์์ต๋๋ค. ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋์์ง ์์ต๋๋ค. )Pipfile.lock
๋ฅผ ์์ฑํ๋ ค๋ฉดpipenv lock
๋ฅผ ์คํํ์ฌ ์ ์ ๊ธ ํ์ผ ์์ฑ์ต์ข
๊ฒฐ๊ณผ๋ ์ฌ์ฉ์๊ฐ Pipfile
๋ณ๊ฒฝ๋์ง ์์ PR์ ์ป์ง *
) Pipfile.lock
๊ฐ ํด๋น ์ข
์์ฑ์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๋๋ก ์
๋ฐ์ดํธ๋๋ค๋ ๊ฒ์
๋๋ค.
๋ด๊ฐ ์ดํดํ๋ ํ pipenv lock --keep-outdated
๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ ๋ค์ ํ๋ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
pipenv lock --keep-outdated
๋ฅผ ์คํํ์ฌ ์ ์ ๊ธ ํ์ผ ์์ฑ๊ทธ๋์, ๊ทธ๊ฒ์ ๋ฌด๋ฆฌ๊ฐ ๋ ์ข์ ๊ฒ์
๋๋ค. pipenv lock --keep-outdated <some_package_name>
๋ฅผ ์คํํ ์ ์๋ ๊ฒ์ด ์ด์์ ์ด์ง๋ง ๊ฑฐ์ง๋ ์ ํ์๊ฐ ๋ ์ ์์ต๋๋ค! :์ฅํ ์บฃ:
๋ด Pipfile์ ๋ค์์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
flask = "*"
numpy = "*"
flask
๋ werkzeug
์ ์ดํ์ ์ผ๋ก ์์กดํฉ๋๋ค. flask
๋ฐ numpy
์ ์ฌ์ฉํ ์ ์๋ ์
๊ทธ๋ ์ด๋๊ฐ ์๊ณ flask
๋ฒ์ ์ ์
๊ทธ๋ ์ด๋ํ์ง๋ง numpy
๋ฒ์ ์ ์
๊ทธ๋ ์ด๋ํ์ง ์๋๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
Pipenv๋ฅผ ์ฌ์ฉํ์ง ์์๋ค๋ฉด ๋ค์์ ์คํํ์ ๊ฒ์ ๋๋ค.
$ pip install -U flask
$ pip freeze > requirements.txt
pip-tools๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์์ ์คํํฉ๋๋ค.
$ pip-compile -P flask
$ pip-sync # Or: pip install -r requirements.txt
๊ธ์์, ๊ทธ๋ฅ pipenv lock --keep-outdated
๊ฐ์์ผ๋ก ํ๋ ๊ฒ๋ง์ผ๋ก๋ ์๋ฌด ์์ฉ์ด ์์ต๋๋ค. ๋ฐ๋ฉด์ ์ ๊ธ ํ์ผ์ ์์ ํ ๋ค์ ๋น๋ํ๋ฉด NumPy๋ ์
๊ทธ๋ ์ด๋๋ฉ๋๋ค.
ํ์ง๋ง ์คํด๊ฐ์์ดํ์ง ์๋ ํ, ์์์ ์ค๋ช
ํ๋ ์ ๋ต ๋ง์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธ ํ ๊ฒ์
๋๋ค flask
์ ๊ธ ํ์ผ์ ์์ง๋ง ๋ฒ์ werkzeug
. flask
์ ์ ๋ฒ์ ์ด werkzeug
์ ์ ๋ฒ์ ๋ _ํ์_ํ ๊ฒฝ์ฐ ์ด๋ ์๋ชป๋ ์ข
์์ฑ ์ธํธ์ผ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฌ๋์ด ์ข ์์ฑ์ ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ผ๊ณ ์๊ฐํ๋ ์ด ๊ฒฝ์ฐ ๋จ์ผ ํจํค์ง์ ํด๋น ์ ์ด ์ข ์์ฑ(ํ์ํ ๊ฒฝ์ฐ)์ ์ ๊ทธ๋ ์ด๋ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํ์ง๋ง ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ฌธ์ ๋ ํนํ *
์ข
์์ฑ์
๋๋ค. npm์ด ์ด๊ฒ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ์์ํ๋ ๊ฒ์
๋๋ค.
flask = ">=0.12.1"
๊ทธ๋ฐ ๋ค์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์์ฒญํ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํฉ๋๋ค.
flask = ">=0.12.2"
์ด ๊ฒฝ์ฐ pipenv lock --keep-outdated
์ ๊ฐ์ ๊ฒ์ ์คํํ๋ ์์ ์ ๋ต์ด ์ฌ๋ฐ๋ฅธ ์ผ์ ํ ๊ฒ์
๋๋ค. ๋น์ ์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ทธ๋ฌ๋ *
๋ฒ์๋ฅผ ๋ค์ ๋ด๊ฐ ์ข์ํ๋ ๋ช ๊ฐ์ง ํน๋ณํ ๋๊ตฌ์์ด ํ ์์๋ ์ง์ ํ ๋ฐฉ๋ฒ์ด ํ์๋์ง ์์ต๋๋ค pipenv install -U flask
๋ค์ ๋จ์ด์ง ๊ฒ์, flask
ํน๋ณํ ์ ๊ธ ํ์ผ์ ๋ค์ ๋น๋ํ ๋ ์ ์๋ ํ์
๋๋ค.
์ฃ์กํฉ๋๋ค. ์์ (iii) ๋จ๊ณ์ ๋ํด ์ถฉ๋ถํ ์ดํดํ์ง ๋ชปํ์ต๋๋ค. ์ ๊ธ ํ์ผ์ ๋ฒ์ ์ ๋ํ ๋ชจ๋ ์ต์์ ์ข ์์ฑ์ ์ ๊ทธ์ง๋ง ํ์ ์ข ์์ฑ์ ์ ๊ธ ํด์ ๋ ์ํ๋ก ๋ก๋๋ค.
@greysteil ๋ด๊ฐ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ ์ฌ์ ์ผ๋ก ๋ค๋ฅธ ์ง์ ์ข ์์ฑ์ ์ ์ด ์ข ์์ฑ์ ์ ๊ทธ๋ ์ด๋ํ ์ ์์ต๋๊น?
์ - ์ด๋ก ์ ์ต์์ ์ข ์์ฑ์ด ํ์ ์ข ์์ฑ์ ์ ์ ํ๊ฒ ์ง์ ํ๋ ๊ฒฝ์ฐ(์ฆ, ๋น๊ด์ ์ผ๋ก) ํ์ ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ์ํํ์ง ์์์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
(๋๋ ์คํ๋ ค ์ ๋ฐ์ดํธ๋๋ ์ข ์์ฑ์ ํ์ ์ข ์์ฑ๋ง ์ ๋ฐ์ดํธํ ์ ์๋ Ruby's Bundler์ ๋ ๊ฐ๊น์ง๋ง ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํ ๊ฐ๋ ฅํ pipenv๋ ํด์ปค์ ๊ฐ์น๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์์ต๋๋ค.)
@taion ๊ธฐ๋ณธ์ ์ผ๋ก pipenv
์ LCA ๊ฐ์ฐ์์ ์ค๋ช
ํ "์์ง์ด๋ ํ์ " ๋ณด์ ๋ชจ๋ธ์ ๊ฑฐ์ ์ ์ ์ผ๋ก ์ด์ ์ ๋ง์ถ๊ณ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ ๊ฐ์ง ์๋๋ ์ฌ์ฉ ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ํ์ ์ผ๊ด ์ ๋ฐ์ดํธ:
Pipfile
ํ์๋ ์ ์ฝ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ๋ชจ๋ ํญ๋ชฉ์ ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธ๋ฉ๋๋ค.์๋ ์ ํ ์ ๋ฐ์ดํธ:
์ด์ ํ์ฌ ๋ ์ฌ์ฉ ๋ชจ๋ธ์ ์ํฅ์ ๋ฏธ์น๋ CLI ์ค๊ณ ๋ฐ ๊ตฌํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ํ์ ๋ฐฐ์น ์ ๋ฐ์ดํธ์ ๊ฒฝ์ฐ ์ ๊ธ ํ์ผ๊ณผ ๋ก์ปฌ ํ๊ฒฝ์ด ๋๊ธฐํ๋์ง ์๋ ๋ฐฉ๋ฒ์ด ์๊ณ ์๋ํ๋ ์ ํ์ ์ ๋ฐ์ดํธ์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ ํ์ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๋ ๋๊ตฌ๋ฅผ ๊ตฌํํ๊ณ ๊ด๋ จ ๋ํํ ์ ํ์ ์์ ์ ํ์ฑํํ์ฌ ์ ์ข ์์ฑ์ ์ถ๊ฐํ๊ณ ๊ธฐ์กด ์ข ์์ฑ์ ๋ํ ์ ์ฝ ์กฐ๊ฑด์ ์์ ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ " Pipfile
์์ ๋ช
์์ ์ผ๋ก ๋ฌ๋ฆฌ ๋ช
์ํ์ง ์๋ ํ ๋ชจ๋ ๊ฒ์ ์ต์ ๋ฒ์ ์ ๊ธฐ๋ณธ์ผ๋ก ์คํ"์ด๋ผ๋ ํต์ฌ ์ค๊ณ ์ฒ ํ์ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒ์
๋๋ค. ์ ๊ธ ํ์ผ ์
๋ฐ์ดํธ๋ ์ฌ๋์ด ์ ์ถํ๋ ๊ฒ์ด ์๋๋ผ ์
๋ฐ์ดํธ ๊ด๋ฆฌ ์๋น์ค์์ ์ ์ถํฉ๋๋ค.
์๋ํ๋ ๋๊ตฌ๊ฐ @ncoghlan์ ๋ํด ์๊ฐํ๊ณ ์๋ ์ฌ์ฉ ์ฌ๋ก๋ผ๋ ๊ฒ์ ์ฝ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ๐
Dependabot/๋ค๋ฅธ ์ฌ๋๋ค์ด ์ํ๊ฑฐ๋/ํ์๋ก ํ๋ ๊ฒ์ ๋ํ ํผ๋๋ฐฑ์ ์ํ์๋ฉด ์ ์๊ฒ ์๋ ค์ฃผ์ญ์์ค. ํ์ด์ฌ์ ์ ๋ชจ๊ตญ์ด๊ฐ ์๋๋ฏ๋ก ์์ง pip/pipenv์ ๊ธฐ์ฌํ ์๋ ์์ง๋ง ์ ๊ฐ ํ ์ ์๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋๊ณ ์ถ์ต๋๋ค.
@ncoghlan ์ ๋ ์ฌ๊ธฐ์ ์ ์ ์ผ๋ก ๋์ํ๋ฉฐ ๊ทํ๊ฐ ์ค๋ช
ํ ์ ๊ทผ ๋ฐฉ์์ด ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. LocalRequirementsRepository
์ฌ์ฉํ๋ ๊ฒ์ ์ฝ๋ ๊ด์ ์์ ๊ตฌํํ๋ ๊ฒ์ด ๊ทธ๋ฆฌ ์ด๋ ต์ง ์์ผ๋ฉฐ ์ด๋ ํ๋ก์ ํธ์ ๋ํ ์ ์๊ฐ๊ณผ๋ ์ผ์นํ๋ฉฐ ์ด ํ ๋ก ์ ๋งค์ฐ ์์ฐ์ ์ด์์ต๋๋ค.
@techalchemy ์ข์์, ๋์นญ ์ ์์ ๋ค๋ฃจ๊ธฐ ์ํด ์ด๊ธฐ ๊ฒ์๋ฌผ์ ์์ ํ๊ฒ ์ต๋๋ค(์ฆ, ์ง๊ธ ํ๋ ๋ฐฉ์์ผ๋ก ์ค์น๋ฅผ ๋จผ์ ์คํํ๋ ๋์ pipenv lock --keep-outdated
+ pipenv install --ignore-pipfile
ํตํด ์ ํจํค์ง ์ค์น๋ฅผ ์ฒ๋ฆฌํจ) .
์ด๋ ์ฌ์ ํ ๋ช ๊ฐ์ง ๋ฏธํด๊ฒฐ ์ง๋ฌธ(์ --skip-lock
์ด ํด๋น ๋ชจ๋ธ์์ ์๋ํด์ผ ํจ)์ ๋จ๊ธธ ์ ์์ง๋ง ๊ฐ๋ณ ๊ธฐ๋ฅ ์์ฒญ( --keep-outdated
์ pipenv lock
์ถ๊ฐํ๋ ๊ฒ๊ณผ ๊ฐ์)์ ๋ถ๋ฅํ๊ธฐ ์์ํ๊ธฐ์ ์ถฉ๋ถํด์ผ ํฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ์๋ง ์
๊ทธ๋ ์ด๋ ์ ๋ต์ ์์ฒญํ๋ ๊ฒฝ์ฐ
์ข์ต๋๋ค. ์ ๊ธ ํ์ผ๊ณผ ๋ก์ปฌ ํ๊ฒฝ์ ๋๊ธฐํํ๊ธฐ๊ฐ ์ ๋ง ์ด๋ ค์ด ์ํ์ ๋๋ฌํ ์ ์๋๋ก ํ๋ ๋ช ๊ฐ์ง ์ ์๋ ํ์ ๋จ๊ณ๋ก ์ด๊ธฐ ๊ฒ์๋ฌผ์ ์ ๋ฐ์ดํธํ์ต๋๋ค.
์ ์๋ ํ์ ๋จ๊ณ ์ค์์ pipenv sync
ํ์ ๋ช
๋ น๊ณผ pipenv lock --keep-outdated
์ต์
์ ์ด๋ฏธ ๊ด์ฌ ์๋ ์ฌ๋๋ค์ด ๊ตฌํ์ ์ดํด๋ณด๊ธฐ์ ์ถฉ๋ถํ ๋ช
ํํ์ง๋ง ๋ค๋ฅธ ๋ชจ๋ ์์
์ โโ์๋ฏธ ์ฒด๊ณ๋ฅผ ์ฌ์ ์ํ๋ ์์ด๋์ด๋ Pipfile ํธ์ง ๋ฐ pipenv lock
๋ฐ pipenv sync
์ ๋์ ์ธก๋ฉด์์ ํจํค์ง๋ฅผ ์ค์นํ๊ฑฐ๋ ์
๋ฐ์ดํธํ ์ ์๋ ๊ฒ์ ์ถ๊ฐ ๋
ผ์๊ฐ ํ์ํ ์ ์์ต๋๋ค.
์ข์ ๋ณด์ธ๋ค. ๊ณต๊ฐ ์ง๋ฌธ์ ๋ํด ์ ๋ pip install --selective-upgrade <package>
๋ํด ์ ์๋ ๋์์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค(์ฆ, ์ ๋ฒ์ ์ด ์ ๊ณต๋์ง ์๋ ํ ๊ธฐ์กด ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด์ ์ค์ํ๋ ์
๊ทธ๋ ์ด๋ ์ํ). ์ด๊ฒ์ด ๋จ์ผ ํจํค์ง๋ฅผ ์
๋ฐ์ดํธํ ๋ ์ข
์ข
์ํ๋ ๋์์
๋๋ค. < 2.0
์ ์ฝ ์กฐ๊ฑด์ด ์๋ ๊ณณ์์ pip install --selective-upgrade django
์คํํ๋ ์ฌ๋๋ค์ ์์ํ ์ ์์ต๋๋ค.
์์ ์ฌ๋ณธ ์ค ์ผ๋ถ๋ฅผ ๋ช
ํํ ํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ ์๋ pipenv install --selective-upgrade
๋ ์ฌ์ค์ ํ์ค pip install -U
์ ๊ฑฐ์ ๋์ผํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์, ์ค์ ๋ก ์ฌ๋๋ค์ ๋ค๋ฅธ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ๊ตฌ์ถํ ๋ ์ด๊ฒ์ ๋ํด ๋ง์ด ์๊ฐํ์ต๋๋ค. ์๋ง๋ ์ง๊ณต ์ํ์์ https://github.com/pypa/pipenv/issues/1255#issuecomment -355435921์์ ์ค๋ช ํ๋ ์ํฌํ๋ก๋ ์๋ฏธ๊ฐ ์์ง๋ง, ์๋ฅผ ๋ค์ด ์ฌ๊ธฐ์์ "์ธ๊ฐ์ ์ํ Python ๊ฐ๋ฐ ์ํฌํ๋ก"๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค. ์๋๋ฉด ์๋ก์ด ๊ฐ๋ฐ ์ํฌํ๋ก๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฒ์ ๋๊น?
Pipenv๋ ๋ง์ ๊ฒ์ ๋ ์ข๊ฒ ๋ง๋๋ ์ ๋ง ๋ฉ์ง ํ๋ก์ ํธ์ด์ง๋ง ์ฌ๊ธฐ ๋ชฉํ์ ๊ฝค ๊ทผ๋ณธ์ ์ธ ํผ๋์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ธ ํจํค์ง ๊ด๋ฆฌ์๋ ์์ฆ ๊ฑฐ์ ํ์ค์ด๋ฉฐ Python์ ์ถ๋ณต์ด ์๋ ๊ฒ์ ์ข์ง๋ง "์๋ก์ด ์ด๋ก ์ ํจํค์ง ๊ด๋ฆฌ ์ํฌํ๋ก ํ์"๊ณผ "์ฌ๋๋ค์ด ๊ธฐ๋ํ๋ ๋ฐฉ์์ผ๋ก ์๋ํ๋ ํจํค์ง ๊ด๋ฆฌ ์ํฌํ๋ก ๊ตฌ์ถ"์ ํผ๋ํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. "๋ ๊ธ์ ์ ์ด๋ค.
๋ค์ ๋งํ์ง๋ง, ์๋ฅผ ๋ค์ด http://bundler.io/v1.16/man/bundle-install.1.html#CONSERVATIVE -UPDATING ๋ฐ ๊ธฐํ ์ฌ๋ฌ ๊ฐ์ง์ ์ ์ํ์ญ์์ค.
์ฌ๊ธฐ์ ๋ด ๋ง์์ด ๋ฐ๋๋ ๊ฒ์ ์ด๋ฌํ ๊ธฐ์กด ๋๊ตฌ ์ค ์ผ๋ถ๋ฅผ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ์ผ๋ฉฐ ๊ฐ๋ฐ ์ํฌํ๋ก๊ฐ ๋ถ์กฑํ๋ค๋ ๊ฒ์ ์ฆ๋ช ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ธ๊ฐ์ผ๋ก์ Pipenv๊ฐ ์ด์ ์ ๊ด๊ณ์์ด ์ด๋ฌํ ๋น์ ์์ ์ธ ๊ธฐ๋ณธ๊ฐ์ ์ ์ฉํ๋ ๊ฒ์ ๋ณด๋ ๊ฒ์ ์ฆ๊ฑฐ์ด DX๋ฅผ ๋ง๋ค์ง ๋ชปํ๋ค๋ ๊ฒ์ ๋ง์๋๋ฆด ์ ์์ต๋๋ค.
๋ฆฌํธ๋จธ์ค ํ ์คํธ๋ฅผ ๋ณด๋ค ๋ช ํํ๊ฒ ํ๋ ค๋ฉด:
npm i
, yarn add
๋ฐ bundle update <gem>
/ bundle add
๊ฐ ๋ค๋ฅธ ๋ชจ๋ ์ข
์์ฑ์ ๊ฑด๋๋ฆฌ์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๊น?npm up
, yarn upgrade
๋๋ bundle update
๋ฅผ ์คํํ๋ ๊ฒ์ด ๋ฒ๊ฑฐ๋กญ์ต๋๊น?๊ทธ๋ ์ง ์๋ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๊ธฐ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชฉํ๋ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ๋ ๋๋ก ์๋ํ๋ ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ด ์๋๋ผ ์๋ก์ด ์ํฌํ๋ก๋ฅผ ์ํ ์ ๋์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๊ฒ์ ์๋์ ์ผ๋ก ์๊ธฐ์น ์์ ๊ธฐ๋ณธ๊ฐ์ ์ ํํ๋ ์ฐ์ต์ฒ๋ผ ๋ณด์ ๋๋ค. ์ด ๊ธฐ๋ณธ๊ฐ์ "์ธ๊ฐ์ ์ํ"์ด๋ผ๊ณ ์ค๋ช ํ๋ ํจํค์ง์์ ๊ธฐ๋ํ๋ ๊ฒ์ด ์๋๋ผ ๋คํธ์ํฌ์์ ์ฌ์ฉ์๋ฅผ ์ข์ ์ํฌ ๋ฟ์ ๋๋ค.
@taion ์, ๋ชจ๋ ์ข ์์ฑ์ ๋ํ ์์์ ๋ฐฐ์น ์ ๋ฐ์ดํธ๋ฅผ ์ํด ์ ๊ทน์ ์ผ๋ก ์ฌ๋๋ค์ ๋ฐ์ด๋ถ์ด๋ ๊ฒ์ ์๋์ ์ ๋๋ค. ์, ์ ๋ ๋ค์ํ ํจํค์ง ๊ด๋ฆฌ์์ ๋ํ ๊ด๋ฒ์ํ ๊ฒฝํ์ด ์์ต๋๋ค. ๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ๊ธฐ์กด ๊ธฐ๋ณธ๊ฐ์ ๊ฒฐ๊ณผ๋ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ๊ตฌ์ฑ ์์์ ๊ตฌ์ ๋ฒ์ ์ ์ ๊ธฐ์ ์ผ๋ก ์คํํ๊ณ , CVE๋ฅผ ํ์ธ ํ์ง ์์ผ๋ฉฐ , ๋ค๋ฅธ ๊ตฌ์ฑ ์์๊ฐ ๊ฐ์ ๋ก ์ ๊ทธ๋ ์ด๋ํ ๋๋ง ์ ๋ฐ์ดํธํ๊ณ , ๊ทธ ์ ๊ทผ ๋ฐฉ์์ด ๋งค์ฐ ๋๋ค๋
๋ฐ๋ผ์ pipenv
๊ฒฝ์ฐ ๋ค๋ฅธ ํจํค์ง ๊ด๋ฆฌ์ ๋ฐ ๊ธฐ์กด ์๋ฒ ์ด์ ์ฒด์ ๋ฅผ ๋ฐ๋ฅด๊ธฐ๋ณด๋ค๋ ๋ชจ๋ฐ์ผ ๋ฐ ์ต์ ๋ฐ์คํฌํฑ ์ด์ ์ฒด์ (์ฆ, ํํผํ๊ธฐ ์ํด ์๋์ ์ธ ์กฐ์น๊ฐ ํ์ํ ์๋ ์
๋ฐ์ดํธ๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ )์์ ์๋์ ์ผ๋ก ์ ํธ๋ฅผ ์ทจํ๊ณ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ชจ๋ฅธ๋ค๋ ๊ฒ์ด ์๋๋ผ ์ ํต์ ์ธ ๊ธฐ๋ณธ ํ๋์ ์ ํ์ ์ธ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค๊ณ ์๊ฐํ๊ณ ๊ทธ๊ฒ์ ํผํ๋ ค๊ณ ๋
ธ๋ ฅํ๊ธฐ ๋๋ฌธ์
๋๋ค.
--keep-outdated
(๋ฐ ํด๋น PIPENV_KEEP_OUTDATED=1
ํ๊ฒฝ ๋ณ์)๋ฅผ ์ถ๊ฐํ๋ฉด ๋ ์๋ จ๋ ๊ฐ๋ฐ์๊ฐ "๋ด๊ฐ ํ๋ ์ผ์ ์๊ณ ์์ผ๋ฉฐ, ๋ด ์ข
์์ฑ์ ์ฑ
์๊ฐ ์๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ๋๋ฅผ ์ ๋ขฐํ ์ ์์ต๋๋ค"๋ผ๊ณ ๋ช
์์ ์ผ๋ก ๋งํ ์ ์์ต๋๋ค.
--selective-upgrade
๋ฏธํด๊ฒฐ ์ง๋ฌธ์ ์ ๊ฑฐํ๊ณ ํด๋น ์ธ๋ถ ์ ๋ณด๋ฅผ ์ ์๋ ๊ธฐ๋ฅ์ ๋ํ ์ค๋ช
์ ํฌํจ์์ผฐ์ต๋๋ค.
๊ทธ๋ฌ๋ pipenv uninstall
์ ๊ด๋ จ๋ ์๋ก์ด ๊ณต๊ฐ ์ง๋ฌธ์ ์ถ๊ฐํ์ต๋๋ค. pipenv install
๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก pipenv update
๋ฅผ ์์ํ๋ ๊ฒ์ ๋ฐฉ์ดํ ์ค๋น๊ฐ ๋์ด ์์ง๋ง(@taion๊ณผ์ ์์ ๋
ผ์์ ๋ฐ๋ผ) pipenv uninstall
ํ๋ ๊ฒ์ ์ ์๊ฒ ํจ์ฌ ๋ ๋ฐฉ์ด์ ์ผ๋ก ๋ณด์
๋๋ค. ์ข
์์ฑ์ ์ ๊ฑฐํ๋ ์์
์ ์ํํ๋ ๊ฒ์ ๋ค๋ฅธ ๊ตฌ์ฑ ์์์ ์
๊ทธ๋ ์ด๋๋ก ์ธํด ์ ์ฌ์ ์ผ๋ก ์๋ก์ด ์ ์ด ์ข
์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋งค์ฐ ์ด์ํ ๊ฒ์
๋๋ค.
๊ณต๊ฐ ์ง๋ฌธ์์ ์๋ํ๋ ์ข
์์ฑ ์
๋ฐ์ดํธ ๋๊ตฌ์ ์ธ๊ณ์์ pipenv install --skip-lock
๋ํ ์ฌ์ฉ์ ๋ณผ ์ ์์ต๋๋ค. ์ฌ๋์ด ์ฌ์ฉํ๋ ์ฌ๋ก๊ฐ ์๋ค๋ฉด(์๊ฐํ ์ ์์) ์ค๋ณต์ผ๋ก ๊ฐ์ฃผํ๋ ๊ฒ์ด ์์ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
np ๋ --no-package-lock
(๋ฐ ์ด์ ์์ํ๋ Yarn)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ์์ด๋์ด๋ ์ ๊ธ ํ์ผ์ ๋ช
์์ ์ผ๋ก ๋ฌด์ํ๊ณ ์ต์ ํธํ ๋ฒ์๋ก ์ ๊ธ ํด์ ๋ ๋ชจ๋ npm ์ข
์์ฑ์ ์ฌ์ฉํ์ฌ ํ
์คํธ๋ฅผ ์คํํ๋ ๊ฒ์
๋๋ค.
ํน์ ์ฌ์ฉ ์ฌ๋ก๋ tox์ ์กด์ฌ(๋ฐ Python์ฉ np์ ๊ฐ์ ๊ฒ์ ๊ตฌ์ถํ๋ ์ด๋ ค์)๋ฅผ ๊ฐ์ํ ๋ ๋ ๊ด๋ จ์ฑ์ด ์์ ์ ์์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ ๊ธด ์ข ์์ฑ ์ธํธ๋ฅผ ๋ชจ๋ ๊ฐ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค. ๋ฐ์ด๋๋ ์ฌ๋๋ค์ด ๊นจ์ง ๋น๋ ํ๊ฒฝ์ ์ฒ๋ฆฌํ ํ์๊ฐ ์์ผ๋ฉฐ ์ฌ๋๋ค์ด ๋ฆด๋ฆฌ์ค ์ ์ ์ต์ ํธํ ์ข ์์ฑ์ ๋ํด ํ ์คํธํ ์ ์๋๋ก ํฉ๋๋ค.
์, ํ
์คํธ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ํ์คํ ๋ณผ ์ ์์ง๋ง ๋์๊ฒ ๋ ๋ช
ํํด์ง ๋ถ๋ถ์ ํด๋น ์ํฉ์์ ์ ๊ธ ํ์ผ์ ์์ ํ์ง ์์ ์ํ๋ก ๋๋ ์ด์ ์
๋๋ค(ํนํ pipenv update
๋ ํ์ฌ ํด๋น ์ต์
์ ์ ๊ณต
git push
์ํํ์ง ์์ผ๋ฏ๋ก ์ ๊ธ ํ์ผ ์์ ์ ๋ค๋ฅธ ๊ณณ์์๋ ๋ํ๋์ง ์์ต๋๋ค.์ ๊ธ ๋ฉ์ปค๋์ฆ๊ณผ ์ ์ธ๋ Pipfile ์ ์ฝ ์กฐ๊ฑด์ ์์ ํ ์ฐํํ๋ pip install --upgrade <whatever>
์์ต๋๋ค.
๊ทธ ์ดํ ์ง๊ธ, ์ต์
, ์๋ฏธ๊ฐ ๊ฐ์ฅ ๊ฐ๊น์ด ํด๋น pipenv
๋ก ํ์ฌ ์ด๋ฒคํธ pipenv --keep-outdated
(๋น์ ์ด ๋ญ๊ฐ๋ฅผ ์ถ๊ฐ ํ ์์๋ค Pipfile
์๋ ์
๋ฐ์ดํธ ๋ชจ๋ ๊ฒ๋ค์์ด).
์ง๊ธ์ ๋ฏธํด๊ฒฐ ์ง๋ฌธ์ผ๋ก ๋จ๊ฒจ๋๊ฒ ์ต๋๋ค. pip lock --keep-outdated
๋ฐ pip install --keep-outdated
๊ฐ ์กด์ฌํ๋ฉด ์ ๋ต์ด ๋ ๋ช
ํํด์ง ๊ฒ์
๋๋ค.
์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ฌ์ ํ [packages]
์ [dev-packages]
์ฌ์ด์ ๋ถ์ผ์น๋ฅผ ์์ ํ ๊ฒ์ผ๋ก ์์๋ฉ๋๊น? ํนํ, ์ด ๋ฌธ์ ๋ฅผ ์ธ๊ธํ๋ #1220์ ์คํํ๊ณ ์์์ง๋ง ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ด ๊ทธ ๋ถ์ผ์น๋ฅผ ์ด๋ป๊ฒ ์์ ํ ์ง ์ ์ ์์ต๋๋ค. ์๋๋ฉด dev/non-dev ๋ถ์ผ์น๊ฐ #1220์ ์ค๋ช
๋ ๊ฒ๊ณผ ๋ค๋ฅด๋ฉฐ ํด๋น ๋ฌธ์ ๋ ๋ณ๋๋ก ์กฐ์ฌํด์ผ ํฉ๋๊น?
@matthijskooijman ์๋จ ๊ฒ์๋ฌผ์ ๋ช
์์ ์ผ๋ก ๋ช
์๋์ด ์์ง๋ ์์ง๋ง https://github.com/pypa/pipenv/issues/1255#issuecomment -354585775(ํ์ฌ ๊ฒ์๋ฌผ์์ ์ธ๊ธ๋จ)์๋ ๋ค์ ์ค ํ๋๊ฐ ์์ด์ผ ํ๋ค๊ณ ๋ช
์๋์ด ์์ต๋๋ค. packages
๋ฐ dev-packages
์์ "๋น์ผ๊ด์ฑ์ ๊ฐ์ง(๋ฐ ํด๊ฒฐ)"ํ๋ ๋ฐฉ๋ฒ ๋๋ ๋์์ด ํ์ํฉ๋๋ค. ์ด๊ฒ์ ๋์๊ฒ ๋ถ์ผ์น๊ฐ ํด๊ฒฐ๋ ๊ฒ์์ ์๋ฏธํฉ๋๋ค.
์๋๋ ํด๋น ๋ถ์ผ์น๊ฐ pipenv lock
๋จ๊ณ์์ ํด๊ฒฐ๋๋ ๊ฒ์
๋๋ค( ๊ทธ๋ฌ๋ฉด pipenv sync
๋ ์์ฒด ์ผ๊ด๋ ์ ๊ธ ํ์ผ์ ์์ํฉ๋๋ค).
(์ฐธ๊ณ : ์ด๊ฒ์ ์ด์ ์ ๋ช ํํ์ง ์์์ผ๋ฏ๋ก ํด๋น ๋จ๊ณ๋ฅผ ํธ์ถํ๋ ๋ณ๋์ ๊ธ๋จธ๋ฆฌ ๊ธฐํธ๋ฅผ ์ถ๊ฐํ์ต๋๋ค.)
๋ฐฉ๊ธ CPython๊ณผ PyPy ๊ฐ์ ๊ธฐ๋ณธ Python ๊ตฌํ์ ๋ณ๊ฒฝํ ๋ pipenv๊ฐ ์ ๊ธ ํ์ผ์ ์ฌ์์ฑํ์ง ์๋๋ค๋ ๊ฒ์ ์์์ฐจ๋ ธ์ต๋๋ค.
pipenv install --python pypy
venv ์์ฑ ๋ฐ ์ค์นpipenv install
venv๋ฅผ ๋ค์ ๋ง๋ค๊ณ ์ค์นํ์ญ์์ค.host-environment-markers
์น์
์๋ ์ฌ์ ํ "platform_python_implementation": "PyPy"
@joshfriend ์ค์ ๋ก ์๋์ ์ธ ๊ฒ์ด์ง๋ง ํ์ฌ ๋ฌธ์ ๊ฐ ์๋ ์ด์ ์ ๋ํ ์๊ฒฌ์ https://github.com/pypa/pipenv/issues/857#issuecomment -368223561์ ์ฐธ์กฐ
์ธ์ ์์ด pipenv ์ค์น์ ๋ํ ํ์ฌ ๋์์ ์ ์งํ์ง๋ง ์๋ก์ด ํ๊ฒฝ์ ์ค์ ํ ๋ pipenv sync ์ฌ์ฉ์ ๊ถ์ฅํ๋๋ก ์ ํํฉ๋๋ค(๊ทธ๋ฐ ์์ผ๋ก pipenv install์ ์ค์น๋ ๊ตฌ์ฑ ์์๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฃผ๋ก ์ฌ์ฉ๋จ)
์ด์ install
๊ฐ sync
install
ํธ์ถํ๋ฏ๋ก ์ฌ์ฉ์๊ฐ install
๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ก์ ํธ๋ฅผ ๋ถ์คํธ๋ฉํ๋๋ก ํ์ฉํ ์ ์์ต๋๋ค.
[ํจํค์ง] ๋ฐ [๊ฐ๋ฐ ํจํค์ง]๊ฐ ์๋ก ์ผ์นํ๋๋ก ํญ์ pipenv ์ ๊ธ์ ์ ๋ฐ์ดํธํฉ๋๋ค(#1137์ ๋ํ ํด๊ฒฐ).
๋๋ ๋ฐฉ๊ธ ์ด๊ฒ์ ์ฐ๋ ๋ค https://github.com/pypa/pipenv/commit/fdebdc3c423dce83c13d4e384acb703291109f1e
ํ์คํ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๊ฐ ์์ง๋ง(์: ๊ฐ๋ฐ ํจํค์ง์๋ ์กด์ฌํ์ง๋ง ๊ธฐ๋ณธ ํจํค์ง์๋ ์๋ ํ์ ๋์ ์ ๊ฑฐ๋์ง ์์) ํ์คํ ๊ฐ์ ์ฌํญ์ ๋๋ค.
๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์์ ํ์ต๋๋ค. https://github.com/pypa/pipenv/commit/daa56e1290b259af8e2410b2f4d799ca71601a37
@kennethreitz ์๋ก ์ค์นํ๋ ๊ฒฝ์ฐ pipenv install
์ ์ฝ๋ ๊ฒ์ ๊ดํ ์ข์ ์ : ์ฌ๋๊ธฐํ์ ๊ฒฝ์ฐ์๋ง ์ด์ํ๊ฒ ์ฝํ ๊ฒฐ๊ตญ ๋ฒ์ ์ ์ผ์น์ํค๊ธฐ ์ํด ์
๊ทธ๋ ์ด๋ ๋ฐ ๋ค์ด๊ทธ๋ ์ด๋๋ฅผ ์ํํ ์ ์์ต๋๋ค. pipenv sync
์ถ์ฒ์ ๋ํ ๊ธ๋จธ๋ฆฌ ๊ธฐํธ๋ฅผ ์๋ฃ๋ก ํ์ํ๊ณ ๋ณ๊ฒฝํ์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ ๋ถ๋ถ์ ํ์ธํ์ต๋๋ค.
#1137 ๋ณ๊ฒฝ ์ฌํญ์ ๊ตฌํํ๋ฉด #966์ ํจ๊ป ๊ตฌํํ๋ --keep-outdated
๋ฐ --selective-upgrade
๊ฐ์ ์ฌํญ๋ง ๋จ์ต๋๋ค.
# 1486์ ๋ํ ์ ํ์ ๊ตฌํ ๋ฐฉ๋ฒ, ์ฃผ์ด์ง --selective-upgrade
๊ธฐ๋ฅ์ ์ ๋ฌํ๋ ํ์์ฑ์ ๊ฒ์
๋๋ค --upgrade-strategy=only-if-needed
๊ธฐ๋ณธ์ pip install
์ค์ ์ ์ถ๊ฐ๋ก ํธ์ถ keep_outdated
ํ ๋ ์ค๋๋ ์ ๊ธ ํ์ผ์ ์
๋ฐ์ดํธํ๋ ์ค์
๋๋ค.
์ง๊ธ --keep-outdated
์ค :)
$ pipenv lock --keep-outdated
์ด์ ๋ฒ์ ๋ฒํธ๊ฐ ๊ณ ์ ๋์ง ์๋ ํ ์ด์ ์ ๊ธ ํ์ผ์ ๋ชจ๋ ๋ฒ์ ๋ฒํธ๋ฅผ ์ ์งํฉ๋๋ค.
๋ํ ์ถ๊ฐ Pipfile
๊ตฌ์ฑ ์ต์
์ด ์ถ๊ฐ๋์์ต๋๋ค(ํ์ฌ allow_prereleases
): keep_outdated
:
[pipenv]
keep_outdated = true
--selective-upgrade
๊ฐ ์๋ฃ๋์์ต๋๋ค.
ํ์! #857์์ ์์ง ๋ค๋ฃจ์ง ์์ ์ถ๊ฐ ์ ํ ์ฌํญ์ด 10.1 ๋ฆด๋ฆฌ์ค ์ดํ์ ์๋ก์ด ๋ฌธ์ ๋ก ๋ณด๊ณ ๋ ์ ์์ผ๋ฏ๋ก ์ด๊ฒ์ ๋ซ์ต๋๋ค. :)
๋ฒ๊ทธ์ ๋ํด ์์ ์ค์ด์ง๋ง ๊ณง ํด๊ฒฐ๋ ๊ฒ์ ๋๋ค.
๊ฒฐ์ ๋
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
--selective-upgrade
๊ฐ ์๋ฃ๋์์ต๋๋ค.