์ด ๊ธฐ๋ฅ์ผ๋ก ํด๊ฒฐ๋๋ ๋ฌธ์ ๋ ๋ฌด์์ ๋๊น?
ํ์ฌ pip์๋ ์ฌ์ฉ์๊ฐ pip์ ์ข ์์ฑ ํด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ ๋ฉ์ปค๋์ฆ์ด ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ๋ค์์ ์ํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ์ค๋๋ ์ํํ ์ ์์ง๋ง ์ผ๋ถ ํ๊ฒฝ์ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ ๋ณด๋ฅผ ์ํด ํ๊ฒฝ์ ์กฐ์ฌํด์ผ ํฉ๋๋ค. ๋ชจ๋ ๊ด๋ จ ์ ๋ณด๋ ๋ฐํ์์ pip install
์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก ์ด ๋ฌธ์ ๋ฅผ ํผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ํ๋ ์๋ฃจ์ ์ค๋ช
pip install --dry-run
์ต์
์ ์ ์ํฉ๋๋ค.pip resolve
๋ช
๋ น์ ์ ์ํฉ๋๋ค.๋ด๊ฐ ์ฐพ์ ์ ์๋ ๋ฌธ์ ์ถ์ ๊ธฐ์ ๋ ๋ง์ ์ ์์ด ์์ ์ ์์ต๋๋ค.
๋์ฒด ์๋ฃจ์
์ํ๊ณ์ ๋ค๋ฅธ ๋น pip ๋๊ตฌ๊ฐ ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ์์๊ฒ ์ ๊ณตํ๋๋ก ํ์ญ์์ค. ์ด๊ฒ์ pip์ ๋ฆฌ์กธ๋ฒ๊ฐ ์ด๋ค ์์ผ๋ก๋ ๊ณต๊ฐ์ ์ผ๋ก ๋ ธ์ถ๋์ง ์๋๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ฐจ์ ์ฑ ์ ๋๋ค(pip์ ๋ด๋ถ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฒ๋ผ ์ฌ์ฉ๋์ง ์์).
๊ฐ์ฅ ์ฃผ๋ชฉํ ๋งํ ์๋ pip-tools
ํ๋ก์ ํธ๋ก, ์ด ๊ธฐ๋ฅ์ ์ฐพ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ํ์ฌ ๊ฐ์ฅ ์ ํฉํ ๋ต๋ณ์
๋๋ค.
์ฐธ๊ณ : ์ด ์ค๋ช ์ 2020๋ 4์ @pradyunsg ์ ์ํด ํธ์ง๋์์ผ๋ฉฐ(์์ธํ ๋ด์ฉ์ ํธ์ง ๊ธฐ๋ก ์ฐธ์กฐ) ์ด ๋ฌธ์ ์ ๋ํด ์ ๋ง ์ค๋๋๊ณ ์ค๋๋ ๋๊ธ ์ด ์จ๊ฒจ์ ธ ์์ต๋๋ค.
ํ , PyPI์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํจํค์ง ๋ฒ์ ์ ๋์ดํ๋ ๋ช
๋ น์ด ํ์ํ ์๋ ์์ต๋๋ค.
์ด๋ป๊ฒ ์๊ฐํ์ธ์?
์ฒ๋ผ:
$ pip list Django
1.2.4
1.2.3
1.2.2
1.2.1
1.2
1.1.3
1.1.2
1.0.4
$
Original Comment By: Hugo Lopes Tavares
๋๋ ๊ทธ ์์ด๋์ด๋ฅผ ์ข์ํ๋ค.
Original Comment By: CarlFK
๋ฐฉ๊ธ ๋ด ํฌํฌ์ ๊ตฌํํ์ต๋๋ค. ๋๋ carljm, jezdez ๋ฐ ianb์ ์๊ฒฌ์ ์ํฉ๋๋ค
๋ณํฉํ๊ธฐ ์ ์.
์ฌ๊ธฐ์์ ํ์ธํ์ญ์์ค: https://bitbucket.org/hltbra/pip-list-
๋ช
๋ น/๋ณ๊ฒฝ ์งํฉ/e5c135a46204
Original Comment By: Hugo Lopes Tavares
๊น์ด ์๊ฐํด๋ณด์ง ์์์ง๋ง ๊ฐ์ ํ๋๊ฒ ๋์๊ฒ ๊ฐ์ต๋๋ค
๋ฒ์ ์ ๋์ดํ๋ "search" ๋ช
๋ น(-v ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ฒ์ ์ ๋์ดํ ์๋ ์์)
๋๋ ๋ฌด์ธ๊ฐ), ์๋ก์ด ๋ณ๋์ ๋ช
๋ น์ ์ถ๊ฐํ๋ ๋์ . ์ด ๊ธฐ๋ฅ
๋
ผ๋ฆฌ์ ์ผ๋ก ๊ฒ์์ ์ผ๋ถ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
Original Comment By: Carl Meyer
๋ค๋ฅธ ER์ด ๊ตฌํ๋์ด ์๋ ํ ๊ฒ์์ ์ด๊ฒ์ ์ถ๊ฐํด๋ ๊ด์ฐฎ์ ๊ฒ์
๋๋ค.
django์ ๋ฒ์ ์ ์ฐพ์ ๋ 3000์ค(์ค์ ๋ก)์ด ๋์ค์ง ์๋๋ก ํฉ๋๋ค.
(๋ชจ๋ django-foo ๋๋ฌธ์ "pip search django"์ 1000๊ฐ ์ด์์ ์กฐํ์๊ฐ ์์ต๋๋ค.
ํจํค์ง. )
Original Comment By: CarlFK
๋๋ ์ด๋ค ๋ฒ์ ์ด ์ค์น๋ ๊ฒ์ธ์ง ๋ณด์ฌ์ค ํ์๊ฐ ์๋ค๊ณ ์๊ฐํ๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์ ๋ชฉ๋ก์ด ์์ต๋๋ค.
์ด๊ฒ์ ์ต์ ์
๋๋ค. ๋ํ ์๋ก์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ ์ด์ ๊ฐ ์์ต๋๋ค.
์ค๋ฒํค๋๊ฐ 0์ ๊ฐ๊น์์ง๊ธฐ ๋๋ฌธ์ ์ด ๋ชฉ๋ก์ ์ถ๋ ฅ์ ํ์ฑํํฉ๋๋ค. ์ด๊ฒ์
์์ ๋ณํ:
https://bitbucket.org/jumpa/pip/changeset/62076643cf33
Original Comment By: jumpa
์๋
ํ์ธ์ Carl, ๊ฒ์ ๋ช
๋ น์ ์ต์
์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ณ ์์ง๋ง ๋๋ ค์์ด
์ค์น ๋ช
๋ น์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์ง: "์
๊ทธ๋ ์ด๋"ํ๋ ค๋ ๊ฒฝ์ฐ
ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด "์ค์น" ์ต์
์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด์ํ๊ฒ๋ ์ฐ๋ฆฌ๋ ์๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ๊ฒ์์ ์ต์
์ ์ถ๊ฐํ๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํ๋๋ผ๋
search --versions ๋๋ search -v ์ฌ์ฉ์ ๋ํ ๋ง์ ๋ฌธ์ .
Original Comment By: Hugo Lopes Tavares
๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฒ์ ์ ๋์ดํ๋ ๊ฒ์ ๋๋ฌด ์ฅํฉํฉ๋๋ค. ์ผ๋ถ
ํจํค์ง์๋ pypi์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์ ์ด ๋ง์ด ์์ต๋๋ค. 10 ๋๋ 20์ ๋๋ฌธ ์ผ์ด ์๋๋๋ค.
์กฐ๊ธ๋. ๊ธฐ๋ณธ์ ์ผ๋ก ์ต์ ๋ฒ์ ๋ฐ ํ๋๊ทธ๊ฐ ์๋ ๋ชจ๋ ๋ฒ์ ๋์ด
ํฉ๋ฆฌ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฒ์์ ์ํด ๊ฐ์ ์ด ํ์ํ๋ค๋ CarlFK์ ๋์ํฉ๋๋ค.
์ขํ๊ธฐ ์ฝ์ต๋๋ค. ๋ฌธ์ ๋ PyPI์ API๊ฐ ์ ๊ณตํ๋ ๊ฒ์ ์์กดํ๋ค๋ ๊ฒ์
๋๋ค.
๊ทธ๋ค์ง ๋ง์ง๋ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ PyPI๋ฅผ ๋ชจ๋ ๋ค์ด๋ก๋ํ์ง ์๊ณ ์ ๊ท์์ ์ํํ์ง ์์ ๊ฒ์
๋๋ค.
ํ์ง์์ ๊ฒ์! ๊ฒ์ํ --exact ํ๋๊ทธ์ ๊ฐ์ ๊ฒ์ ์ ํธํฉ๋๋ค.
์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ผ๋ถ์ด๋ฏ๋ก ์๋ฅผ ๋ค์ด "--exact django"๋ฅผ ๊ฒ์ํ๊ณ
๊ฒฐ๊ณผ์ django ์์ฒด๊ฐ ํ์๋ฉ๋๋ค.
Original Comment By: Carl Meyer
์๋
ํ์ธ์ jumpa, xmlrpc์์ ๊ฐ์ ธ์จ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ๋ฒ์ ์ ํ์ํ๋ ์ข์ ์์ด๋์ด์
๋๋ค.
์ฐ๊ฒฐ!
pip๋ฅผ ๊ฒ์ํ๋ ๋ค์ ์ค๋ํซ์ด ์์ต๋๋ค.
pip - pip installs packages. Python packages. An
easy_install ๊ต์ฒด(๋ฒ์ : 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)
์ด๊ฒ์ ๋ง์ ๋ฒ์ ์ ์ฌ์ฉํ๋ ๋งค์ฐ ํฐ ํจํค์ง ๋ชฉ๋ก์ด ๋ ๊ฒ์
๋๋ค.
๊ฒ์์ ์ด๋ฆ๊ณผ ์์ฝ์ ์ค์ํ๊ฒ ์๊ฐํ๊ธฐ ๋๋ฌธ์
๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ํด ๊ด์ฌ์ ๊ฐ์ ธ์ผ ํฉ๋๊น?
Original Comment By: Hugo Lopes Tavares
์ต์ข
์ฌ์ฉ์๋ก์ ๋๋ ๋ณ๋์ ๋ชฉ๋ก ๋ช
๋ น*์ด ์๋ค๋ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค. ์๊ฐ์
๋ณ๋์ ๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ๋ถ๋ฆฌํ์ฌ ์์ ํ๊ณ ํฅ์์ํค๋ ๊ฒ์ด ๋ ์ฌ์ธ ์ ์์ต๋๋ค. ์๊ฒ
๋ณ๋์ list ๋ช
๋ น์ ๋ ์ ์ฉํ๊ฒ ๋ง๋ค๋ฉด ์ด๋ค ๋ฒ์ ์ธ์ง ๋ํ๋ผ ์ ์์ต๋๋ค.
ํ์ฌ ์ค์น๋์ด ์์ต๋๋ค.
pip list Django
1.2.4
1.2.3 installed
1.2.2
1.2.1
1.2
1.1.3
1.1.2
1.0.4
์ฐธ๊ณ : YUM(RedHat), pkglist(BSD),
dpkg(Debain)๋ ๋ณ๋์ ๋ชฉ๋ก ํ๋๊ทธ ๋๋ ๋ช
๋ น์ ์ ๊ณตํฉ๋๋ค.
Original Comment By: Kelsey Hightower
Carl, ๋๋ ์ด ๋ฌธ์ ์ ๋ํด ๋ค๋ฅธ ๋ ์๊ฐํ๊ณ ์์๋๋ฐ,
Kelsey: ๋ค๋ฅธ ๋ช
๋ น์ ๋์์ง ์์ต๋๋ค.
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ํจํค์ง ์ด๋ฆ๋ง ์ํ๋ค๋ ๊ฒ์ ํ์ํ๊ณ
์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฒ์ ์ ๊ฒ์ํ๊ณ ์ถ์ต๋๋ค.
์กฐ๊ธ ์ด์ํ๋ค.
์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
$ pip search -v --exact Django
~ ๋
$ pip list Django
์ค์น๋ ๋ฒ์ ์ ๋ณด์ฌ์ฃผ๋ Kelsey์ ์์ด๋์ด๋ ๋ชฉ๋ก์ ํฅ์์ํต๋๋ค.
๋ช
๋ น.
Original Comment By: Hugo Lopes Tavares
๊ฒ์ ๋ช ๋ น์ ๋ณ๊ฒฝํ์ต๋๋ค.
๊ฒ์ ๋ช ๋ น์ ์ด๋ฏธ ์ค์น๋ ๋ฒ์ ๊ณผ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ๋ฒ์ ์ ํ์ํ๋ฏ๋ก ๊ฒ์ ๋ช ๋ น์ ๋ณด๊ฐํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฒ์ ๋ ๋์ดํ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ผ ์ ์์ต๋๋ค.
๋ด ๋ณ๊ฒฝ ์ธํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://github.com/phuihock/pip/commit/46bad23b5bf31850a02803ea1ca18be5deca9db3
์ด ์ํ๋ ์ด๋ป์ต๋๊น? pip๋ฅผ ์ฌ์ฉํ์ฌ PyPI์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ๋ฒ์ ์ ๋ณผ ์ ์์ต๋๊น?
์ด๊ฒ์ ์ด๋ฏธ ๊ตฌํ๋์ด ์์ต๋๊น? ์ด๊ฒ์ ์ฝ 2๋
๋์ ์ ๋ฅผ ๊ดด๋กญํ๊ณ ์์ผ๋ฉฐ, ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋ฒ์ ํ๋๊ทธ์ ๊ฒฐํฉ๋ ์ ํ๋ ๊ฒ์์ ๋งค์ฐ ์ ์ฉํ ์๋ฃจ์
์ฒ๋ผ ๋ณด์
๋๋ค.
๋ฒ์ ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๊ฒ์ํ๋ ๋์ ์ด ์ค๋ ๋๋ฅผ ๊ฑด๋๋ฐ์๋ค๋ ๊ฒ์ ์ฌ๊ธฐ์ ์ถ๊ฐํ๊ณ ์ถ์์ต๋๋ค. pip search -v package๋ฅผ ์๋ํ์ต๋๋ค. ๋ฒ์ ์ ๋ณด๋ฅผ ํฌํจํ์ฌ ์ค์นํด์ผ ํฉ๋๋ค...
๋๋ _๊ทธ๋ฅ_ ์ด ๊ธฐ๋ฅ์ด ๋ด ๋๋ฃ๊ฐ ๋์๊ฒ ๋ฌผ์ด๋ณธ ํ์ ์ด ๊ธฐ๋ฅ์ด ์์ง ๊ตฌํ๋์ง ์์๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๋ค์ ๋ฒ์ ์ pip ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ ๊ณํ์ด ์์ต๋๊น?
์ด PR ์ด ๊ด๋ จ์ด ์์ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ์ฌ ์์ ์ค์ธ๊ฐ์?
๋ํ Linuxconf 2014 ๊ฐ์ฐ "Python Packaging 2.0: Playing Well With Others" ์์ ํ์ด์ฌ ํจํค์ง์ ํ์ฌ ์ํฉ๊ณผ ๋ฏธ๋์ ๋ํด ๊ด์ฌ์ ๊ฐ์ง ์๋ ์์ต๋๋ค. ๋ฐํ์๋ (๋ด๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด) pip์ ๋ฉํ๋ฐ์ดํฐ์ ๋ํ ์ผ๋ถ ์ ํ ์ฌํญ์ ์๋ CPAN์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ PyPI ์ค๊ณ์ ๊ฒฐ๊ณผ์ด๋ฉฐ PyPI์ ๋ฐฑ์๋๋ฅผ ์ฌ์์ ํ๋ค๊ณ ๋งํ์ต๋๋ค(ํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ ํ์ฌ ๋ฐฑ์๋์ ํธํ ๊ฐ๋ฅํจ) ์ํฉ์ ๊ฐ์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ฃผ๋ก "์์คํ ํตํฉ์", ์ฆ ๋ค์ด์คํธ๋ฆผ ํจํค์ง์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์์ง๋ง, ๊ทธ๊ฒ์ด ์ด ๋ฌธ์ ์ ๊ฐ์ ๋ฌธ์ ์ ์ํฅ์ ๋ฏธ์น๋ฏ๋ก ๋ฌธ์ ๋ฅผ ๋ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
+1,000,000
์ง๊ธ์ ์ด๋?
์ด์ ์ค์นํ์ง ์๊ณ ์ต์ ๋ฒ์ ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ด ๋ฌธ์ ๋ 2011๋
๋ถํฐ ์ด๋ ค ์์ต๋๋ค. ์์์ ๋ณธ ํจ์น๋ ํ ์ค์ ๋ถ๊ณผํฉ๋๋ค. :(
์ด๊ฒ์ ํ์ฑํํ ์ ์๋ ์ฌ์ํ ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ป๊ฒ ์ด ์์ ์์ apt-cache madison
์ ํด๋นํ๋ ์ต์
์ด ์์๊น์?
๊ฒ์ํ ๋๋ ์ต์ ๋ฒ์ ์ PyPi ํจํค์ง๋ฅผ ๋ณด๊ณ ์ถ์ต๋๋ค. ์ ํํ ์ผ์นํ๋ฉด ์๋ํ์ง๋ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก awk๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด๊ฒ์ ์ ๋ฅผ ์ข์ ์์ผฐ๊ณ ์ด๊ฒ์ ๋ํ ํฌ๋ง์ด ๊ฑฐ์ ๋๋ ์ ํ ์๋ค๋ ๊ฒ์ ์๊ณ ๋์์ ๋ง๋๋ ๊ฒ์ด ์๊ฐ์ ํ ์ ํ ๊ฐ์น๊ฐ ์๋ค๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ์ด ๋ฌธ์ ์ ํจ๊ป ๋ค๋ฅธ ์์ฒญ๋ ๊ธฐ๋ฅ(์: ์ ๊ท์ ๊ฒ์ ๋ฐ ์์ ์ถ๋ ฅ ๋ฑ)์ ๊ตฌํํ์ต๋๋ค. ๊ด์ฌ์ด ์์ผ์๋ฉด ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค
wget -qO- https://pypi.python.org/pypi/uWSGI | egrep -o "uwsgi-[0-9].[0-9].[0-9][0-9].tar.gz" | ์ ๋ ฌ -u
wget -qO- https://pypi.python.org/pypi/uWSGI/json | grep '"version"'
@andreif ์ด๊ฒ์ ํญ์ ์ฌ๋ฐ๋ฅธ ๋ฒ์ ์ ์ฐพ์ง ์์ต๋๋ค(--pre๊ฐ ์ ๊ณต๋์ง ์๋ ํ pip๋ ์ํ, ๋ฒ ํ, ๋ฆด๋ฆฌ์ค ํ๋ณด ๋ฑ์ ๋ฌด์ํฉ๋๋ค). ์ด๊ฒ์ ๋ ๊ฐ๊น์ต๋๋ค(๊ทธ๋ฌ๋ ๋ณด์ฅ๋ ์์):
wget -qO- https://pypi.python.org/pypi/uWSGI/json | grep -E ' {8}"[0-9."]*": \[' | sort -V | tail -n 1 | tr -d ' ":['
์ข์ต๋๋ค. ๊ทธ๋ฌ๋ฉด JSON ์๋ต์ "pre-version": "1.2.3a4"
์ ๊ฐ์ ํญ๋ชฉ์ด ํฌํจ๋์ด์ผ ํ๋ฏ๋ก ๊ฐ๋จํ ํํ์์ผ๋ก ๋ ๋ค grepํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์ ๋ง ์ดํด๊ฐ ์ ๊ฐ์... ์ด๊ฒ ๋ฌด์จ ์ผ์ด์ฃ ?
pip install
์ ์ ์ต์
์ ์ถ๊ฐํ๋ฉด ํจํค์ง๊ฐ ํด๊ฒฐ๋ ๋๊น์ง๋ง pip๊ฐ ์คํ๋๊ณ ์ ํํ ํจํค์ง๊ฐ ์ธ์๋๊ณ ์ข
๋ฃ๋ฉ๋๋ค(์ค์น ๊ฑด๋๋ฐ๊ธฐ)?pip search
๋ฅผ ์ฌ์ฉํ ๋ ํจํค์ง ์ด๋ฆ ์์ ์ต์ ๋ฒ์ ์ ํ์ํฉ๋๊น?ํ์๋ ๋์๊ฒ ํด๊ฒฐ๋ ๊ฒ ๊ฐ๊ณ ์ ์๋ ์๋ง๋ ์๋ก์ด ์ ์ฉ ๋ฌธ์ ๊ฐ ์์ด์ผ ํฉ๋๋ค.
@pradyunsg ๊ธ์์, ์ ๊ธฐ์ต์ด ๋ง๋ค๋ฉด ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒ์ (์ถ์ ๋ฐ ์ํํ ๋ชจ๋)์ ํ์ธํ ์ ์๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด ํ์ํ์ต๋๋ค. ์ด ๋ฒ์ ์ pip install -U [--pre]
์ ์ํด ์ค์น๋ฉ๋๋ค.
virtualenv๋ฅผ ์ค์ ํ๋ ์คํฌ๋ฆฝํธ์ ํ์ํ์ต๋๋ค. ์ต์ ๋ฒ์ ์ ํจํค์ง๊ฐ ์์ ๋ ํ์ฌ ๋ฒ์ ์ ์ ๋ฐ์ดํธํ ์ง ์๋๋ฉด ์ ์งํ ์ง ๋ฌป์ต๋๋ค. ๋ฐ๋ผ์ ์ด ์ฌ์ฉ ์ฌ๋ก๋ ์๋ก์ด pip ๊ฒ์์ ํฌํจ๋ฉ๋๋ค.
pkg="foo"; pip install --download /dev/null --no-cache-dir --no-binary :all: "$pkg" 2>&1 | egrep -i "$pkg"'-' | head -1 | egrep -io "$pkg"'-[^ ]+' | sed 's/^'"$pkg"'-\(.*\)\.tar\.gz$/\1/g'
--download
๊ฒ์ - ์ง์ ์ค๋จ ๋ฒ์ ...
pkg="foo"; tmp="$(mktemp -d)"; pip download -d "$tmp" --no-cache-dir --no-binary :all: "$pkg" 2>&1 | egrep -i "$pkg"'-' | head -1 | egrep -io "$pkg"'-[^ ]+' | tr A-Z a-z | sed 's/^'"$pkg"'-\(.*\)\.tar\.gz$/\1/g'
๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํฉ๋๋ค.
pip install foo==
์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฒ์ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค(์ ํจํ pypi ์ฌ์ฉ ๊ฐ๋ฅํ ํจํค์ง์ ๊ฒฝ์ฐ ์ด ๊ฒฝ์ฐ ๋ถ์).
Could not find a version that satisfies the requirement molecule== (from versions: 1.20.1, 1.20.3, 1.21.1, 1.22.0, 1.23.0, 1.25.0, 1.25.1, 2.10.0, 2.10.1, 2.11.0, 2.12.0, 2.12.1, 2.13.0, 2.13.1, 2.14.0, 2.15.0, 2.16.0, 2.17.0, 2.18.0, 2.18.1, 2.19.0)
No matching distribution found for molecule==
๊ทธ๋ฌ๋ ์ค์ ๋ก ๋ค์ด๋ก๋ ๋ฐ/๋๋ dev/null์ ์ค์นํ์ง ์๊ณ pip๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ ๋ฒ์ ์ ์ป์ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค :-)
๋์. ์ด ๊ธฐ๋ฅ์ด ์๋ ํจํค์ง ๊ด๋ฆฌ์๋ ์ผ์ข ์ ๋๋ด์ ๋๋ค. ๋ฒ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋ ์์ ์กฐ์ฐจ๋ ์ด ํจํค์ง ๊ด๋ฆฌ์์ ์๋ ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ๋ณด์ํ๊ธฐ ์ํ ์์ ํ ํดํน์ ๋๋ค. ๋ด๊ฐ ๊ทธ๊ฒ์ ์๋ฏธํ๋ ๊ฒ์ ์๋์ง๋ง, ์ด๊ฒ๋ค์ ์์ ํ ๋ฌด์๋๋ ๋ฐ๋ก ์ด ๋ฒ๊ทธ๊ฐ ์์ฑ๋๊ธฐ ํจ์ฌ ์ ์ 8๋ ์ ์ ์ฌ์ฉ ๊ฐ๋ฅํ์ด์ผ ํ๋ ๊ฒ๋ค์ ๋๋ค. ๋๋ pip๊ฐ ์ค์ ๋ก ๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ง๋ง ๋ํ ๊ฐ์ฆ์ค๋ฝ๊ณ ๊ธฐ๊ดดํ๊ณ ์์ฒญ๋๊ฒ ํฌ๊ณ ์ง๋์น๊ฒ ๋ณต์กํ ๊ฒ์ผ๋ก ๋์ฒด๋ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ธ์, ์ฐ๋ฆฌ๋ ํญ์ ์ฐ๋ฆฌ ์์ ์ ๊ฒ์ ์ธ ์ ์์ต๋๋ค.
pip-tools๋ pip๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋๊ตฌ๋ก ์ด ์ค๋ ๋์ ์ฌ๋๋ค์ด ์ง๋ฌธํ๋ ๋ช ๊ฐ์ง ์ฌํญ์ ๋์์ด ๋ ์ ์์ต๋๋ค. https://github.com/jazzband/pip-tools
์ถ์ ์ข ์์ฑ ๋ชฉ๋ก์ ์ ๊ณตํ๋ฉด(์ฆ, ๋ฒ์ ์ด ์ง์ ๋์ง ์์) ์ค์นํ ๊ฐ ์๊ตฌ ์ฌํญ ๋ฐ ์ข ์์ฑ์ ํน์ ๋ฒ์ ์ ์๋ ค์ค๋๋ค.
pkg="django"; echo "$pkg" | pip-compile - --output-file - | egrep -i '^'"$pkg"'=' | cut -d '=' -f 3-
๋ ๊ฑฐ์ ์ด๋ฆฌ์์ ๊ฒ์
๋๋ค(์ค์นํด์ผ ํ๋ ๋ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๊ณ์ฐํ๋ฉด ๋ ์ด๋ฆฌ์์[python2 ์ง์์ด ํ์ํ ๊ฒฝ์ฐ ๋ ์ด๋ฆฌ์์])
๊ฒ๋ค๊ฐ pip-tools(& pipenv)์ ์์ ์ ์ผ๋ฐ pip์ ์ ์ฝ ํ์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ( pip install -r reqs -c constraints; pip freeze > constraints
).
pip install
์ ์ ์ต์ ์ ์ถ๊ฐํ๋ฉด ํจํค์ง๊ฐ ํด๊ฒฐ๋ ๋๊น์ง๋ง pip๊ฐ ์คํ๋๊ณ ์ ํํ ํจํค์ง๊ฐ ์ธ์๋๊ณ ์ข ๋ฃ๋ฉ๋๋ค(์ค์น ๊ฑด๋๋ฐ๊ธฐ)?
๋ฐฉ๊ธ ์ฌ๊ธฐ์์ ๋ช ๊ฐ์ง ์ค์ํ ํ์ฐ์คํคํ์ ์ํํ์ผ๋ฉฐ ์ด ๋ฌธ์ ๋ ์ด์ ์ด ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ถ์ /ํ ๋ก ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ ๋ํ ์ด ์์ฒญ์ ์์ฉํ๊ธฐ ์ํด pip๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ/๋ฐฉ๋ฒ์ ๋๋ค.
๊ด๋ จ ์ปจํ ์คํธ๊ฐ ๋ ์ด์ ์ฒจ๋ถ๋์ง ์์ ์ ๋ง ์ค๋๋ ๋๊ธ๋ถํฐ "์ ์ฌ์ ์ธ ํดํน/์คํฌ๋ฆฝํ ๋ฉ์ด๋ฆฌ"๊ฐ ํฌํจ๋ ๋๊ธ์ ์ด๋ฅด๊ธฐ๊น์ง ์ ์ฒด ์์ ์ 90%๋ฅผ ์ํํ๋ ๋๊ธ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ง์ ๋๊ธ์ ์จ๊ฒผ์ต๋๋ค. ํ์ ๊ทธ๋ฃน์ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ํ์๋ฅผ ๋ ๊ฒ์ํ์ง ๋ง์ญ์์ค. ๋๊ตฌ ์์ฒด์์ ์์ ์ฌํญ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ ผ์ํ๋ ํฌ๋ผ์ด ์๋๋ผ ์ด๋ฌํ ์ ์์ด ๋ ์ ์ ํ ๋ค๋ฅธ ์ฌ์ฉ์ ์ง์ ํฌ๋ผ์ด ์์ต๋๋ค. :)
์ค์ ๋ก ์ฌ์ ํ ๊ด๋ จ์ฑ์ด ์๊ณ ์ ์ฉํ ๋๊ธ์ด ์จ๊ฒจ์ ธ ์๋ ์ฌ๋์๊ฒ ์ฌ๊ณผ๋๋ฆฝ๋๋ค. ๋ง์ ๋๊ธ์ ๋ํ ๋งฅ๋ฝ์ ํ์ ํ ์ ์์๊ณ ๊ทํ์ ๋๊ธ์ด ๋ถ์์ ํผํด์ ์จ๊ฒจ์ ธ ์์์ ์๋ ์์ต๋๋ค.
์ด ํฐ์ผ์ ์ข ์์ฑ ํด๊ฒฐ ํ๋ก๊ทธ๋จ(#988)์ ๊ฐ๋ฐ๋ก ์ธํด ์ฐจ๋จ๋์๊ธฐ ๋๋ฌธ์ ํ์ด ํด๋น ์ฃผ์ ์ ๋ํด ์์ผ๋ก ๋์๊ฐ๊ธฐ ์ํด ์ปค๋ฎค๋ํฐ์ ๋์์ ์ฐพ๊ณ ์๋ค๊ณ ์ฌ๊ธฐ์์ ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค.
์ฐ๋ฆฌ๋ ์๋ก์ด ๋ฆฌ์กธ๋ฒ๊ฐ ์คํจํ๋ ์ํฉ์ ๋ ์ ์ดํดํด์ผ ํ๋ฏ๋ก ๋ณต์กํ ์ข ์์ฑ์ ๊ฐ์ง pip ์ฌ์ฉ์์๊ฒ ๋ค์์ ์์ฒญํฉ๋๋ค.
--unstable-feature=resolver
์คํ)์ฌ๊ธฐ์์ ๋ ๋ง์ ์ ๋ณด์ ์์ธํ ์ง์นจ ์ ์ฐพ์ ์ ์์ต๋๋ค.
์ด ์ค๋ ๋์์ ์์ง ์ธ๊ธํ์ง ์์ #7819์ ์คํ์์ ๋ฐ์ํ์์ ๊ฐ์กฐํ๊ณ ์ถ์ ํ ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก๋ ์์์ ๋ ผ์ํ ์ ๊ธ ํ์ผ๊ณผ ์ฝ๊ฐ ์ง๊ตํ๋ ๊ธฐ๋ฅ์ธ ๋์ค์ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํ๊ธฐ ์ํ URL์ ๊ธฐ๋ก ํ๋ ๊ฒ์ ๋๋ค. ํฐ ํ์ผ์ ๋ค์ด๋ก๋ํ ํ์ ์์ด pip resolve์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
์ฐ๋ฆฌ๋ Twitter์์ ์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๊ณ ํ์ต ์์ฉ ํ๋ก๊ทธ๋จ์ด ์ฒ์ ์คํ๋ ๋๊น์ง ํ์ฌ ์ฝ๋๋ฅผ ํฌํจํ์ง ์๊ณ ๋ฐฐ์ก๋ ์ ์๋ "ipex"๋ผ๊ณ ๋ถ๋ฅด๋ ๊ธฐ๊ณ ํ์ต ์์ฉ ํ๋ก๊ทธ๋จ์ ํจํค์ง ๋ฐฉ๋ฒ์ ๊ฐ๋ฐํด ์์ต๋๋ค(ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์). pantbuild/pants#8793์ ๊ฒฝ์ฐ ์๊ตฌ ์ฌํญ์ ํด๊ฒฐํ๊ธฐ ์ํด pex ๋ฐํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํธ์ถํ๋ ์คํ ๊ฐ๋ฅํ pex ์์นด์ด๋ธ๋ฅผ ์์ฑํฉ๋๋ค(pex๋ ๋ฎ๊ฐ ์๋์์ pip๋ฅผ ์คํํฉ๋๋ค). ์ ๋ ํ์ฌ ๋ฐํ์ ์ ์ ์ฒด pex/pip ํ์ธ ๋จ๊ณ๋ฅผ dist๋ฅผ ๋ค์ด๋ก๋ํ URL๋ง ๊ธฐ๋กํ๋ ๊ต์ฒด๋ก ๋์ฒดํ๋ ํ๋กํ ํ์
์ ์์
์ค์
๋๋ค( req.link
). ์ด๊ฒ์ "์ํ๋" pex ํ์ผ์ ์์ฑํ๊ธฐ ์ํ ๋ค์ด๋ก๋ ๋ฐ ํ์ผ ๋ณต์ฌ๊ฐ ์์ ํ ๋ณ๋ ฌ๋ก ์ํ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ๋งค์ฐ ๋น ๋ฆ
๋๋ค(๋งค์ฐ ์ธ๋ถ์ ์ผ๋ก ์บ์๋ ์ ์์).
๊ทธ ๊ธฐ๋ฅ(์ํค์ ๋ฐํด/๋น ๋ฐํด๋ฅผ ๋ณ๋ ฌ๋ก ๋ค์ด๋ก๋ ๋ฐ ์ค์น)์ ์ถ๊ฐ๋ก ์ ๊ธ ํ์ผ์ ๋ฃ์ ๋ฐํด ๋๋ ๋ฐํด๊ฐ ์๋ URL์ ๋ ธ์ถํ๋ ๋ฐ ์์กดํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์ง ์ธ๊ธ๋์ง ์์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ง๋ ํ์๋ ipex ํ์ผ์ด ์์ฑ๋ ๋ pip๋ฅผ ์ ํํ ํ ๋ฒ(๋ค์ด๋ก๋ URL์ ํด๊ฒฐํ๊ธฐ ์ํด) ํธ์ถํ ์ ์์ผ๋ฉฐ, URL์ด ํฌํจ๋ ํด๋น "ํด๊ฒฐ" ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ ipex ํ์ผ์ด ์์ ํ ์ฒ์ ํธ์ถ๋ ๋ ์๊ตฌ ์ฌํญ์ ๋ค์ด๋ก๋ํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. pip๋ฅผ ๋ค์ ํธ์ถํ ํ์ ์์ด ๋ค๋ฅธ ์์คํ ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
v1 ๋ฆฌ์กธ๋ฒ์ ๋ด์ฅ์์ ์ถ๋ ฅ์ผ๋ก URL์ ์ ํํ๋ ค๋ฉด #7819์์ ๋ง์ ๋
ธ๋ ฅ์ด ํ์ํ์ต๋๋ค. v2 ๋ฆฌ์กธ๋ฒ์ ํจ๊ป ์๋ํ๋๋ก ๋ง์ง๋ง์ผ๋ก ์๋ํ์ ๋ ํจ์ฌ ์ ์ ๋
ธ๋ ฅ์ด์์ต๋๋ค. ์ง๊ธ ๋น์ฅ์ ๋ค์ด๋ก๋ URL์ ๋ด๋ณด๋ด๋ --dry-run
๋๋ resolve
๋ช
๋ น์ ์ผ๋ถ ์คํ ๋ฒ์ ์ ๋ด๋ถ์ ์ผ๋ก ์ถ์ํ ๊ณํ์
๋๋ค. ์ฑ๊ณต์ ์ผ๋ก ์ํํ๋ฉด ๋ชจ๋ ๊ทธ ๋์ --unstable-feature=resolver
์ ๋ํ ๋๋จธ์ง ๋ฌธ์ ! :D :D
์ธ๊ธํ๋ฏ์ด ์ ๊ธ ํ์ผ ํ์ ๋์์ธ์ ๋ฆฌ์กธ๋ฒ ๊ตฌํ๊ณผ ์ง๊ตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ํ์ฌ pip ํ๋ก์ ํธ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋จ์ ์๋ฏธํ๊ธฐ๋ ํฉ๋๋ค. ์ด ์ฃผ์ ์ ๋ํ ๋ ผ์ ๊ฐ ์์์ต๋๋ค(๊ฒฝ๊ณ : ๋งค์ฐ ๊ธด ์ค๋ ๋). ๊ทธ๋ฌ๋ ๊ฐ์ฉํ ๊ฐ๋ฐ์ ์๊ฐ์ด ๋ถ์กฑํ๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด ์ด๋ ๊ฒฐ๊ตญ ๋ฆฌ์กธ๋ฒ๊ฐ ์ ์ด๋ ์์ ํ๋๊ธฐ ์ ์ ์ง์งํ ๋ ผ์๊ฐ ์ผ์ด๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์์์ ์๋ฏธํฉ๋๋ค.
๋งํฌ ๊ฐ์ฌํฉ๋๋ค!!
2020๋
5์ 24์ผ ์ผ์์ผ 19:34 Tzu-ping Chung ์๋ฆผ @github.com
์ผ๋ค:
์ธ๊ธํ๋ฏ์ด ์ ๊ธ ํ์ผ ํ์ ๋์์ธ์
๋ฆฌ์กธ๋ฒ ๊ตฌํ. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ํ ๊ทธ๊ฒ์ด ์ ์ฉ ๋ฒ์๋ฅผ ๋ฒ์ด๋จ์ ์๋ฏธํฉ๋๋ค.
ํ์ฌ ํ ํ๋ก์ ํธ. ์ฃผ์ ์ ๋ํ ํ ๋ก ์ด ์์์ต๋๋ค
https://discuss.python.org/t/structured-exchangeable-lock-file-format-requirements-txt-2-0/876/1
(๊ฒฝ๊ณ : ์ฐ๋ ๋๊ฐ ๋งค์ฐ ๊ธธ๋ค), ํ์ง๋ง ๊ฐ๋ฐ์ ์๊ฐ์ด ๋ถ์กฑํ๋ค๋ ์ ์ ๊ณ ๋ คํ๋ฉด
์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ ์ง์งํ ํ ๋ก ์ด ์ด๋ฃจ์ด์ง์ง ์์ ๊ฐ๋ฅ์ฑ์ด
๋ฆฌ์กธ๋ฒ๊ฐ ์ ์ด๋ ์์ ํ๋๊ธฐ ์ ์ ๋ฐ์ํฉ๋๋ค.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/pypa/pip/issues/53#issuecomment-633346918 ๋๋
๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/AAJ6UT3IK65CUQGUIOGBNVDRTHKMVANCNFSM4AIQRXLA
.
@cosmicexplorer --dry-run
๋๋ resolve
๋ช
๋ น์ ์คํ ๋ฒ์ ์ ์์ง ๋ด๋ถ์ ์ผ๋ก ์ถํํ์ต๋๊น? ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ์งํ๋๊ณ ์์ต๋๊น?
์ ๊ฐ ์ด ๊ธฐ๋ฅ์ ๋งค์ฐ ๊ด์ฌ์ด ์๋ค๋ ๊ฒ์ ๋์น์ฑ์ จ์ ๊ฒ์ ๋๋ค ๐
๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํฉ๋๋ค.
pip install foo==
์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฒ์ ๋ชฉ๋ก์ ์ ๊ณตํฉ๋๋ค(์ ํจํ pypi ์ฌ์ฉ ๊ฐ๋ฅํ ํจํค์ง์ ๊ฒฝ์ฐ ์ด ๊ฒฝ์ฐ ๋ถ์).
Could not find a version that satisfies the requirement molecule== (from versions: 1.20.1, 1.20.3, 1.21.1, 1.22.0, 1.23.0, 1.25.0, 1.25.1, 2.10.0, 2.10.1, 2.11.0, 2.12.0, 2.12.1, 2.13.0, 2.13.1, 2.14.0, 2.15.0, 2.16.0, 2.17.0, 2.18.0, 2.18.1, 2.19.0) No matching distribution found for molecule==
๊ทธ๋ฌ๋ ์ค์ ๋ก ๋ค์ด๋ก๋ ๋ฐ/๋๋ dev/null์ ์ค์นํ์ง ์๊ณ pip๋ฅผ ์ฌ์ฉํ์ฌ ์ค์นํ ๋ฒ์ ์ ์ป์ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค :-)
์ข์ ํธ๋ฆญ !! ์ ์ฉํ๊ณ ํธ๋ฆฌํฉ๋๋ค!! ์ ๋ง ์ธ์์ ์ ๋๋ค!!
์ ์ฌ์ ์ธ ํดํน/์คํฌ๋ฆฝํ ๋ฉ์ด๋ฆฌ ... ์ฌ๊ธฐ์ ํ์๋ฅผ ๋ ๊ฒ์ํ์ง ๋ง์ญ์์ค. ๋๊ตฌ ์์ฒด์์ ์์ ์ฌํญ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ ผ์ํ๋ ํฌ๋ผ์ด ์๋๋ผ ์ด๋ฌํ ์ ์์ด ๋ ์ ์ ํ ๋ค๋ฅธ ์ฌ์ฉ์ ์ง์ ํฌ๋ผ์ด ์์ต๋๋ค. :)
์๋ฌด ๊ฒ๋ ์๋ ๊ฒ์ ์๋์ง๋ง ์ด๊ฒ์ ๋ฒ๊ทธ๊ฐ ๋งค์ฐ ์ค๋ซ๋์ ๋จ์์์ ๋ ๋ฐ์ํ๋ ์ข ๋ฅ์ ์ผ์ ๋๋ค(๊ฐ์ฅ ์ต๊ทผ์ ๊ธฐ์ฌํ "nugget"์ ๊ฒฝ์ฐ 7.56๋ , ์ด ์์ง ์ด๋ ค ์๋ ๋ฒ๊ทธ๋ ํ์ฌ 9.25๋ ์ ๋๋ค. ๋ก์). ์ฌ๋๋ค์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ณต์ ํฉ๋๋ค.
๋๋ ๋ํ ๋์์ ํฌํจํ์ฌ ๋๊ธ์ ์จ๊ธฐ๋ ๊ฒ์ด ์ฌ๋๋ค์ด ๋๊ธ์ ๊ฒ์ํ๋ ค๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ๋ถํ์ํ๋ค๋ ๊ฒ์ ๊นจ๋ซ๋ ๋ฐ ๋์์ด ๋ ์ง ์์ฌํฉ๋๋ค(๋ถ๋ถ์ ์ผ๋ก๋ ์๋ฌด๋ ์ด๋ฏธ ๋งํ ๋ด์ฉ์ ๋ณด๊ธฐ ์ํด ์จ๊ฒจ์ง ๋๊ธ์ ๋ชจ๋ ํด๋ฆญํ์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค). ๋๊ตฐ๊ฐ๊ฐ 10๋ ๋ ๋ฒ๊ทธ์ ๋๋ฌํ๊ณ ์ ์ง ๊ด๋ฆฌ์๋ก๋ถํฐ ์ด๋ค ์ข ๋ฅ์ ์ง์ ์ด๋ ๋ฐฉํฅ ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ๋ฉด ๊ฐํ ๊ทธ๋ค์ด ํ์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ณต์ ํ๋ ๊ฒ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค. ์ด๋ฏธ ์ํํ ์์ฒด๋ ๋ถํ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค, ๋ฐ๋ก ์ด ์ฝ๋ฉํธ๋ ์์ง ์ด๋ ค ์๋ ์ด ๋ฒ๊ทธ์ ๋ํ ์๋ต์ผ๋ก ์ํํ ์์ ์ด ๋ฐ์ํ์ ๋ ๋ฐ์ํ๋ ๊ฒ์ด๊ธฐ๋ ํฉ๋๋ค.
๊ฑฑ์ ํ์ง ๋ง์ญ์์ค. pip๊ฐ ๋ด ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ ์ค๋จํ๊ณ ์ด ๋ฒ๊ทธ๊ฐ ์ฌ์ ํ ์ด๋ ค ์์ง ์๋ ํ ๋ ์ด์ ๋๋ฐ๋์ง ์์ ์ฃผ์์ ์ถ๊ฐํ์ง ์์ ๊ฒ์ ๋๋ค.
ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. :)
@brainwane @ei8fdb ์ด ๋ฌธ์ ๋ฅผ UX ๊ด์ ์์ ์ค์ํ ๊ฒ์ผ๋ก ํ๋๊ทธ ์ง์ ํ๊ณ ์ถ์ต๋๋ค - #8377 ๊ด๋ จ
๋ด ์ดํด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋์ ์์ค ์์ฝ:
ResolutionImpossible
).ResolutionImpossible
์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค(๊ฐ ํ๋ก์ ํธ์ ์ข
์์ฑ์ ์๋์ผ๋ก ๊ฒ์ฌํ๋ ๊ฒ ์ธ์๋).๊ฐ๋จํ ๋งํด์ ์ฌ์ฉ์๊ฐ ์ต์์ ์๊ตฌ ์ฌํญ(์: requirements.txt
์ ์ง์ ๋๊ฑฐ๋ ๋ช
๋ น์ค์ ์ง์ ์
๋ ฅ๋๋ ํจํค์ง)์ ๋ฐ๋ผ ๊ฐ๋ฅํ ์ข
์์ฑ ์ถฉ๋์ ๊ฐ์งํ ์ ์๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
์ด๋ ๊ฒ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด ์ ์๋ ํ๋๊ทธ ์ด๋ฆ( --dry-run
)์ ์กฐ์ฌ/ํ ๋ก ํด์ผ ํฉ๋๋ค.
@uranusjr @pfmoore - ๋ด๊ฐ ์๋ชป ์๊ณ ์๋ ๊ฒ์ด ์๊ฑฐ๋ ํ ๋ก ์ ๊ธฐ๋ฐ์ผ๋ก ๋์น ๋ถ๋ถ์ด ์์ผ๋ฉด ์์ ํด ์ฃผ์ธ์. ๊ณ ๋ง์
@nlhkabu ์์ ๋ชจ๋ ์๊ฒฌ์ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ถ๋ช
ํ ํ๊ธฐ ์ํด --dry-run
์คํ์ผ์ ๋ช
๋ น์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ข
์์ฑ ์ถฉ๋์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ช
๋ ๋๋ก ์ถฉ๋์ด ์กด์ฌํ๋ ์ด์ ๋ฅผ ์ง๋จํ๋ ๋ฐ ์ถ๊ฐ ๋์์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๊ฐ ํ ์ ์์ผ๋ฉด ์ค์นํ์ง๋ง, ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ฌด ๊ฒ๋ ํ์ง ์๊ณ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ๋ ์ผ๋ฐ์ ์ธ "์ฉ์ ์์ฒญ" ์ ๊ทผ ๋ฐฉ์๊ณผ ๋์กฐ์ ์ผ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก "๋ฐ๊ธฐ ์ ์ ์ดํด๋ณด๊ธฐ" ์ค์น ๋ช
๋ น์
๋๋ค.
์ด๊ฒ์ด ์ ๊ณตํ์ง ์๊ณ IMO๊ฐ ๋งค์ฐ ์ ์ฉํ ์ ์๋ ๊ฒ(pip ํ์ ๋ช ๋ น์ผ๋ก ๋๋ ํ์ฌ ๋๊ตฌ๋งํผ ์ ์ฉํจ)์ pip๊ฐ ์๋ํ๋ ์ข ์์ฑ ํธ๋ฆฌ๋ฅผ ๋์ดํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. . (์ด๊ฒ์ ๋ฆฌ์กธ๋ฒ๋ ์ค์ ์ค์น ๋จ๊ณ๊ฐ ํ์ํ์ง ์์ผ๋ฉฐ ํจํค์ง ์์ค์ ์ข ์์ฑ ๋ฉํ๋ฐ์ดํฐ๋ฅผ "๋จ์ํ" ๋์ดํ๋ ๊ฒ์ ๋๋ค.)
์ด๊ฒ์ pip resolve
๋ช
๋ น์ ํํ๋ฅผ ์ทจํ ์๋ ์์ต๋๋ค.
pip resolve
๋ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ด ๊ธฐ๋ํ๋ ๊ฒ์
๋๋ค. ๐ ๊ฒฐ๊ตญ ์์ฒด ํ๋๊ทธ๋ ํ์ฉํ ๊ฒ์
๋๋ค.
@pfmoore์ ๋ํ ์ค๋ช
๊ฐ์ฌํฉ๋๋ค. ์ฌ์ฉ์ ๊ด์ ์์ resolve
--dry-run
๊ฐ ์ผ๋ง๋ ์ฌ์ฉ๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
IMO, ์ฌ์ฉ์์๊ฒ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ผ๊ณ ๋งํ๋ ๊ฒ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๋ํ ์ค๋ฅ๊ฐ ์๋ ์์น๋ฅผ ์ฐพ๊ณ ์ด์ ๋ํด ์กฐ์น ๋ฅผ ์ทจํ๊ธฐ์ ์ถฉ๋ถํ ์ ๋ณด๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ --dry-run
๋ฅผ ์คํํ๋ค๊ณ ์์ํด๋ณด์ญ์์ค. ์๋ต์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ํฌํจํ ์ ์์ต๋๋ค.
์ข ์์ฑ ์ถฉ๋์ด ๊ฐ์ง๋์์ต๋๋ค. pip๋ d 1.0 ๋ฐ c 1.0์ ์ค์นํ ์ ์์ต๋๋ค.
์ถฉ๋์ ๋ค์์ผ๋ก ์ธํด ๋ฐ์ํฉ๋๋ค.
d 1.0์ E==2.0์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
c 1.0์ E==1.0์ ์์กด
pip resolve
๋ฅผ ์คํํ์ฌ ์ข ์์ฑ ํธ๋ฆฌ๋ฅผ ๊ฒ์ฌํฉ๋๋ค.
ResolutionImpossible
์ค๋ฅ ๋ฉ์์ง์์ pip resolve
๋ฅผ ์ฌ์ฌ์ฉํ ์๋ ์์ต๋๋ค(#8377 ์ฐธ์กฐ). ์ด๋ ํฐ ์น๋ฆฌ๊ฐ ๋ ๊ฒ์
๋๋ค.
@pradyunsg pip resolve
ํฐ์ผ์ด ๋ฐ๋ก ์๋์?
๋ํ ๋ช
ํํ๊ฒ ํ๊ธฐ ์ํด pip resolve
์ ์๋๋ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์ ์ค ํ๋๋ผ๊ณ ์๊ฐํฉ๋๋ค(์ฑ๊ณต์ ๊ฐ์ ).
ํธ์ํฐ์ ๊ฒฝ์ฐ #7819์ ์ค๋ช
๋ "ipex" ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ pip resolve
๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์คํ ๊ฐ๋ฅํ pex ํ์ผ์ ๋ง๋ค๊ณ ์์ต๋๋ค. ์ด ๋ช
๋ น์ ์๋ฌด ๊ฒ๋ ๋ค์ด๋ก๋ํ์ง ์๊ณ ํ์ธ๋ ๋ชจ๋ ๋ฐฐํฌ์ ๋ํ ๋ค์ด๋ก๋ URL์ ์ถ๋ ฅํฉ๋๋ค(์์ง ํ๋ก๋์
์์ ์ฌ์ฉ๋์ง ์์ ). ์ด๊ฒ์ #8448๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ๋ค๋ฅธ ์ต์ ํ์ ํจ๊ป ๋ช ์ด ์์ ์ด๋ฌํ ipex ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ฌํ ipex ํ์ผ์ ๋์ผํ ๋ฐ์ดํฐ ์ผํฐ ๋ด์์ ์ฒ์ ์คํ๋ ๋ pip resolve
๋ช
๋ น์ ๋ชจ๋ ๋ฐฐํฌ ์ถ๋ ฅ์ ๋ค์ด๋ก๋ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ipex ํ์ผ ์์ฒด๊ฐ ๊ธฐ๊ฐ๋ฐ์ดํธ๊ฐ ์๋ ๋ฉ๊ฐ๋ฐ์ดํธ๊ฐ ๋์ด ์
๋ก๋ ์๊ฐ์ด ํฅ์๋ฉ๋๋ค. ๋ง์ ์ง์ญ์์.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก pip resolve
์ถ๋ ฅ์ json ๋ฒ์ ์ pex ์์นด์ด๋ธ์ ํ์ผ๋ก ํฌํจํ๊ณ ๋ถํธ์คํธ๋ฉ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ด์ ๋ฐฐํฌํ์ ๋ณ๋ ฌ๋ก ๋ค์ด๋ก๋ํฉ๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๋๊ตฐ๊ฐ๋ ๋จผ์ ํด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ์์๋ผ ํ์๊ฐ ์์ต๋๋ค. ๋ฆฌ์กธ๋ฒ ์์ ์ ๊ด๋ จ๋ AFAIK pip ์ ์ง ๊ด๋ฆฌ์๋ ํ์ฌ ํ์ฌ ๋ฆฌ์กธ๋ฒ ์์ฒด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฏ๋ก ์์ผ๋ก ๋์๊ฐ๋ ค๋ฉด ์ธ๋ถ์ ๋์์ด ํ์ํฉ๋๋ค.
๋ด๊ฐ ํ๋ ธ๋ค๋ฉด ์ ์ ํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. ๊ทธ๋ฌ๋ ๋ค์์ ์ฌ์ค์ธ ๊ฒ ๊ฐ์ต๋๋ค.
--dry-run
์ต์
์ด ์์ผ๋ฉด pip์ ๋ฆฌ์กธ๋ฒ๊ฐ ์ค์นํ ํจํค์ง๋ฅผ ์ฝ๊ณ ์์ ์ ์ผ๋ก ์ ์ ์์ต๋๋ค.๋ฐ๋ผ์ pip install
๋ฅผ ์คํํ๋ค๋ ๊ฒ์ ์ฝ๊ณ ์์ ์ ์ธ ๊ฐ์ฌ ๋ฐฉ๋ฒ ์์ด ์ปดํจํฐ์์ ์์์ PyPI ํจํค์ง๋ฅผ ์ ํํ์ฌ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ๋์ํ๋ค๋ ์๋ฏธ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ํด๋น ์ ํ์ ๊ฐ๋ณ ํจํค์ง ์์ฑ์์ ์ข
์์ฑ ์ ํ ๋ฐ ๋ณด์ ๋ฐฉ์์ ๋ฐ๋ผ ์ฌ๊ท์ ์ผ๋ก ๋ฌ๋ผ์ง๋๋ค.
์ค์นํ ํ๋ก์ ํธ์ ๋ฒ์ ์ด ์์ค ๋ฐฐํฌํ(sdist, setup.py ํฌํจ) ๋๋ ํ (๋น๋ ๋ฐฐํฌํ, ๋ฉํ๋ฐ์ดํฐ ํ ์คํธ ํ์ผ ํฌํจ, ์์์ ์ฝ๋ ์คํ ์์ด ํ์ผ ๋ณต์ฌ๋ณธ์ผ๋ก ์ค์น๋จ)๋ง ํฌํจํ๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
--dry-run์ ์ฌ์ฉํ๋๋ผ๋ pip๋ ๋ฐํด๊ฐ ์๋ ํจํค์ง(setuptools์ ๊ฒฝ์ฐ setup.py ์คํ ํฌํจ)์ ๋ํ ๋น๋ ๋ฐฑ์๋๋ฅผ ์คํํด์ผ ํ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๊ตฐ๊ฐ๋ ๋จผ์ ํด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ํ๋ ๋ฐฉ๋ฒ์ ์์๋ผ ํ์๊ฐ ์์ต๋๋ค. ๋ฆฌ์กธ๋ฒ ์์ ์ ๊ด๋ จ๋ AFAIK pip ์ ์ง ๊ด๋ฆฌ์๋ ํ์ฌ ํ์ฌ ๋ฆฌ์กธ๋ฒ ์์ฒด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฏ๋ก ์์ผ๋ก ๋์๊ฐ๋ ค๋ฉด ์ธ๋ถ์ ๋์์ด ํ์ํฉ๋๋ค.