1362๋ ์ ํ ๋ก ์ ์ด์ด virtualenv๊ฐ ์๋ก์ด ์ธ๊ณ(Windows Store ์ค์น, venv ์ธํฐํ๋ฆฌํฐ)๋ฅผ ์ง์ํ ์ ์์ผ๋ ค๋ฉด ๋ฐฉํฅ์ ํฌ๊ฒ ๋ฐ๊ฟ์ผ ํ๋ค๋ ๊ฒ์ด ๋ถ๋ช ํด์ก์ต๋๋ค.
๋ค์์ ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ ์ํ ์ ์ ์์ ๋๋ค. ์ด๊ฒ์ ๊ธฐ์กด ์ธํฐํ์ด์ค ํธํ์ฑ์ ์ ์งํ ๊ณํ์ธ ํ๋ก์ ํธ์ ์ฃผ์ ๋ฆฌํฉํฐ๊ฐ ๋ ๊ฒ์ ๋๋ค.
python2.7
, python3.4
, python3.5
, python3.5
, pypy3
, pypy2
(IronPython๊ณผ Jython์ด ์ธ์ ๊ฐ ์ง์๋๊ธฐ๋ฅผ ํฌ๋งํฉ๋๋ค. ์ง์ํด์ผ ํ๋ ๋ค๋ฅธ ๊ฒ์ด ์์ต๋๊น?)์๋ ํจํค์ง ํ๋ก๋น์ ๋ ๊ธฐ๋ฅ(๊ฐ์ ํ๊ฒฝ ์์ฑ ํ ์ด ํจํค์ง๋ ์ด๋ฏธ ์ค์น๋จ):
pip
, setuptools
๋ฐ wheel
๋ ์๋ ํจํค์ง์
๋๋ค(์ด ํจํค์ง๋ ์คํ๋ผ์ธ ํ ํจํค์ง๋ก๋ ์๋ ์ฃผ์
๋จ)์ธํฐํ์ด์ค :
python -m virtualenv
, virtualenv
)PYTHONPATH=/t/path/to/virtualenv.whl python -m virtualenv
) - ๋ฒ์ฉ ํ ,import virtualenv; virtualenv.create("target")
์ ์ง์ - ํ์ฑํ/๋นํ์ฑํ ์คํฌ๋ฆฝํธ ๋ฐ ํ๋กฌํํธ ํ๊ฒฝ ๋ณ์ - ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์์ ์์ฑํฉ๋๋ค.
3๊ณ์ธต ๊ตฌ์ฑ ์์คํ ์์ ๊ฐ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒฐ์ ๋ฉ๋๋ค.
VIRTUALENV_
์ ๋์ฌ๊ฐ ์๋ ํ๊ฒฝ ๋ณ์,ํ๋ฌ๊ทธ์ธ ์์คํ ์ฌ์ฉ์๊ฐ ๊ณ ์ ํ ์ฌ์ฉ์ ์ ์ ๋ ผ๋ฆฌ๋ฅผ ์ฝ์ ํ๊ณ virtualenv(ํ์ฌ ๋ถํธ์คํธ๋ฉ ๋ ผ๋ฆฌ)์ ํ์ฅ ๋ฒ์ ์ ์์ฑํ ์ ์๋ ํ์ฅ ์ง์ ์ ๋๋ค.
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ venv์ ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ์? virtualenv ํจํค์ง ๊ณํ:
์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ ํ๊ฒฝ์ API๋ก ํ์๋ก ํ๋ ๋ค๋ฅธ ๋ค์ด์คํธ๋ฆผ ๋๊ตฌ(์: tox, pre-commit, pipenv, pipsi, pipx)๊ฐ ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
PyPy ํ์(๊ทธ๋ฆฌ๊ณ ๋์ค๋ ํจ๊ป ๋ถํ๋๋ฆฝ๋๋ค)์ ๊ทํ์ ์๊ฐ์ ๊ณต์ ํ๊ฑฐ๋ ๋์ํ๋ ๊ฒฝ์ฐ ํ๋ฌ์ค ํ๋๋ฅผ ๊ณต์ ํฉ๋๋ค. @pfmoore @dstufft @di @pradyunsg @cjerdonek @ncoghlan @jaraco @techalchemy @uranusjr @pganssle @benoit-pierre @dholth @lkollar @takluyver @zooba
์ผ์ฌ์ฐฌ ์ ์!
ini ๊ตฌ์ฑ ์ง์(์ฌ์ฉ์ ํ์ ์๋ ์ ์ญ ini ๊ตฌ์ฑ)
ํ๋ซํผ ์ ํธ ์์น์์ ๊ตฌ์ฑ์ ๊ฒ์ํ๋ ค๋ฉด appdir(๋๋ ์ด์ ์ ์ฌํ ๊ฒ)์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
appdirs๋ ์ต์ ์ด ๋ ์ ์์ง๋ง, ์ฐ๋ฆฌ๋ ํจํค์ง์ ๋ฌผ๊ฑด์ ๊ณต๊ธํ๋ ์ฌ์ ์ ์์ํด์ผ ํฉ๋๋ค. ๊ณต์ ํ๋ ค๋ฉด ์ด ์ค 70%๊ฐ ์ด๋ฏธ ์๋ฃ๋์์ผ๋ฉฐ ๋ ๋์ ์ฌ๊ตฌ์ฑ์ด ํ์ํฉ๋๋ค.
๊ณต๊ธ์ ์ฒด์ ์์กดํ๋ ๊ฒ์ด ์๋๋ผ ์ ๊ณต๊ธ์ ์ฒด์ ๋๊น? (๋ฒค๋๋ง์ด ์ด๋ ต๋ค๋ ๊ฒ์ด ์๋๋ผ ๋จ์ผ ํ์ผ์ผ ๋ฟ์ ๋๋ค.) IMO, ์ฐ๋ฆฌ๋ (pip๋ฅผ ์ ์ธํ๊ณ ) ํจํค์ง ๋๊ตฌ๊ฐ ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋๋์ด์ผ ํ๋ค๋ ์ฌ์ค์ ์ ๋ง๋ก ๋ฐ์๋ค์ผ ํ์๊ฐ ์์ต๋๋ค. ์ข ์์ฑ์ ๊ฐ๋ ๊ฒ์ด PyPA ์ฑ์ด ํผํ ์ ์์ ๋งํผ ์ถฉ๋ถํ ์ด๋ ต๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ์ฐ๋ฆฌ๊ฐ ์ผ๋ง๋ ์ํ๊ณ ์๋์ง์ ๋ํด ๋ฌด์์ ๋งํฉ๋๊น?
(์ฌ๊ธฐ์ virtualenv์ ๋ํด ํฐ ์์ ์ ์ ์ํ์ง ์์ ์ฃ์กํฉ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด "PyPI ์ข ์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ์ ํฐ ๋ฌธ์ ๊ฐ ์๋๋๋ค"๋ผ๊ณ ๋งํ๋ ๊ฒ์ ๋ณด์๊ณ , ๊ทธ๋ฌ๋ฉด ๋ด๊ฐ ๋ฒค๋๋ง ์์ ์ ํ๋ PyPA ๋๊ตฌ๊ฐ ๊ถ๊ธํด์ง๋๋ค...) .
ํฌ๋ก์ค ์ธํฐํ๋ฆฌํฐ ๊ธฐ๋ฅ์ ๊ณต๊ธํ์ง ์๊ณ ๋ ์ด๋ ค์ธ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด virtualenv๊ฐ ์ค์น๋์ง ์์ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ํ ๊ฐ์ ํ๊ฒฝ ๋ง๋ค๊ธฐ.
PYTHONPATH=/t/๊ฒฝ๋ก/to/virtualenv.whl ํ์ด์ฌ -m ๊ฐ์ ํ๊ฒฝ
์ด, ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ virtualenv์ ์ถ๊ฐ ํจํค์ง์ ์์กดํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. zipapp์ ์ ๊ณตํ ์์ ์ด๋ฏ๋ก ์ด๋ฅผ ํตํด ์ด๋ค ์ฌ์ฉ ์ฌ๋ก๊ฐ ๊ฐ๋ฅํฉ๋๊น?
@gaborbernat -p
์ต์
์ ๋ง์ํ์๋ ๊ฑด๊ฐ์? ๊ทธ๋ด ๊ฒ ๊ฐ์์. zipapps๊ฐ ๋์์ด ๋๋๋ก ์๋๋ ์ํฉ๊ณผ ์ ํํ ๊ฐ์ ์ํฉ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์๋ฌด๋ ์ ๋๋ก ์๋ํ๋๋ก ํ๋ ์ธ๋ถ ์ฌํญ์ ๊ณผ๊ฐํ ํ์ง ์์์ต๋๋ค.
@pradyunsg์์ :
์ด, ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ virtualenv์ ์ถ๊ฐ ํจํค์ง์ ์์กดํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค
์ฌ์ค, @gaborbernat ๋ง๋๋ก -p
์ต์
์ ์๋ง ๊ฒ์ ์๋ฏธํ๋ค :-( ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๊ฐ "์ ๋ฐํด๊ฐ ํ์ํ ์ด์ ๋ฅผ ๊ถ๊ธํด์ PYTHONPATH
"์ต์
๋ฟ๋ง ์๋๋ผ zipapp์ - ํนํ ๋ฐํด ์ฃผ์ด์ง on PYTHONPATH
๋ ์ผ๋ฐ์ ์ผ๋ก ์ง์๋์ง ์์ต๋๋ค(์ผ๋ฐ์ ์ธ pip ๋ถํธ์คํธ๋ํ ์ด์ ๋๋ฌธ์ virtualenv ๋ด์์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. pip๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ๋ํ ์์ธ์
๋๋ค ;-))
์ง์ ์ ์ ๊ธฐ๊ฐ 2๋
ํ ...
์ฌ๊ธฐ์ ๋ด ๊ฑฑ์ ์ ์ด๊ฒ์ ๋คํธ์ํฌ ํจ๊ณผ๋ก ์ธํด ์ต์ ๋ฒ์ ์ Python ์ฑํ์ด ๋๋ ค์ง๊ณ ์ง์๋๋ Python ์์ ์กฐํฉ ํญ๋ฐ์ด ๋ฐ์ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. CPython์ 3.9์ ๋ค๋ฅธ ๋ฆด๋ฆฌ์ค ์ฃผ๊ธฐ์ ๋ํด ๋ ผ์ํ๊ณ ์์ผ๋ฏ๋ก 2๋ ์ ์ผ๋ถ ๋ฆด๋ฆฌ์ค๊ฐ ํต์ฌ ๊ฐ๋ฐ์์ ๊ฒ๋ณด๋ค ๋ ๊ธธ ์๋ ์์ต๋๋ค.
์ฆ, ๋๋ ์ด๊ฒ์ ์ฐจ๋จํ๊ณ ์ถ์ง ์์ง๋ง ๋๋ถ๋ถ์ ๋ด๊ฐ ์ด๊ฒ์ ํ๊ณ ์ถ์ง ์๋ค๋ ๊ฒ์ ๋ถ๋ช ํ ํ๋ ๊ฒ์ ๋๋ค.
(์ธ์ ๊ฐ IronPython๊ณผ Jython์ ๊ธฐ๋ํฉ๋๋ค. ์ง์ํด์ผ ํ ๋ค๋ฅธ ๊ฒ์ด ์์ต๋๊น?)
๋ถ๋ช ํ. @gaborbernat์ ์๋ง๋ ๋ด๊ฐ ์ด๋ ๊ฒ ๋งํ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์์ ๊ฒ์ ๋๋ค. ์ด๊ฒ๋ค์ด ์์ผ๋ฉด ์ข๊ฒ ์ง๋ง ๊ตฌํ์ ๋ ์ต์ํ ์ฌ๋๋ค์ด ์ด๊ฒ์ ํ๊ธฐ์ ๊ฐ์ฅ ์ข์ ์์น์ ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ์ต์ํ ์ฅ๊ธฐ์ ์ธ ์ง์ ์ธก๋ฉด์์, ๊ทธ๋ฆฌ๊ณ ์ด์์ ์ผ๋ก๋ ์ฒ์๋ถํฐ ์ ์ง์๋๋๋ก ํ๋ ์์ (CI, ํ ์คํธ ๋ฑ)์ ๋๋ค.
์ฒซ์งธ, ini ๊ตฌ์ฑ ์ง์(์ฌ์ฉ์ ํ์ ์๋ ์ ์ญ ini ๊ตฌ์ฑ),
์ ๋ ํธ๊ฒฌ์ด ์์ต๋๋ค. ์ ๋ ์ด๊ฒ์ด ๋์ TOML์ด ๋๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. :)
(์ด๋๊ฐ์ ๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ ์์ง ์ด๊ฒ์ ์์ ํ ์ฒ๋ฆฌํ์ง ๋ชปํ์ต๋๋ค -- ๊ทธ๋ฌ๋ ์ด๊ฒ์ ํ๋ฅญํ ์ ์ฒด ๋ชฉํ์ฒ๋ผ ๋ณด์ ๋๋ค!)
์ฐ๋ฆฌ๋ ์ด๋ฏธ ๊ต์ฐจ ์ธํฐํ๋ฆฌํฐ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ์ถ๊ฐ ํจํค์ง์ ์ค์ ๋ก ์์กดํ ์ ์์ผ๋ฏ๋ก ์ด๊ฒ์ ์ฃผ์ ๋จ์ ์ผ๋ก ์๊ฐํ์ง ์์ผ๋ฉฐ ๊ฐ์ ํ๊ฒฝ์ ์คํํ๋ ๊ฐ๋จํ ์ค์น/์ข ์์ฑ ์๋ ๋ฐฉ๋ฒ์ ์ํฉ๋๋ค(์ฌ๋๋ค์ด ํ์ํ ๋ ํ์ ๋ ธ๋ ํจํค์ง์์ ํธ์ถ). ๋น์ฉ์ด ๋ง์ด ๋ค์ง ์๋๋ค๋ ์ ์ ๊ฐ์ํ ๋ zipapp ์ธ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ ๋ ดํด ๋ณด์ ๋๋ค.
๊ธฐ๋ณธ ์ ๊ณต venv ์ ํธ: ๋์ ํ์ด์ฌ์ venv๊ฐ ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ๊ฒฝ์ ์์ฑํฉ๋๋ค(๊ทธ๋ฐ ๋ค์ ์ฐ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ๋ค๋ฅธ ๋ณด์ฅ์ ์ฉ์ดํ๊ฒ ํ๊ธฐ ์ํด ์ด์ ๋ํ ํ์ ์์ ์ ์ํํฉ๋๋ค).
์ด์ ๋ํ ๊ทผ๊ฑฐ๋ฅผ ์ดํดํ๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๊ฒ์ ์ ์ง ๋ณด์ ํ ๊ฒ์ด๋ค ๊ฒ ๊ฐ๋ค virtualenv
์ด๋ ต๊ฒํ๊ณ ์ดํดํ๋ ์ต์ข
์ฌ์ฉ์์ ํ๋์ ์ด๋ ต๊ฒ ๋ง๋ค ๊ฒ์
๋๋ค. setuptools
๋ ๊ณ์ํด์ ์์ญ์ด ํจ์น๋ฅผ ์ ์ฉํ๊ธฐ ๋ณด๋ค๋ distutils
๋ฅผ ํก์ํ๋ ค๊ณ ํ์ฌ ์ด๋ฏธ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์์ต๋๋ค.
@pganssle ๋ฒ์๊ฐ ๋ค๋ฅด๊ณ ๋ฌธ์ ๊ณต๊ฐ๋ ๋ค๋ฆ
๋๋ค. virtualenv
๋ฌธ์ ๋ ์์คํ
์ด ์ข
์ข
์์คํ
ํจํค์ง์ ์ถ๊ฐ ์ ์ฝ์ ๋๋ฏ๋ก ์ด๋ฅผ ์ค์ํ๊ธฐ ์ํด ๋ด์ฅ๋ venv๋ฅผ ์์ญ์ด ํจ์นํ๋ค๋ ๊ฒ์
๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ ๋ณต์ ํ๋ ๊ฒ์ ์ด๋ ค์ธ ๊ฒ์
๋๋ค(์: #1362 ์ฐธ์กฐ).
FWIW ๊ฒฉ๋ฆฌ๋ฅผ ์ํด ๋ด์ฅ๋ venv
ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ์๊ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ค์ ์ธํฐํ๋ฆฌํฐ์ ๋ด์ฅ๋์ด ์์ผ๋ฏ๋ก(stdlib ๋ชจ๋์ธ distutils๊ฐ ์๋) virtualenv
๋ณด๋ค ํจ์ฌ ๊นจ๋ํ ์์
์ ์ํํ ์ ์์ต๋๋ค.
Virtualenv๋ ๋ํ ์๋ฌด ๊ฒ๋ ์์ญ์ด ํจ์นํ ํ์๊ฐ ์์ผ๋ฉฐ ๊ณต๊ฐ API๋ง ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
FWIW ๋ด ์ค๋๋ ์ฌ์์ฑ virtualenv ๋ถ๊ธฐ๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฏธ ์ด๋ฌํ ์์ ์ ๋ง์ด ์ํํ์ต๋๋ค.
๋๋ ์๋ง๋ ํ๋ฌ๊ทธ์ธ ์์คํ ์ด virtualenv์ ๋งค์ฐ ์ ์ฉํ์ง ์๋ค๊ณ ์ ์ํ ๊ฒ์ ๋๋ค. ๊ธฐ๊ปํด์ผ ํ๋์ ํํฌ, ํฌ์คํธ ์์ฑ ๋จ๊ณ๊ฐ ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ ์ฌ์ง์ด ์ค์นํ ํญ๋ชฉ ๋ชฉ๋ก๋ง ์์ผ๋ฉด ๋ฒ์ด๋ ์ ์์ต๋๋ค.
๋ํ "์์ฐ์ค๋ฝ๊ฒ" ๊ณ์ํด์ zipapp์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ zipapp ์์ฒด ๋ด๋ถ์์ ๊ณต๊ธ์ ์ฒด์ ์ ๊ณตํด์ผ ํฉ๋๋ค. ๋๋ ๋์ ํ์ด์ฌ ์ต์ ์์ ์ฌ์คํ์์ ๋ฉ์ด์ง๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๊ฒ์ ๋์ ์ผ์ด๋ฉฐ ํจ์ฌ ๋ ๊นจ๋ํ๊ฒ ํ ์ ์์ต๋๋ค.
PYTHONPATH=/t/๊ฒฝ๋ก/to/virtualenv.whl ํ์ด์ฌ -m ๊ฐ์ ํ๊ฒฝ
OTOH, ์ฐ๋ฆฌ๋ ์๋ง๋ ์ด๊ฒ์ ํด์๋ ์ ๋ฉ๋๋ค -- https://www.python.org/dev/peps/pep-0427/#is -it-possible-to-import-python-code-directly-from- ํ ํ์ผ
@pradyunsg ๊ทธ๋์ ๊ฒฝ๋ก์ ๋ฐํด๋ฅผ ๋์ง ์๊ณ ํ์ ๋ถํธ์คํธ๋ฉํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
pip ๋ถํธ์คํธ๋ฉ์ ์๋ง๋ ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด virtualenv๊ฐ ์ง๊ธ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค 1 . ๊ทธ๋ฌ๋ virtualenv ์์ฒด๋ฅผ ์คํํ๋ ์๋จ์ด ์๋๋ผ pip ์๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
1 ํ์ง๋ง ๋ณต์กํ ๊ธฐ๋ฅ์ ํผํ๊ณ ์ถ์ต๋๋ค. PATH์์ ํ ์ ์ฌ์ฉํ์ฌ ํด๋น ํ ์์ pip๋ฅผ ์ค์นํ๋ ๊ฒ์ ๊ฑฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ์ง๋ง ๋ด๊ฐ ์๊ฐํ๋ certifi ์ค์ ํ์ผ๋ก ์๋ฒ ๋๋ ์ธ์ฆ์ ๋ฒ๋ค์ด ํ์ํฉ๋๋ค (๊ทธ๋ฌ๋ ๋๋ ๋์๊ฒ ๋ฌธ์ ๋ฅผ ์ผ์ผํจ ์ ์ด ์์ด์์ด ์๋ชป ๋ ์ ์์ง๋ง ๋๋ ์๊ณ ์๋ค, ์ก์ธ์ค์ ๊ฐ์ ํ ์ ์ฌ์ฉํ์ฌ ์ธํฐ๋ท์, ์๋ฅผ ๋ค์ด, ๊ฒฝ์ฐ์ ๋ฌธ์ ๊ฐ์์ ์ ์์ต๋๋ค get-pip.py
๋ ์ด ์ง์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ช
์์ ์ผ๋ก ํ ์์ ์ธ์ฆ์๋ฅผ ์ถ์ถํฉ๋๋ค.
pip๋ฅผ zipapp
๋ก ๋ฐฐ์กํ์ง ์๋ ์ด์ ๊ฐ ์์ต๋๊น? ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ด๊ฐ ์ดํดํ๋ ๋๋ก ์ด๋ฌํ ํ์์ฑ์ ํผํ ์ ์์ผ๋ฉฐ zipapp์ python 2.7์์ ์ง์๋ฉ๋๋ค. ๐ค
@gaborbernat ํด๋ดค์ด? ์๋ํฉ๋๊น? ๊ทํ๊ฐ ์ค๋ช ํ ์ ๊ทผ ๋ฐฉ์์ด Windows์์ ์๋ํ๋ ๊ฒฝ์ฐ ์ด๊ธฐ ๋ฌธ์ ๋ ์์ง๋ง @uranusjr ์ ํผ๋๋ฐฑ์ @dstuff ์
pip๋ฅผ zipapp์ผ๋ก ๋ฐฐ์กํ์ง ์๋ ์ด์ ๊ฐ ์์ต๋๊น?
์ด๋ค ๊ฒฝ์ฐ์๋ ์์์ ๋งํ๋ฏ์ด pip๊ฐ zip ํ์ผ(๋๋ ํ , ๋์ผํ ๊ฒ)์์ ์ง์ ์คํ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์๊ฐ์ 99%(๊ฒฝ๊ณ - ๊ตฌ์ฑ ๋ฒํธ)๋ ์๋ํ์ง๋ง ๋๋ก๋ ์ธ์ฆ์ ๋ฒ๋ค์ด ์ค์ ํ์ผ์ด์ด์ผ ํ๋ค๋ ์ฌ์ค์ด ์ค์ํฉ๋๋ค.
shiv๊ฐ zipapp์ ์คํํ๊ธฐ ์ ์ ์์ถ์ ํ๊ธฐ ๋๋ฌธ์ pip๋ฅผ shiv ๋ก ๋ฌถ๋ ๊ฒ์ด ์๋ง๋ ์ ์๋ํ ๊ฒ์ ๋๋ค. ๋ด๊ฐ ์๋ ํ ์๋ฌด๋ ๊ทธ๊ฒ์ ์๋ํ์ง ์์์ต๋๋ค.
ํ์์ ๊ฐ์ด ๋ฐ์ํ์ง ์์ ์ฃผ์ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฒฝ๋ก์ ๋ฐํด๋ฅผ ๋์ง ์๊ณ pip๋ฅผ ๋ถํธ์คํธ๋ฉํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ฌ๊ธฐ์์๋ ํ์ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. virtualenv๋ pip ํ ์ ์ฌ์ฉํ์ฌ IIRC ์์ฒด์์ ์ค์นํ๋ฏ๋ก ์ ๋๋ก ์๋ํด์ผ ํฉ๋๋ค. @pfmoore๊ฐ ๋งํ๋ฏ์ด get-pip.py๊ฐ ํ๋ ์ ์ผํ "์ถ๊ฐ" ์์ ์ ์ธ์ฆ์์ ์์ถ์ ํ๊ณ ์ธ์ฆ์์ ๋ํ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. virtualenv์ ์ฌ์ฉ ์ฌ๋ก๋ ๋คํธ์ํฌ์ ๋๋ฌํ์ง ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์๋ก์ด ์์ ์ ์ํํ ํ์๊ฐ ์์ต๋๋ค.
ํ์ฌ ์ ๊ทผ ๋ฐฉ์์ ์ ์๋ํ๋ฉฐ ๋ ํฐ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ํ๊ธธ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๋ค๋ฅธ IMO๋ณด๋ค ํจ์ฌ ๋ง์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ ์ ์์ง๋ง ํด๊ฒฐํด์ผ ํ ๋ ์ํฅ๋ ฅ ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. :)
๋๋ pip๋ฅผ zip ์ฑ์ผ๋ก ๋น๋ํ PR์ ํ ๋ฒ ๊ฐ์ง๊ณ ์์์ง๋ง ์๋ํ์ง๋ง IIRC์์๋ pip๊ฐ ์์ ํ ์๋ํ๋๋ก ๋ณ๊ฒฝํด์ผ ํ์ต๋๋ค.
pip๊ฐ PEP 517์ ๋ํ ์์ฒด ํ์ ํ๋ก์ธ์ค๋ก ์์ ์ ํธ์ถํ๊ธฐ ๋๋ฌธ์ ์ง๊ธ์ ์ฝ๊ฐ ๋ณต์กํ ์ ์์ต๋๋ค. ํ์คํ์ง ์์ง๋ง ํ์ํ ๊ฐ์น๊ฐ ์๋ ๊ฒ์ ๋ถ๋ช ํฉ๋๋ค.
์ด ์์ ์์ shiv(๋๋ ๋ค๋ฅธ ์๋ ์์ถ ํ๊ธฐ ์ต์ )๋ pip๋ฅผ zip ์คํ ๊ฐ๋ฅ์ผ๋ก ์์ ํ๋ ๊ฒ๋ณด๋ค pip์ ๋ ์ ํฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ด๊ฒ์ด ํ์์ ์์ ํน๋ณํ ์ค์ํ ๊ฒ์ ์๋๋ผ๊ณ ์๊ฐํ๋ค. surepip์ ์ด๋ฏธ wheel-on-path ๊ฒฝ๋ก๋ก ์ด๋ํฉ๋๋ค. ๊ทธ๋ฅ ๋๊ฐ์ด ํ๋ฉด ์ ๋ฉ๋๋ค. ๋ ํฐ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋ชจ๋ ํ๊ธด ํ ๋์ฒด pip ๋ถํธ์คํธ๋ํ์ ํ์ํ ์ ์์ผ๋ฉฐ ์ ์ฌ์ ์ผ๋ก stdlib์ ๋ค์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.
๋ ํฐ ๋ฌผ๊ณ ๊ธฐ๋ฅผ ๋ชจ๋ ํ๊ธด ํ ๋์ฒด ํ ๋ถํธ์คํธ๋ฉ์ ํ์ํ ์ ์์ต๋๋ค.
[์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ฐ๋ฅด๊ณ ์๋ ๊ณํ]์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ;)]
ํผ๋๋ฐฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋งํฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค . https://github.com/gaborbernat/virtualenv/tree/rewrite/src/virtualenv ์์ ์ด๊ธฐ ์์
์ ์์ํ์ต๋๋ค 20.0.0
์ถ์ํ ๊ณํ์
๋๋ค.
์กด์ฌํ๋ ๊ฒฝ์ฐ venv๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ +1์ ๋๋ค. ๊ทธ๋ฌ๋ฉด PyPy์ ์ฌ์ฉ ์ฌ๋ก๊ฐ ๋ ๊ฐ๋จํด์ง๋๋ค.
๊ทธ๋์ ์ฌ์์ฑ์ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ๋ณด๊ณ ํผ๋๋ฐฑ์ ์ฃผ๋ ๊ฒ์ด ํธ์ํ๋ค๊ณ ๋๋ผ๋ ์ํ์ ์ด๋ฅด๋ ์ต๋๋ค. ์ด ์ผ์ ๋์์ค ์์ ์๊ฐ์ด ์์ผ๋ฉด ์ ์๊ฒ ์ฐ๋ฝํ์ญ์์ค. ์๋ง๊น์ง ์ถ์ํ ๊ณํ์ ๋๋ค ๐ค ์ฐธ๊ณ https://github.com/pypa/virtualenv/milestone/7 ์์ง ๊ตฌํํด์ผ ํ์ง๋ง ํต์ฌ ์์ด๋์ด๋ ๊ฑฐ๊ธฐ์ ์์ต๋๋ค.
์ถ์ . https://github.com/pypa/virtualenv/pull/1481/ ์์ ํผ๋๋ฐฑ PR์ ๋ง๋ค์์ต๋๋ค.
๊ธฐ๋ฅ ์์ฒญ: ์ฌ์ฉ์ ์ง์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ์ํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด env.txt
ํ์ผ์ ํ์ค ํ์์ผ๋ก venv bin ๋๋ ํ ๋ฆฌ์ ๋ฐฐ์นํฉ๋๋ค.
VARNAME=value
OTHERVAR=othervalue
๋ด๊ฐ ๋น์ ์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์์? ์ด๋ฌํ ํ๊ฒฝ ๋ณ์๋ ์ธ์ ์ด๋ป๊ฒ ์ฌ์ฉ, ์ค์ ๋ฉ๋๊น?
ํธ์งํ๋ค. NM. https://github.com/pypa/virtualenv/issues/1124์์ ํ์ฅํ ๊ฒ์ ๋ณด์์ต๋๋ค
์์ ์ ๋ฐ์ดํธ; ๋๋ ์ฌ์ ํ ์ฝ๊ฐ์ ์ฌ๋์ด ํ์ํ ๋ ๊ฐ์ง๋ฅผ ์ ์ธํ๊ณ ๋๋ถ๋ถ์ ์ฐจ๋จ ๋ฌธ์ ๋ฅผ ๋ซ์ ์ ์์์ต๋๋ค. ํ ์คํธ์๋ ํค๋ ํฌํจ + ์ฑ ๋ฐ์ดํฐ์ ์ผ๋ถ ์ ๊ธ์ด ์ ์ฉ๋ python ์ง๋ฌธ ํธ์ถ ์บ์ฑ์ด ํฌํจ๋์ด ์์ผ๋ฏ๋ก ๊ฐ์ ํ๊ฒฝ์ ๋ณ๋ ฌ๋ก(๋ค๋ฅธ ์์น์) ์์ฑํ ์ ์์ต๋๋ค. ํ์ฌ ์๋์์๋ ๋ฉฐ์น ๋ฆ์ ์ ์์ง๋ง... ํ์คํ 2์ 7์ผ๊น์ง ๋๊ฐ์ผ ํฉ๋๋ค.
์ถ์ ์ธก๋ฉด์์ ์ฐ๋ฆฌ์ ๊ณํ์ ๋ฌด์์ ๋๊น? ๋ฉ์ธ ๋ฆด๋ฆฌ์ค ์ด์ ์ ๋ฒ ํ ๋ฆด๋ฆฌ์ค๊ฐ ์์ต๋๊น?
๊ทธ๋, ์์์ผ์ ๋ญ๊ฐ๋ฅผ ๋ด๋ณด๋ด๊ณ ์ถ์ด... ๊ทธ๋ฆฌ๊ณ ํผ๋๋ฐฑ, ์์ ์ ์ํด ์ ์ ์ ์ผ๋ก ์ผ์ฃผ์ผ์ ๋น์ฐ๊ณ ... ๊ทธ๋ฐ ๋ค์ ๋ง์คํฐ๋ฅผ ๋ค์ ์์ฑํ๊ณ ๋ฆด๋ฆฌ์ค๋ก ๋ฐ๊ฟ๋๋ค.
์ผ์ฃผ์ผ์ด๋ฉด ์ถฉ๋ถํ ๊ฒ์ด๋ผ๊ณ 100% ํ์ ํ ์๋ ์์ผ๋ฉฐ ๋ฒ ํ๋ฅผ ์ฌ์ฉํด ๋ณด๊ธฐ๋ฅผ ์ํ๋ ์ฌ๋๋ค์ด ์ฌ๋ฌ ์ฑ๋์ ํตํด ํ์คํ ์ํตํด์ผ ํฉ๋๋ค.
๊ทธ๊ณณ์ ํค์๋๋ ์ ์ ์ ์ผ๋ก . ๋ด๊ฐ ๋ค์ธ ๋ ธ๋ ฅ์ ์์ ๊ฐ์ํ ๋ ๋๋ ์ฌ๊ธฐ์์ ๋๊ด์ ์ด๋ค. ๋๋ ํฐ ๋ฌธ์ ๋ฅผ ๊ธฐ๋ํ์ง ์์ง๋ง ๐คทโโ
๋ฒ ํ๊ฐ ๋์ค๋ฉด์ ์ด ๋ฌธ์ ๊ฐ ๋ชฉ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ ์ด๋ง ๋ง์น๊ฒ ์ต๋๋ค. ์ ์ฉ ๋ฌธ์ ์ ๋ํด ๋ ์ง์ค์ ์ผ๋ก ๋ ผ์ํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ทธ๋์ ์ฌ์์ฑ์ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ๋ณด๊ณ ํผ๋๋ฐฑ์ ์ฃผ๋ ๊ฒ์ด ํธ์ํ๋ค๊ณ ๋๋ผ๋ ์ํ์ ์ด๋ฅด๋ ์ต๋๋ค. ์ด ์ผ์ ๋์์ค ์์ ์๊ฐ์ด ์์ผ๋ฉด ์ ์๊ฒ ์ฐ๋ฝํ์ญ์์ค. ์๋ง๊น์ง ์ถ์ํ ๊ณํ์ ๋๋ค ๐ค ์ฐธ๊ณ https://github.com/pypa/virtualenv/milestone/7 ์์ง ๊ตฌํํด์ผ ํ์ง๋ง ํต์ฌ ์์ด๋์ด๋ ๊ฑฐ๊ธฐ์ ์์ต๋๋ค.
์ถ์ . https://github.com/pypa/virtualenv/pull/1481/ ์์ ํผ๋๋ฐฑ PR์ ๋ง๋ค์์ต๋๋ค.