๋ด๊ฐ ์ฌ์ฉํ์ฌ ์ ํธ Pipfile
ํตํด requirements.txt
. ๊ฐ์ ํ๊ฒฝ์ ์ค์ ํ๋ ค๋ฉด ์ด ํ์ผ ํ์์ ์ง์ํ์ญ์์ค.
@Stibbons๋ ๊ฐ์ฌํฉ๋๋ค. ๋ฌผ๋ก ์ด์ ๋ํ PR์ ์ ์ถํ๊ณ ์ถ๋ค๋ฉด ๊ธฐ์ฌ๋ฅผ ์ธ์ ๋ ํ์ํฉ๋๋ค.
๋๋ pipenv์ ๋ํ ์ง์์ผ๋ก ๊ฒ์์ ์์ํ๋๋ฐ pip install์ ๋ํ ํธ์ถ์ ๋์ฒดํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. readthedocs.yml ํ์ผ์ ํตํด ์ต์ ์ ์ ๊ณตํ๊ณ ์ถ์ ๊ฒ์ด๋ฏ๋ก ๋ค์์ด ํ์ํฉ๋๋ค.
doc_builder/python_environments.py
์์ pipenv์ ๋ํ ์กฐ๊ฑด๋ถ ํธ์ถ์, ๊ทธ๊ฒ์ pip(์ค์ ๋ก๋ ๋ํผ)์ ์ง์ ์ ์ธ ๋์ฒด์ด๋ฉฐ pipenv install thispackage
ํ๊ณ virtualenv์ ํจํค์ง๋ฅผ ์ค์นํ๊ณ (pew ์ฌ์ฉ) ๊ทธ์ ๋ฐ๋ผ Pipfile์ ์์ ํฉ๋๋ค. ReadTheDocs์ ๊ฒฝ์ฐ pipenv install --dev
ํ๊ณ lib๊ฐ ํ๊ฒฝ์ ์ค์น๋์๋์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋๋ ๋ณดํต -e .
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ์ค์ธ ๋ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ virtualenv์ ์ฃผ์
ํ์ง๋ง ๋ชจ๋ ์ฌ๋์ด ๊ทธ๋ ๊ฒ ํ๋์ง ํ์คํ์ง ์์ต๋๋ค.
์ค์ ๋ก pipenv install --dev --ignore-pipfile
ํฉ๋๋ค. --ignore-pipfile
์์ผ๋ฉด pipenv
๋ Pipfile
์ ํจํค์ง๋ฅผ ์
๊ทธ๋ ์ด๋ํ๋ ค๊ณ ํ ๋ฟ ์ค์ ๋ก๋ ๊ฒฐ์ ์ ๋น๋๋ฅผ ์ํํ์ง ์์ต๋๋ค. https://github.com/kennethreitz/pipenv/issues/954#issuecomment -338777638์ ์ฐธ์กฐ
์ฐธ์ผ๋ก
๋๋ ์ด๋ฏธ ๋ค๋ฅธ ํ๋ก์ ํธ์ pipenv๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ด๋ ์ ๋ ์ต์ํฉ๋๋ค. ๋๋ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์ค์ ๋ก ๊ธฐ์กด virtualenvs๋ฅผ ํ์ฉํ๊ธฐ ์ํด --system
๋ ์ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ์ด๋ฅผ ์ํ ํน๋ณํ ์ ์ฅ์๊ฐ ์์ผ๋ฏ๋ก venv๊ฐ ๋น๋ ๊ฐ์ ์ ์ง๋ฉ๋๋ค.
@tuukkamustonen ์ด๊ฒ์ ์ฝ๊ฐ ํผ๋
๊ฐ์ฅ ์ ํํ ๊ฒ์ pipfile.lock์ ํ์ธํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ ๋ค๋ฉด --ignore-pipfile
, ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ง ์์ต๋๊น?
์ด๋ฌํ ์ต์
์ค ์ผ๋ถ๋ readthedocs.yml์ ํตํด ์ถ๊ฐ/ํ์ฉ๋ ์ฌ์ ์๊ฐ ๋ ์ ์์ผ๋ฉฐ --dev
๋ ๊ทธ ์ค ํ๋์
๋๋ค.
์ ๊ฒฝ์ฐ a๋ requirements.txt
, ์ฐ๋ฆฌ๋ ๊ทธ๋ฅ ์ฌ์ฉํ ์ ์์ด์ผํฉ๋๋ค pipenv install
๋์ pip install
์์ชฝ ๋ค ๊ด์ฐฎ์ต๋๋ค. requirements.txt๋ฅผ ๊ณ ์ ํ๋ฉด(์: pip-tools ์ฌ์ฉ) ์ ๊ธ ํ์ผ์ ์ฌ์ฉํ ๋์ฒ๋ผ ์๋ํฉ๋๋ค.
๋ฒ์ ๋๋ ๋ฒ์ ์์ด ๋ฒ์ ๋ง ์ค๋ช
ํ๋ฉด Pipfile์ฒ๋ผ ์๋ํฉ๋๋ค.
์ ๊ธ ํ์ผ์ ์์คํ
์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ ๋ง์ปค(์: ยซ python_version < 3 ยป)๊ฐ ์์ง๋ง ๋ ๋ค ์๋ํด์ผ ํฉ๋๋ค.
๋๋ 'pipenv install โdev โsystem'์ ์ฌ์ฉํ ๊ฒ์
๋๋ค. ๊ทธ๊ฒ์ 'pip install -r requirements.txt -r requirements-dev.txt'์ ๊ฐ์ต๋๋ค.
@agjohnson ์ ๋ pipenv install
์คํํ๋ฉด Pipfile.lock
๋ฐ๋ฅด์ง ์๊ณ ๋์ Pipfile
๋ฅผ ์ดํด๋ณด๊ณ ์ดํดํฉ๋๋ค. ์ ํํ ๋ฒ์ ์ผ๋ก ๊ณ ์ ํ์ง ์์ ๋ชจ๋ ํจํค์ง๋ฅผ ์
๊ทธ๋ ์ด๋ํ ๋ค์ _update_ Pipfile.lock
. ๋ฐ๋ผ์ pip-compile
๋ฐ pip-sync
(pip-tools ํจํค์ง์์)๊ฐ ๊ฒฐํฉ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์กฐ๊ธ ํผ๋์ค๋ฝ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ์ฅ ์ ํํ ๊ฒ์ pipfile.lock์ ํ์ธํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด --ignore-pipfile, ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ง ์์ต๋๊น?
์, ๊ฒฐ์ ์ ๋น๋๋ฅผ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ ์ ๊ธ ํ์ผ์ ๋ฐ๋ผ์ผ ํ๊ณ --ignore-pipfile
์ฃผ์ด์ ธ์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ์๋ฏธ๊ฐ ์์์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ pipenv update
pip-sync
์ ๊ฐ์ ํจํค์ง๋ฅผ ์ ๊ฑฐ/์ค์นํ์ง๋ง --ignore-pipfile
์ต์
์ด ์์ต๋๋ค... ํ .
์ ๊ธ ํ์ผ์ ์์คํ ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฉฐ ๋ง์ปค(์: ยซ python_version < 3 ยป)๊ฐ ์์ง๋ง ๋ ๋ค ์๋ํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ ์ข์ ์๋ฆผ์ ๋๋ค. pip-tools ๋๋ pipenv(์๋์์ pip-tools ์ฌ์ฉ)๋ "๋ฒ์ฉ" ์ ๊ธ ํ์ผ์ ์ง์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Windows์ python 3.6์์ ์ ๊ธ ํ์ผ์ ๋ง๋ ๋ค์ Linux์ 3.4์์ ์คํํ๋ฉด ์ ๊ธ ํ์ผ์ด 3.6/Windows ํ๊ฒฝ์ ์์ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. https://github.com/kennethreitz/pipenv/issues/857 ๋ฐ https://github.com/jazzband/pip-tools/issues/563์ ์ฐธ์กฐํ์ธ์.
pipfile.lock์ ์ฒดํฌ์ธํ์ง ์๋ ํ๋ก์ ํธ์์ pipfile์ ๋ฌด์ํ๋ค๋ ๊ฒ์ ๋ฌด์์ ์๋ฏธํฉ๋๊น?
์ด๋ฌํ ํ๋ก์ ํธ๋ ๊ฒฐ์ ์ ๋น๋๋ฅผ ์ป์ง ๋ชปํฉ๋๋ค. ๊ด์ฐฎ์ง๋ง ๋ฌธ์ํํด์ผ ํฉ๋๋ค. pipenv์ ์ฃผ์ ์ด์ ์ค ํ๋๋ ๊ฒฐ์ ๋ก ์ ๋น๋๋ฅผ ์ป๋ ๊ฒ์
๋๋ค(๋จ์ํ requirements.txt
๋ณด๋ค ๊ฐ์ ). ๊ทธ๋ฌ๋ ๋งํ๋ฏ์ด ์๊ตฌ ์ฌํญ์ ์๋๋๋ค. ์ฌ์ฉ์๋ ๊ทธ๊ฒ์ ์ธ์ ํด์ผ ํฉ๋๋ค.
requirements.txt์ ๊ฒฝ์ฐ pip install ๋์ pipenv install์ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
pipenv
requirements.txt ์คํ์ผ ํ์ผ์ ์ฝ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. Pipfile
๊ฐ ์๋ ๊ฒฝ์ฐ ์ด์ ํ๋์ ์์กดํ์ง ์๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
์ด๊ฒ์ ์ข์ ์๋ฆผ์ ๋๋ค. pip-tools ๋๋ pipenv(์๋์์ pip-tools ์ฌ์ฉ)๋ "๋ฒ์ฉ" ์ ๊ธ ํ์ผ์ ์ง์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ Windows์ python 3.6์์ ์ ๊ธ ํ์ผ์ ๋ง๋ ๋ค์ Linux์ 3.4์์ ์คํํ๋ฉด ์ ๊ธ ํ์ผ์ด 3.6/Windows ํ๊ฒฝ์ ์์ํ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. kennethreitz/pipenv#857 ๋ฐ jazzband/pip-tools#563์ ์ฐธ์กฐํ์ญ์์ค.
์ ์, Pipfile์ ๋ฌด์ํ๊ณ Pipfile.lock์ ์์กดํ๋ ๊ฒ์ด ์ต์ ์ด์ด์ผ ํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ ์์ต๋๋ค. ๋ฒ์ฉ ์ ๊ธ ํ์ผ์ด ์์ผ๋ฉด ํ๊ฒฝ์ด ๋น๋ ์ด๋ฏธ์ง์ ๋์ผํ OS ๋๋ Python ๋ฒ์ ์ด๋ผ๊ณ ๋ณด์ฅํ ์ ์์ต๋๋ค.
pipenv๊ฐ requirements.txt ์คํ์ผ ํ์ผ์ ์ฝ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. Pipfile์ด ์๋ ๊ฒฝ์ฐ ์ด์ ๋์์ ์์กดํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
Pipfile์ด ์๊ณ requirements.txt๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ pipenv install
๊ฐ ์๋์ผ๋ก ์ด๋ฅผ Pipfile๋ก ๋ณํํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ผ ์ด๋ฆ์ด foo.txt
๊ฒฝ์ฐ pipenv install -r foo.txt
๋ ์์๋ก ๋ช
๋ช
๋ ํ์ผ์ ์ ํํฉ๋๋ค. RTD์์ ์ง์ํด์ผ ํ๋ ๋ ๊ฐ์ง ๋ชจ๋์
๋๋ค.
์๊ตฌ ์ฌํญ.txt์์ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉฐ, ํ๋ก๊ทธ๋๋จธ์ ์์
์ ๋ฐ๋ผ ์ฌํํ ์๋ ์๊ณ ๊ทธ๋ ์ง ์์ ์๋ ์์ต๋๋ค. ๊ท์ฐฎ๊ฒ ํ์ง ์๊ณ --dev
๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ถ๋ถ ReadTheDoc์ด ํธ๋ฆฌ๊ฑฐ๋๊ธฐ ๋๋ฌธ์
๋๋ค. ๋์์ ํธ๋๋น์ค๋ณด๋ค.
๋์ค์ ๋ฒ์ฉ ์ ๊ธ ํ์ผ์ด ํด๊ฒฐ๋๋ฉด ์ด๊ฒ์ Rtd์ ์ ์ฉํ ์ ์์ง๋ง ์ด๊ฒ์ ํธ๋๋น์ค ๋น๋์์๋ณด๋ค "์ค์ํ์ง" ์์ต๋๋ค(์ํฐํฉํธ๊ฐ ์ค์ ํ ์ด ์๋๋ผ ๋ฌธ์์ด๊ธฐ ๋๋ฌธ์). ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ง ์์ต๋๋ค. ํธ๋๋น์ค.
๋๋ ๋ ๊ฐ๋จํ๊ฒ ๊ฐ๋ฐ์๊ฐ ์ค์น ๋ผ์ธ( pip install -r requirements.txt
๋๋ pipenv install --dev
)์ ์์ฑํ๋๋ก ํ๋ฉด ๋ ๋ค์ํ ์๋ฃจ์
์
๋๋ค.
์ด ๋ฌธ์ ์ ์ํ๋ ๋ฌด์์
๋๊น? ์ ๊ฐ ๋์๋๋ฆด ์ ์๋ ์ผ์ด ์์๊น์?
๊ฐ์ฌ ํด์!
์๋ค ์.
์์์ด ์๋์?
์ ๋ฐ์ดํธ๊ฐ ์์ต๋๋ค. ์ํ๋ค๋ฉด ์ด ์์ ์ ์์ ๋กญ๊ฒ ์ํํ์ญ์์ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ๋จผ์ ์ด ํ๋ก์ ํธ์์ ์ฌ๋ฌ๋ถ์ด ํ๋ ๋ชจ๋ ์ผ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค :smiley:
์ ๋ ์ด ๋ฌธ์ ์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ฌ๋๋ค์ด ์ด ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊ฒ์ผ๋ก ์์ํ๊ณ ์ด๋ค ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์ฉํด์ผ ํ๋์ง์ ๋ํด ๋ช ๊ฐ์ง๋ง ๊ธฐ๋กํ๊ณ ์ถ์ต๋๋ค. ์ฌ๋๋ค์ ์ข ์ข pipenv๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง ํผ๋์ค๋ฌ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๊ธฐ๋ฅ์ผ๋ก ๋ชจ๋๋ฅผ ๋ง์กฑ์ํค๊ธฐ๋ ์ด๋ ค์ธ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๋๋ pipenv ๋ฌธ์์ ์ด ์น์ ์ ์ ๊ณต๋ ์ ๋ณด๋ฅผ ์ฃผ์ ์ฐธ์กฐ ์ง์ ์ผ๋ก ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ๊ฑฐ๊ธฐ์ ๋์ด๋ ์ฌ์ฉ ์ฌ๋ก์ ์ง์นจ์ ์์ฉํ๋ฉด ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๊ฐ ๋ง์กฑํ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ํ์ฌ virtualenv๊ฐ ์์ฑ๋ ํ ์ค์น ํ๋ก์ธ์ค์๋ ์ธ ๋จ๊ณ๊ฐ ์์ต๋๋ค.
pip install .
๋๋ python setup.py install --force
ํจํค์ง ์์ฒด ์ค์น(์ ํ ์ฌํญ)pipenv
์์ฒด์ ์ค์น๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์์ ์ํํด์ผ ํฉ๋๋ค. YAML ๊ตฌ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ๊ฑด๋ถ์ฌ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด์ pipenv์ ์ผ๋ถ(๋๋ ์๋ง๋ "๋๋ถ๋ถ์") ์ฌ์ฉ๋ฒ์ ์ค์ ๋ก 2๋จ๊ณ์ 3๋จ๊ณ๋ฅผ ๊ฒฐํฉํฉ๋๋ค. ๋ง์ ํ๋ก์ ํธ๊ฐ Pipfile์ -e .
๋๋ ์ด์ ์์ํ๋ ์ฌ์์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ํจํค์ง์ ํ์ ์ข
์์ฑ์ ํฌํจํฉ๋๋ค).
๊ทธ๋ฌ๋ ์์ ๋งํฌ๋ ๋ฌธ์์ ์ง์ ๋ ๊ฒ์ฒ๋ผ Pipfiles๋ ํ๋ก์ ํธ์ install_requires
์์กด ํ์ง ์๊ณ ์์ฒด์ ์ผ๋ก ์ข
์์ฑ์ ๊ด๋ฆฌํ ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ pipenv๋ฅผ ์ฌ์ฉํ์ฌ 2๋จ๊ณ๋ฅผ ์๋ฃํ๊ณ ํ์ํ ๊ฒฝ์ฐ 3๋จ๊ณ์ pip install .
๋๋ python setup.py install
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ด๊ฐ ์๊ฐํ ์ ์๋ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์ ์ฐํ ์ ๊ทผ ๋ฐฉ์์ pipenv install {opts}
๋ฅผ 2์ 3 ์ฌ์ด์ ์ถ๊ฐ ๋จ๊ณ๋ก ์ํํ๋ ๊ฒ์
๋๋ค. 2๋จ๊ณ์ 3๋จ๊ณ๋ ์ด๋ฏธ ์ ํ ์ฌํญ์ด๋ฏ๋ก ์ฌ์ฉ์์๊ฒ ์ํ๋ ๋ฐฉ์์ ๋ํด ๋ง์ ์์ ๋ฅผ ์ค๋๋ค. ์ํธ ๋ฐฐํ์ ์ธ ๊ตฌ์ฑ ์ต์
์ผ๋ก ์ฌ์ฉ์๋ฅผ ํผ๋ํ์ง ์๊ณ ํ๊ฒฝ์ ์ค์ ํฉ๋๋ค. ์ค๋ช
์๋ ์ด๋ฌํ ๋ค์ํ ๊ตฌ์ฑ ์ต์
์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ถ๋ช
ํ ๋ช
ํํด์ผ ํฉ๋๋ค.
pipenv install
์ธ์์ฌ์ฉ์์๊ฒ ์์ ๋ฅผ ์ฃผ๊ณ ์๋ก์ด pipenv install
ํ๋๊ทธ์ ๋ํ ๊ตฌ์ฑ์ ๋ฏธ๋์๋ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ YAML์์ ๋ฌธ์์ด๋ก ์ฌ์ฉํ๋ ค๋ ํ๋๊ทธ๋ฅผ ์ง์ ํ ์ ์๋๋ก ํ์ฉํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ pipenv๊ฐ ๋ค๋ฅธ virtualenv๋ฅผ ์์ฑํ์ง ์๋๋ก --system
์๊ตฌ ํ๋๊ทธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ์ฌ์ฉ pipenv
๊ฐ์ ํ๊ฒฝ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ๊ฐ์ ํ๊ฒฝ ์ค์ ์์ํ ์ฌ๋์ค๋ฌ์ด ๊ฒฌ๊ณ ํ ์ค๊ณ ๋ฐ API ๊ฐ์ง๊ณ ๋ถํ์ virtualenv
, ๊ทธ๋ฆฌ๊ณ pipenv
์ ๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ๊ฐ ๋ ์ต์ข
์ฌ์ฉ์ QoL ๊ธฐ๋ฅ.
๊ธฐ๋ณธ ๋์์ด Pipfile.lock
์์ ์ค์นํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ --ignore-pipfile
๋ ๋ถํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ํจํค์ง ๋๋ ์๊ตฌ ์ฌํญ ํ์ผ์ pipenv install
๋ํ ์ธ์๋ก ์ง์ ํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ Pipfile์ ์ข
์์ฑ์ ์ถ๊ฐํ๊ณ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฒฐ์ ์ ์ผ๋ก ๋ค์ ์์ฑํ์ง ์๋ ๋ฐ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
๋ฐ๋ผ์ ์์ ์์ ์ ๊ฐ์ํ ๋ ๋ด ์ ๊ทผ ๋ฐฉ์์ YAML์ ๋ค์ ์ต์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค.
pipenv_install: True|False
pipenv_install_opts: OPTIONS
ํธ์ง: ๋ ๋ฒ์งธ๋ก ์ด๋ฌํ ์ต์
์ pipenv
ํค ์๋์ ํ์ ํค๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ ๊ฒ์
๋๋ค.
python
ํค์ ํฌํจํ์ง ์๋ ์ด์ ๋ ๊ฐ์ฅ ์ ์ฌํ requirements_file
ํค์ ๊ฐ์ ์์ค์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์
๋๋ค.
pipenv_install
๊ฐ True์ธ ๊ฒฝ์ฐ pipenv๋ฅผ ํฌํจํ์ฌ pip๋ก RTD์ ํต์ฌ ์๊ตฌ ์ฌํญ์ ์ค์นํฉ๋๋ค.requirements.txt
ํ์ผ์์ ์๊ตฌ ์ฌํญ์ ์ค์นํฉ๋๋ค.pipenv install --system {opts}
pip install .[extras]
๋๋ python setup.py install --force
์ค ํ๋๋ฅผ ์ํํ๊ฑฐ๋ ๋ ๋ค ์ํํ์ง ์์ต๋๋ค.๋ค๋ฅธ ๊ด์ ์ด ์๊ฑฐ๋ ๊ฐ์ ํ ์ ์๋ ์ฌํญ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์. ์ค๋ง์ผ๋ฆฌ:
@Tobotimus ๊ฐ์ฌํฉ๋๋ค. https://github.com/orgs/rtfd/projects/2 ์ v2๋ฅผ ์ํ ์ค์ด๋ฉฐ ์ด๊ฒ์ด ์์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@stsewd ์ YAML ํ์ผ ์๋ฃ ์ด์ ํ๋ฅผ ์ฐพ์์ต๋๋ค. ์ฌ๊ธฐ ์๋กญ๊ธฐ ๋๋ฌธ์ ์ฌ์ ํ ๋ค์ ๋นํ๊ฑฐ๋ฆฌ๊ณ ์์ต๋๋ค.
์ด์ ๊ตฌ์ฑ์ ๋ํ ํจ์น๋ก #4254๋ฅผ ์ด์์ง๋ง ์๋ก์ด ์ฌ์์ ๋ฐ๋ผ ๋ฆฌํฉํ ๋งํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์ ๊ตฌ์ฑ์ ๋ํ ์ผ์ข ์ ๊ธฐ๋ฅ ๋ถ๊ธฐ๊ฐ ์์ต๋๊น? ๊ฐ์ฌ ํด์!
rtd-build repo๋ฅผ readthedocs.org repo https://github.com/rtfd/readthedocs.org/pull/4242๋ก ์ฎ๊ธฐ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ์์ด๋์ด๊ฐ ์์ต๋๋ค. https://docs.readthedocs.io/en/latest /design/yaml-file.html ์ด๋ฉฐ ์ด๊ฒ์ v2 https://github.com/rtfd/readthedocs.org/blob/master/readthedocs/rtd_tests/fixtures/spec/v2/schema์ ๋ํ ๊ธฐ๋ณธ ์คํค๋ง์ ์ผ์ข ์ ๋๋ค.
๊ฐ์ฌํฉ๋๋ค. #4254์ ์ ๊ทผ ๋ฐฉ์์ python
ํค ์๋์ pipenv
์น์
์ ๋ฐฐ์นํ๊ธฐ rtd-build repo์ฉ์ผ๋ก ์ค๋นํ ํจ์น ์
๋๋ค. pipenv PR์ ๊ณ์ํ๊ธฐ ์ ์ #4242๊ฐ ๋ณํฉ๋๊ณ V2 ๊ตฌ์ฑ ํ์์์ ๋ ๋ง์ ์งํ์ด ์ด๋ฃจ์ด์ง๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆด ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
ํฌํ ํ๋ก์ธ์ค๋ฅผ ์๋ฃํ๋ ค๋ฉด ๋ ๋ง์ ์์ ์ด ์์ผ๋ฏ๋ก ํด๋น ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ์ง๊ธ์ readthedocs_build๊ฐ ๋๊ฒฐ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผํ ์ ์์ต๋๋ค.
ํฌํ ๋๋ฉด PR์ ๋ค์ ์์ ํ์ฌ ์ฌ๊ธฐ์ ๋ณด๊ดํ ์ ์์ต๋๋ค.
ํ์ฌ๋ก์๋ v2 ์คํค๋ง ์ฌ์ ํ์ผ์ ์
๋ฐ์ดํธํ๋ ๋ณ๋์ PR์ด ์์ํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์
๋๋ค. ์ฌ๊ธฐ์์ ํ
์คํธ์ ์คํค๋ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
https://github.com/rtfd/readthedocs.org/blob/master/readthedocs/rtd_tests/fixtures/spec/v2/schema.yml
https://github.com/rtfd/readthedocs.org/blob/master/readthedocs/rtd_tests/tests/test_build_config.py
์ด๊ฒ์ ์คํค๋ง ๋ณ๊ฒฝ์ ๋ํ ๋ณ๊ฒฝ ๋ฐ ๊ทผ๊ฑฐ๋ฅผ ์ค๋ช ํ๋ ๊ฐ์ฅ ์ข์ ์์น์ ๋๋ค.
์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ pipenv.options
๋
ธ์ถ์ ์ข์ํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ๋ค๋ฅธ ๋๊ตฌ์์๋ ์ด ์์
์ ์ํํ์ง ์๊ณ ํน์ ์ต์
์ ์ง์ํฉ๋๋ค. ๋๋์ด ๋ชจ๋ ๋ฏธ๋ง์ด์ด์ผ ๋์ python.pipenv
ํค, ๊ทธ๋ฌ๋ ์๋ง ์ฐ๋ฆฌ๋ ๋ํ ๋ณ๊ฒฝํด์ผ python.install
์ง์ํ๊ธฐ ์ํด pipen
๋์ pip
.
ํธ์ง: cc @Tobotimus , ๋ํ ๊ธฐ์ฌ์ ๋ํด ๐! ํฐ ํ๋ก์ ํธ์ ์ค๊ฐ์ PR ์ฐฉ๋ฅ ์ฃ์กํฉ๋๋ค
@agjohnson ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค! ๊ทธ๋ฆฌ๊ณ ํผ๋๋ฐฑ๋ ๊ฐ์ฌํฉ๋๋ค. pipenv.options
๋
ธ์ถ์ด ๋๋จธ์ง ์คํค๋ง์ ์ผ์นํ์ง ์๋๋ค๋ ๊ฒ์ ์ดํดํ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ์ง๊ธ ์ง์ํด์ผ ํ๋ ํน์ ์ต์
์ --dev
(๊ฐ๋ฐ ์ข
์์ฑ ์ค์น)์ผ ๊ฒ์
๋๋ค. ๋ค๋ฅธ ์ต์
:
--skip-lock
๋ ์์กด์ฑ์ ๋ชจํธํ๊ฒ ๋ง๋ค๊ณ ๋๊ตฌ์ ๋ชฉ์ ์ ๋ฌด๋ ฅํํ๊ธฐ ๋๋ฌธ์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ๊ฒ์ด ๋์๊ฒ ์๋ฏธ๊ฐ ์์ต๋๋ค.--ignore-pipfile
์ฐ๋ฆฌ๊ฐ ์ง์์ ์ผ๋ก ์ถ๊ฐ ํ ์ ์์ต๋๋ค, ๊ทธ๊ฒ์ ์ฐจ์ด๋ฅผ ์ดํ ์๊ฐ์ 99 %ํ์ง ๊ฒ์ด๋ค pipenv install
ํญ์์์ ์ค์น ์์ฒด Pipfile.lock
๊ฐ์ ์ ํจ ๊ธฐ๊ฐ์ด ์๋๋ผ๋ฉด Pipfile
.--system
๋ ์๋ก์ด ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ์ง ์๋๋ก ์ง์์ ์ผ๋ก ์ ์ง๋์ด์ผ ํฉ๋๋ค.๋ํ ์๋นํ ๊ฒฝ์ฐ pipenv
๊ฐ ์ค์ ๋ก pip ๋ฅผ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ python.requirements
๋ํ ๋์ฒด๊ฐ python.install
๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ค ์ฌ์ฉ์๋ pipenv install
๋จ๊ณ์ pip install .
๋จ๊ณ๋ฅผ ๋ชจ๋ ์ํ ๊ฒ์
๋๋ค.
์ข์์, ๋์ํฉ๋๋ค. --dev
๊ฐ ํ์ฌ ์ง์ํด์ผ ํ๋ ์ฃผ์ ๊ธฐ๋ฅ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ์์
์ ์์ํ ๋ pipenv
๋ฅผ pip
๋์ฒดํ์ผ๋ก ์ทจ๊ธํ ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. pip
๋ฐ pipenv
๋จ๊ณ๊ฐ ๋ชจ๋ ์๋ ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํ๋ ํจํค์ง์ ์๊ฐ ์์ต๋๊น? ๊ณผ์ฐ ์ด๋ค ๋ชจ์ต์ผ์ง ๊ถ๊ธํ๊ธฐ๋ง ํฉ๋๋ค.
pip ๋จ๊ณ๋ฅผ ๋์ฒดํ๋ ๊ฒ๊ณผ ๋ฐ๋๋ก pipenv ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ชป๋ ๊ฒ์ด ์๋๋๋ค. conda์ ๋ํด ๋ง์ด ์์ง ๋ชปํ๋๋ผ๋ ์๋ง๋ ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ conda๋ฅผ ์ทจ๊ธํ๋ ๋ฐฉ์์ด๊ธฐ๋ ํฉ๋๋ค.
์์งํ ๋งํด์ ํด๋น ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํ๋ ํจํค์ง์ ์๊ฐ ์์ต๋๋ค. pipenv ์ค๋ช
์์ ์ด ์น์
์์ ๋ด ์์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ด ์์ ์ ์ฌ์ฉ์ ์ต๋ํ ํธํฅ๋์ง ์๋๋ก ํ์ต๋๋ค(์ฆ, pipenv
๋ Pipfile.lock์์ ํ๋ก์ ํธ ์์ฒด๋ฅผ ์ค์นํ๋ฏ๋ก pip
๋์ฒดํฉ๋๋ค. ํนํ ์ด ์ํฌํ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ _Pipfile_์์ ์ข ์์ฑ๊ณผ ์ด๋ฅผ ๊ฐ์ ธ์ฌ ์์น๋ฅผ ์ ์ํ๊ณ ์ด ํ์ผ์ ์ฌ์ฉํ์ฌ
Pipfile.lock
์ ๊ตฌ์ฒด์ ์ธ ์ข ์์ฑ ์ธํธ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ด ํ์ผ์ ํ๋ก์ ํธ์์ ์๋ํ๋ ๊ฒ์ผ๋ก ์๋ ค์ง ํน์ ๋ฉฑ๋ฑ์ฑ ํ๊ฒฝ์ ์ ์ํฉ๋๋ค.Pipfile.lock
๋ ์ง์ค์ ๊ทผ์์ ๋๋ค.Pipfile
๋ ์ฌ์ฉํ ์ข ์์ฑ์ ์ ํํ ๋ฒ์ ์ ๋ํด ์ฌ์ ํ ๋ชจํธํ ์ํ๋ฅผ ์ ์งํ ์ ์๋ค๋ ์ ์์ ์ ๊ธ ํ์ผ์ ์์ฑํ๋ ๋ฐ ํธ๋ฆฌํฉ๋๋ค.
ํด๋น ์ํฌํ๋ก์์๋ pipenv
๋ฅผ ์ฌ์ฉํ์ฌ ํจํค์ง ์์ฒด๋ฅผ ์ค์นํ๋ ๊ฒ์ ๋ํด ์ธ๊ธํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์กฐ๊ธ ๋ ์กฐ์ฌํ ํ์๋ ์ด ์ํฌํ๋ก๊ฐ ์ค์ ๋ก pip ์ค์น๊ฐ ๋ถ๊ฐ๋ฅํ ํ๋ก์ ํธ์ ๋ ์ง์ค๋ ์ ์์ต๋๋ค. pipenv
์ poetry
๋ฅผ ๋น๊ตํ ๋ Python Packaging User Guide ๋ฅผ ์ธ์ฉํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
pipenv
๋ PyPI์ ๊ตฌ์ฑ ์์์ ์์กดํ๋ ์์ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์์ฒด๊ฐpip
-์ค์น ๊ฐ๋ฅํ Python ํจํค์ง๋ก ๋ฐฐํฌ๋ฅผ ์ง์ํ๋ค๋ ๊ฐ์ ์ ๋ช ์์ ์ผ๋ก ํผํฉ๋๋ค.
๋ฐ๋ผ์ pipenv
๋ฅผ pip
๋ํ ๋์ฒดํ์ผ๋ก ์ทจ๊ธํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ด ๋ง์ ๊ฒ์
๋๋ค.
์๋ ํ์ธ์ @agjohnson์ ๋๋ค. ๋๋ ์ฃผ๋ก pipenv๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ด ํ์ด์ฌ ์์ฉ ํ๋ก๊ทธ๋จ (๊ทธ๋ฆฌ๊ณ ๋ด librairies PBR์ ๋งค์ฐ ๊ฐ์ฌ ๋ฑ์). ์ง๊ธ๊น์ง๋ ๋งค์ฐ ๋ง์กฑํ๋ฉฐ ํ์ฌ Pipfile์ ์ง์ํ์ง ์๋๋ผ๋ readthedoc์ด ๋ง์กฑํ ์ ์๋๋ก requirements.txt๋ฅผ ์์ฑํ๋ ์์ ํจํค์ง ๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค.
readthedocs compatible, pipenv ๋ฑ ์ ํ๋ก์ ํธ์ ๋ํ ๋ชจ๋ ๊ฒ์ ๋ถํธ์คํธ๋ฉ ํ๋
๋ฐ๋ผ์ ReadTheDocs๊ฐ Pipfile(๋ฐ pipenv)์ ์ํํ๊ฒ ์ง์ํ๋ค๋ฉด ์ด ๋ฌธ์ ๋ฅผ ์์จ ์ ์๋ค๋ฉด ๋งค์ฐ ๊ธฐ์ ๊ฒ์ ๋๋ค.
TD; DR: pipenv๋ ์ฃผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ pipenv๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ ๋ํ readthedocs๋ ํ๋ฅญํ ๊ฒ์ ๋๋ค!
๋ฌผ๋ก "--dev"๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ธ ํ์ผ์ ๋ํ ์ง๋ฌธ์ ๊น๋ค ๋กญ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ํ ๋ช ํํ ์๊ฒฌ์ด ์์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ฌ์ฉ์๊ฐ ์ ํ ๊ฐ๋ฅํ๊ฒ ํ ๊ฒ์ ๋๋ค.
pip install mydeps
์ ๋ํ ์ข
์์ฑ ๋ฒ์ ์ ํด๊ฒฐํ๋๋ก ํฉ๋๋ค.ํ์ฌ ๋ด ์๋ฃจ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ ๊ธ ํ์ผ์ ์ถ์ ํ์ง ์๋ ๊ฒ์ด์ง๋ง ๋น๋๋ฅผ ์ฌํํ ์ ์๊ฒ ๋ง๋ญ๋๋ค. ๋๋ ํ๋ณตํ์ง ์์ง๋ง ๊ทธ๊ฒ์ผ๋ก ์ด ์ ์์ต๋๋ค.
ํ์ฌ ํ๋ก์ ํธ์์ Pipfile์ ๊ฐ์ง, ๊ทธ๋ฅ ๋ชจ๋ ์์ ์ถ๊ฐ pip install
์ pipenv run
: ์๋ฅผ ๋ค์ด ๊ฐ์ pipenv run pip install sphinx sphinx-rtd-theme
. pipenv install
๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๋ฆฌ์กธ๋ฒ๋ฅผ ์์ํ๋ฏ๋ก ๋ฌด์๋ฏธํ๊ณ ์ํํฉ๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? ๋ ์ด๋์ ๋์ ์์น์ ์์ด์ผ ํ ๊ฒ ๊ฐ์ต๋๊น? ์ฝ๋๋ฒ ์ด์ค๋ฅผ ํดํนํ๊ณ ์ ๋ฐ์ดํธ๋ฅผ ๋ฐ์ ์ ์๊ธฐ ๋๋ฌธ์ readthedocs๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ๋ง๋ก ๋ง๊ณ ์์ต๋๋ค.
@petersmithca ์ด๊ฒ์ ์ฐ๋ฆฌ์ ๋ ์ด๋์ ์์ต๋๋ค. ๋จผ์ ๊ตฌ์ฑ ํ์ผ์ v2๋ฅผ ๋ง๋ฌด๋ฆฌํ๊ณ pipfile์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ์ ์ํฌํ๋ก๋ฅผ ๋ ์ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค. ์ํ๋ ์ํฌํ๋ก์ ๋ํ ๋ชจ๋ ๋์๋ง/์ฝ๋ฉํธ๋ฅผ ํ์ํฉ๋๋ค.
์๋ง๋ ์คํด์ผ ์ ์์ง๋ง ๋ณธ์ง์ ์ผ๋ก ๋ด ์ํฌํ๋ก๋ ๊ธฐ๋ณธ์ ์ผ๋ก virtualenv
๋ฐ pip install -r requirements.txt
์ pipenv install
๋์ฒดํ๊ณ ํ๊ฒฝ์ ๋ชจ๋ ํ์ฑํ๋ฅผ pipenv shell
๋์ฒดํฉ๋๋ค
@petersmithca pipenv install
pipenv sync --dev
๋์ sync
๋ ์ค์น๋ ํจํค์ง๊ฐ Pipfile.lock
์ ์๋ ํจํค์ง์ ์ผ์นํ๋์ง ํ์ธํ์ง๋ง ํด๋น ํ์ผ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ pipenv install --dev
์ด ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ ์๋ sync๋ฅผ ์ฌ์ฉํ์ง ์์์ง๋ง --dev์ ๋์ํฉ๋๋ค.
๋ด ๊ฐ๋ฐ์ ์๋์ ์๋ ๋ฌธ์, ๋ฐฉ๊ธ ์์ด๋ฒ๋ ธ์ต๋๋ค.
2018๋
8์ 29์ผ ์์์ผ ์คํ 1:59 Miguel Sรกnchez de Leรณn Peque <
[email protected]>์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
@petersmithca https://github.com/petersmithca pipenv ์ค์น ๋์
๋์ pipenv sync --dev๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ข ์์ฑ์ ๋ฃ์ต๋๋ค.
์ "dev" ์น์ ์ ์๋ ๋ฌธ์ ์์ฑ ๋ฐ ํ ์คํธ์ ๊ด๋ จ๋
ํํ์ผ. ๋ํ ๋๊ธฐํ๋ ์ค์น๋ ํจํค์ง๊ฐ ํจํค์ง์ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
Pipfile.lock์ ์ ์๋์ด ์์ง๋ง ํด๋น ํ์ผ์ด ์์ผ๋ฉด pipenv
install --dev๋ ์๋ฏธ๊ฐ ์์ต๋๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/rtfd/readthedocs.org/issues/3181#issuecomment-417027482 ,
๋๋ ์ค๋ ๋๋ฅผ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AE1F_bRgPmEc1uydCZKtJtT95vwIua_Eks5uVshbgaJpZM4QDCg9
.
์ ๊ธ ํ์ผ์ ๊ฐ์ ๋ก ์ฌ์ฉํ๋ ค๋ฉด pipenv install --ignore-pipfile --dev ๋ฅผ ์ ํธํฉ๋๋ค.
venv/virtualenv ๋์ pipenv๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ์ค์ ๋ก๋ ์ฌ์ ํ ์ฌ์ฉํ ์ ์์ต๋๋ค.
pipenv ๋ฌธ์์์
๊ธฐ๋ณธ์ ์ผ๋ก Pipenv๋ ๊ฐ์ ํ๊ฒฝ ๋ด์์ ์คํ๋๋์ง ์ฌ๋ถ๋ฅผ ๊ฐ์งํ๊ณ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์ฌ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์ํ๋ ๋์์ด๋ฉฐ ์ฌ์ฉ์๊ฐ Pipenv์ ํจ๊ป ์ฌ์ฉ์ ๊ตฌ์ถ ํ๊ฒฝ์ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
๋ฐ๋ผ์ pipenv๋ฅผ ๋ค๋ฅธ ์ค์น ๋ฐฉ๋ฒ(์: pip ๋๋ setup.py)์ผ๋ก ์ทจ๊ธํ ์ ์์ต๋๋ค.
์ง๊ธ pipenv๋ฅผ ํ ์คํธํ๊ณ ์๋๋ฐ ๋ค์์ ์ฐพ์์ต๋๋ค.
--ignore-pipfile
๋ ์ ๊ธ ํ์ผ์ด ์์ผ๋ฉด ์์ฑํ๋ ค๊ณ ์๋ํฉ๋๋ค.pipenv install
์คํํ๋ฉด ์ ๊ธ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.--skip-lock
์คํํ๋ฉด ์ ๊ธ์ ์์ฑํ์ง ์๊ณ pipfile์์ ์ค์น๋ฉ๋๋ค.์ ๊ธ ํ์ผ ์์ฑ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ข ์์ฑ์ ์ค์นํ์ง ์์ต๋๋ค(ํธํ๋์ง ์๋ ์ข ์์ฑ์ด ์๋ ๊ฒฝ์ฐ ์คํจํ ์ ์์).
๊ทธ๋์ un-pined dep(๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ์)๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ ์ด ๋ฌธ์ ๊ฐ ์์ ์ ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ์
๋๊น? ์๋๋ฉด ๋ ๊ฐ์ง ์ต์
์ ๋ชจ๋ ๋ฃ์ด์ผ ํฉ๋๊น? --ignore-pipfile
๋ฐ --skip-lock
? ( --ignore-pipfile
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค)
Pipenv๋ ์ฌ์ฉ์ ์ง์ Pipfile ์ง์ ์ ์ง์ํ์ง ์์ต๋๋ค(roo ๋๋ ํ ๋ฆฌ ์ด์ธ์ ์ค์น๋ฅผ ์ง์ํ ๊ณํ์ ๋๋ค). ๊ทธ๋์ ํ๊ฒฝ ๋ณ์๋ก ๋ฃ์ ๊ณํ์ ๋๋ค. ๋ช ๋ น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
PIPENV_PIPFILE=./custom/path/Pipfile pipenv install --system --dev --ignore-pipfile --skip-lock
--skip-lock
๋ฐ --ignore-pipfile
๋ yaml ํ์ผ์ ์ต์
์ด๊ณ --ignore-pipfile
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์์ต๋๋ค. ๋ํ --dev
๋ ์ต์
์ด๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ ์์ต๋๋ค.
์ด๋ฅผ ํตํด ๋์ผํ ๊ฐ์ ํ๊ฒฝ์ ์ข ์์ฑ์ ์ค์นํฉ๋๋ค. ์ด ํ๋ก์ ํธ https://github.com/gsemet/cfgtree์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
version: 2
sphinx:
configuration: docs/conf.py
python:
install:
- pipfile: .
skip_lock: true
dev: true
- path: .
method: pip
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ ๋ rtd์์ pipfile ์ง์์ ํ ์คํธํ๊ณ ์์ต๋๋ค. pipfile์ ์ฌ์ฉํ๋ ํ๋ก์ ํธ(๊ทธ๋ฆฌ๊ณ ๋น๋ํ ๋ฌธ์๊ฐ ์์)์ ๋ํด ์๊ฒฌ์ ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น? ๊ทธ๊ฒ์ ํ ์คํธ์ ๋ง์ ๋์์ด ๋ ๊ฒ์ด๋ฉฐ ๋ฒ๊ทธ๊ฐ ์ ์ ๊ตฌํ p๋ฅผ ๊ฐ์ ธ์ฌ ๊ฒ์ ๋๋ค.
https://github.com/dls-controls/pytac ์ Pipenv๋ฅผ ์ฌ์ฉํ๊ณ pipfile์ด ์์ง๋ง ์ ํํ ๋ชฉ์ ์ ์ํ rtd-requirements.txt
ํ์ผ๋ ์์ต๋๋ค. https://pytac.readthedocs.io/en/latest/์ ์์ต๋๋ค.
๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ด๊ฒ์ด pipenv-to-requirements/ ์ ์ญํ ์ ๋๋ค. :)
@willrogers ํ์ฌ ๊ตฌํ์ผ๋ก ๋ฌธ์๋ฅผ ์์ฑํ ์ ์์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
์ด ๋ฌธ์ ๋ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ค๋๋ ๊ฒ์ผ๋ก ํ์๋์์ต๋๋ค. ๋ ์ด์ ํ๋์ด ์์ผ๋ฉด ํ์๋ฉ๋๋ค. ๊ทํ์ ๊ธฐ์ฌ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@stsewd ์ด ๋ฌธ์ ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? :๋ถํ๋ค:
๋ด์๊ฒ ์ฃ์กํฉ๋๋ค. ์ด๊ฒ์ ์ค๋๋์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ https://github.com/rtfd/readthedocs.org/pull/4740์ ์ํด์๋ง ์ฐจ๋จ๋๋ฉฐ, ๋ค๋ฅธ ๊ฒํ ๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ทธ ์์ https://github.com/rtfd/readthedocs.org/pull/4783 ์ ๋ณํฉํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ฐ ๊ฑฐ์ ๊ทผ์ ํ์ต๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น? #4740์ด ๋ณํฉ๋ ๊ฒ ๊ฐ์๋ฐ #4783๋ ๋ณํฉ๋ ์ ์๋์? ์ด ๊ธฐ๋ฅ์ด ์ ๋ง ๊ธฐ๋๋ฉ๋๋ค.
์ด๊ฒ์ ์์ง ๊ณํ์ ์์ต๋๊น? ๋ด ์์ ์ pipenv๋ฅผ ๋ ์ ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ง์ ์์ด, ๋๋ ์ผ์ ์๋์ํค๊ธฐ ์ํด ์ฝ๊ฐ์ ํดํน์ ๊ตฌ์ถํด์ผ ํฉ๋๋ค
@stsewd ์ด์ ์ pipenv์์ ์คํ๋๋ ํ๋ก์ ํธ์ ๋ํด ์ฃผ์์ ๋ฌ์์ผ ํ๋ค๊ณ ์ธ๊ธํ์ต๋๋ค. https://github.com/pyvec/docs.pyvec.org ๋ฐ https://github.com/honzajavorek/cojeapi๋ฅผ ์ ์ง ๊ด๋ฆฌ
๋ ๋ค ํ์ฌ ๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ข
์์ฑ์ ๋ง์น ๋๋ง๋ค pipenv lock --requirements > requirements.txt
๋ฅผ ์คํํด์ผ ํฉ๋๋ค. ์ด ํ์ผ์ด ๋๊ธฐํ๋์ง ์์๋์ง ํ์ธํ๋ CI๊ฐ ์์ง๋ง ์์
ํ๋ ๊ฒ์ ์ฑ๊ฐ์ ์ผ์
๋๋ค. ํ์ฌ๋ก์๋ ๋ ๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๋ ์ํํ ์์
ํ๋ฆ์ผ๋ก ์ด์ด์ง ์ ์์ ํด์ค๋ค๋ฉด ๊ธฐ์ ๊ฒ์
๋๋ค.
(์ฌ๋์ด ๋ฆฐํฐ์ ๊ด์ฌ์ด ์๋ค๋ฉด, ๋ณผ ์ด ์คํฌ๋ฆฝํธ๋ฅผ . ์ํ ์ฌ๋ฐ๋ฅด๊ฒ๋ก dependabot .)
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ฌ๊ธฐ์์ ์นจ๋ฌต์ ๋ํด ์ฃ์กํฉ๋๋ค. ์ฐ๋ฆฌ๋ pipenv๋ฅผ ์ง์ํ๋์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ค๊ณ ํฉ๋๋ค.
์ด๋ฌํ ๊ฒฐ์ ์ ์ผ๋ถ๋ ์ฐ๋ฆฌ๊ฐ pipenv๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ ์์ํ ์ ์งํด์ผ ํ๋ ๊ฒ์ ๋๋ค. ์ฌ๋ฌ๋ถ์ ์๊ฒฌ์ ์๋ ค์ฃผ์ธ์.
๋๋ ๊ฐ์ธ์ ์ผ๋ก Pipenv ์ฌ์ฉ์ ์ค๋จํ์ต๋๋ค(์ฌ์ ํ Conda์ Poetry ์ฌ์ฉ). PEP 517๋ก ๊ฐ๋ ๊ฒ์ด ์ต์ ์ ์ ํ์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
Pipenv๋ ์ฌ์ ํ ์ต๊ณ ์ ์ง์ ์ต์ ์ ๋๋ค. pycharm ๋ฐ spacemacs์ ๊ฐ์ ํธ์ง๊ธฐ๋ pipenv๋ฅผ ์ง์ํฉ๋๋ค. Dependabot์ pipenv๋ฅผ ์ง์ํฉ๋๋ค. pipenv๋ฅผ ์ง์ํ์ง ์๋ ์ ์ผํ ๋๊ตฌ๋ readthedocs์ ๋๋ค.
๋๋ ๋ฏธ๋์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ์ง ์ ํ ๋ชจ๋ฅธ๋ค. pipenv๊ฐ 1๋ ๋๊ฒ ์ ๋ฐ์ดํธ๋์ง ์์๋ค๋ ์ฌ์ค์ pipenv์ ์ข์ง ์์ต๋๋ค. ๋๋ ์[1]์ ํ๋ฆฌํธ[2]๊ฐ ํ๋ฐํ๊ฒ ์ ์ง๋๋ ๊ฒ์ ๋ณธ๋ค. ํ ์์ฒด๊ฐ ๊ฐ์ ๋ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ง๊ธ์ ์ข๋ ์ซ๋ pipenv๊ฐ ์ต์ ์ ์ ํ์ด๋ผ๊ณ ์๊ฐํ๊ณ , ๋์ค์ ๊ต์ฒดํ๋๋ผ๋ ์ค๋๋๋ก ๋ ๊ฑฐ์ ํ๋ก์ ํธ์์ ์ฌ์ฉ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก Python ์ปค๋ฎค๋ํฐ๊ฐ requirements.txt
๊ธฐ๋ฐ pip ์ค์น์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ํธํ๋ ์๋ฃจ์
์ ๋นจ๋ฆฌ ์ ํํ ์๋ก ๋ ์ข์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ ๊ฒ์ด ํ๋ก์ ํธ์ ๋ํด ๋ค๋ฅธ ์๋ฃจ์
์ ์ ํํ๋ฏ๋ก readthedocs์ ๊ฐ์ ๋๊ตฌ๋ ๋ชจ๋ ๋ค์ํ ์๋ฃจ์
์ ์ง์ํด์ผ ํ ์ ์์ต๋๋ค.
๋ ธํธ:
[1] ์ต๊ทผ์ ์๋ฅผ ์๋ํ๋๋ฐ ๊ธฐ์กด requirements.txt
๊ธฐ๋ฐ ์์คํ
์์ ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๊ฐ ๋ฏธ๋์ ๋ฐฉ์์ด๋ผ๋ฉด ์ด ๋ฌธ์ ๋ ์ฝ๊ฒ ๊ณ ์น ์ ์์ต๋๋ค. ์+์ข
์์ฑ์ ํน๋ณํ ๊ฐ๋ณ์ง ์์ต๋๋ค. ์ด๋ CI ์คํ์ ์ํด ์ฆ์์์ ์ค์นํ ๋ ์ค์ํฉ๋๋ค.
[2] flt์ ์ต์ํ์ง ์์ต๋๋ค. ํ ๋ฒ ๋ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์๋ฅผ ์ง์ํ ๊ณํ์ ์๋์? ํ์ฌ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค
๋ด๊ฐ ๋ก์ปฌ์์ repo๋ฅผ ํดํนํ์ง ์๋ ํ Pipenv ๋๋ Poetry๊ฐ ์๋ ์ ํ
๋ฌผ๋ก ์
๋ฐ์ดํธํ ๋๋ง๋ค ๋ฎ์ด์๋๋ค.
2019๋
11์ 26์ผ ํ์์ผ ์คํ 2:04 Santos Gallegos [email protected]
์ผ๋ค:
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ฌ๊ธฐ์์ ์นจ๋ฌต์ ๋ํด ์ฃ์กํฉ๋๋ค. ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ ค๊ณ ํฉ๋๋ค.
pipenv ์ง์ ์ฌ๋ถ.
- ํ ๊ฐ์ง๋ pipenv๊ฐ PEP 517 pypa/pipenv#2787์ ์ฑํํ์ง ์๊ฑฐ๋ ์ฑํํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
(๋ ผํ)
https://github.com/pypa/pipenv/issues/2787#issuecomment-416685889
์๋ ํ๋ฆฌํธ์ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ์ ๋ง์ฐฌ๊ฐ์ง๋ก(์ด๋ฅผ ํตํด pip๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ ํ์ผ์ ๋ ๋ง์ ์ต์ ์ ๊ตฌํํ์ง ๋ง์ญ์์ค).- pipenv์ ๋ง์ง๋ง ๋ฆด๋ฆฌ์ค๋ 1๋ ์ ์ด์์ต๋๋ค.
https://pypi.org/project/pipenv/#history , ์ฐ๋ฆฌ๋ ๋ฌด์์ ๋ํด ํ์ ํ์ง ๋ชปํฉ๋๋ค
ํ๋ก์ ํธ๊ฐ ๋์๊ฐ ๋ฐฉํฅ.- Deps๋ฅผ ํด๊ฒฐํ ๋ Pipenv๊ฐ ๋๋ฆฝ๋๋ค. ์ด๋ฏธ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์ฝ๋ค์ ํจ๊ป. ๊ทธ๋ฌ๋ conda๋ ์ต๊ทผ์ ๊ฐ์ ๋์์ผ๋ฏ๋ก pipenv๋
์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ํด๋น ์์ญ์์๋ ๊ฐ์ ๋์์ต๋๋ค.- ์ฐ๋ฆฌ๋ ์คํ์ ์ธ ๋ฐฉ์์ผ๋ก pipenv๋ฅผ ์ง์ํ๋ ค๊ณ ํ ์ ์์ต๋๋ค(์ฐ๋ฆฌ๋ ์ด๋ฏธ
pipenv ์ง์์ผ๋ก ์ค๋น๋ PR ์ข ๋ฅ), ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ ๊ฑฐ/๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ด๋ค ๋ณด์ฆ.์ด๋ฌํ ๊ฒฐ์ ์ ์ผ๋ถ๋ ์ฐ๋ฆฌ๊ฐ pipenv๋ฅผ ๊ตฌํํ๋ฉด
์ฐ๋ฆฌ๋ ์์ํ ์ ์งํด์ผ ํฉ๋๋ค. ์ฌ๋ฌ๋ถ์ ์๊ฒฌ์ ์๋ ค์ฃผ์ธ์.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/readthedocs/readthedocs.org/issues/3181?email_source=notifications&email_token=ABGUL7JZGO2MZLY7WMZJ6X3QVVQJJA5CNFSM4EAMFA62YY3PNVWWK3TUL52HS4DFVREXG43
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/ABGUL7JU6HHROEZP6IWAE3TQVVQJJANCNFSM4EAMFA6Q
.
๊ทธ๋ ๋ค๋ฉด ์๋ฅผ ์ง์ํ ๊ณํ์ ์๋์?
@petersmithca ์ด์ ์๋ฅผ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค https://poetry.eustace.io/docs/pyproject/#poetry -and-pep-517
๋ด ๋ฌธ์๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ ํจ๊ป ๋ฌธ์ ์์ ์ ์ฝ์ ๊ฒ์ ๋๋ค.
2019๋
11์ 27์ผ ์์์ผ ์ค์ 11:18 Santos Gallegos [email protected]
์ผ๋ค:
๊ทธ๋ ๋ค๋ฉด ์๋ฅผ ์ง์ํ ๊ณํ์ ์๋์?
์ด์ ์๋ฅผ ์ฌ์ฉํ ์ ์์ด์ผ ํฉ๋๋ค.
https://poetry.eustace.io/docs/pyproject/#poetry -and-pep-517โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/readthedocs/readthedocs.org/issues/3181?email_source=notifications&email_token=ABGUL7P7B5C5HSU4DDSMDNTQV2FTBA5CNFSM4EAMFA62YY3PNVWWK3TUL52HS4DFVEXG43VMVB
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/ABGUL7KI4LUTHHYUITCB7YYLQV2FTBANCNFSM4EAMFA6Q
.
๋ด ๋ฌธ์๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ ํจ๊ป ๋ฌธ์ ์์ ์ ์ฝ์ ๊ฒ์ ๋๋ค.
์, ์ฐ๋ฆฌ๋ ์๋ฅผ ์ง์ ํธ์ถํ์ง ์์ง๋ง pip๋ก ํธ์ถ๋ฉ๋๋ค(์ฆ, PEP 517).
์ค ๊ทธ๋. ๋ฉ์ง ๊ฐ์ฌํฉ๋๋ค
2019๋
11์ 27์ผ ์์์ผ ์ค์ 11:22 Santos Gallegos [email protected]
์ผ๋ค:
๋ด ๋ฌธ์๋ฅผ ์์ฑํ๊ธฐ ์ํด ์์ ํจ๊ป ๋ฌธ์ ์์ ์ ์ฝ์ ๊ฒ์ ๋๋ค.
์, ์ฐ๋ฆฌ๋ ์๋ฅผ ์ง์ ํธ์ถํ์ง ์์ง๋ง pip๋ก ํธ์ถ๋ฉ๋๋ค(์ฆ, PEP
517)โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/readthedocs/readthedocs.org/issues/3181?email_source=notifications&email_token=ABGUL7M2WA2SR2JL54AIIG3QV2GEPA5CNFSM4EAMFA62YY3PNVWWK3TUL52HS4DFVEXG43VMVB
๋๋ ๊ตฌ๋ ์ทจ์
https://github.com/notifications/unsubscribe-auth/ABGUL7OXN4AK63UAIL7TO3LQV2GEPANCNFSM4EAMFA6Q
.
๋ด ์ดํด๋ pip๊ฐ ๋ฏธ๋์ ์ด๋ ์์ ์์ Pipfile
๋ฐ Pipfile.lock
ํ์์ ์ง์ํ๊ธฐ ์์ํ ๊ฒ์ด๋ผ๋ ๊ฒ์
๋๋ค. ์ด๋ ์ชฝ์ด๋ Pipenv๋ฅผ ์ฌ์ฉํ ์ข
์์ฑ ๊ด๋ฆฌ๊ฐ pip๋ณด๋ค ์ง๊ด์ ์ด๊ณ ์ ๋ขฐํ ์ ์์ผ๋ฉฐ ๋ด์ฅ๋ venv๊ฐ ๋ง์์ ๋ญ๋๋ค.
@zbeekman ๊ทธ ์ดํด์ ๋ํ ์ถ์ฒ๊ฐ ์์ต๋๊น?
์ง๊ธ๊น์ง ์ ๋ ฅํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด ์์ผ๋ฉด ๋์์ด ๋ฉ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ ๊ฒ์ด ํ๋ก์ ํธ์ ๋ํด ๋ค๋ฅธ ์๋ฃจ์ ์ ์ ํํ๋ฏ๋ก readthedocs์ ๊ฐ์ ๋๊ตฌ๋ ๋ชจ๋ ๋ค์ํ ์๋ฃจ์ ์ ์ง์ํด์ผ ํ ์ ์์ต๋๋ค.
์ด๋ ์ ๋ ๊ฐ์ ๋๋์ด ๋ญ๋๋ค. RTD๋ ํ๋ก์ธ์ค ๋ฐ ๋๊ตฌ์ ๋ํด ์ง๋์น๊ฒ ๋ ๋จ์ ์ผ ์ ์์ง๋ง Python ์ปค๋ฎค๋ํฐ๋ฅผ ์ ๋ฐ์ ์ผ๋ก ์ง์ํ๋ ค๋ ๊ฒฝ์ฐ ์ํฌํ๋ก์ ๋ ๋ง์ ์ ์ฐ์ฑ์ด ์์ด์ผ ํฉ๋๋ค.
๋ด๊ฐ ์ ๊ธฐํ ํ ๊ฐ์ง ์ต์ ์ ํ์ฌ ์ ๊ทน์ ์ผ๋ก ๊ณ ๋ ค๋์ง ์๊ณ ์๋ pipenv ์ง์์ "์คํ์ " ๊ธฐ๋ฅ์ผ๋ก ๊ตฌํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ pipenv๊ฐ ํต์ฌ ํ์์ ์ง์๋์ง ์๊ณ (์ง์ ์์ฒญ์ ๋์ธ ์ ์์) pipenv ์ง์์ด ์ค๋จ๋ ์ ์์์ ์๋ฏธํฉ๋๋ค(๊ฒฝ๊ณ ์ ํจ๊ป ๋ ์ด์ ์ฌ์ฉ๋์ง ์์).
์ผ๋ฐ์ ์ผ๋ก ์ด ์์ ์์ ๋๋ ์๋ง๋ pipenv ์ง์์ ๋ํ ํ๋ ํจ์ค๋ก ํฌํํ ๊ฒ์ด์ง๋ง ์ด๊ฒ์ ์ฌ์ ํ โโ๋ง์ ์์ฒญ์ ๋ฐ๋ ๊ธฐ๋ฅ์ ๋๋ค.
pipenv ์ฌ์ฉ์๋ผ๋ฉด ์ฝ์ด ํ์์ ๋ ๋ง์ ๋ต๋ณ์ด ํ์ํ๋ค๊ณ ์๊ฐํ๋ ์ง๋ฌธ์ "์๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?"์ ๋๋ค. pipenv์ ๋ํ ์ฐ๋ฆฌ์ ๊ฒฐ์ ์ ์ผ์์ ์ธ ๊ฐ๋ฐ์์ ๋ ๋๊ตฌ์ ์ฌ์ฉ์๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ ์๊ณก๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ pipenv์ ๋์์ด์ฒ๋ผ ๋๊ปด์ง๋๋ค. RTD๋ง์ด ์ค์ ๋ก ์๋ฅผ ์ง์ํฉ๋๋ค.
๊ทธ ๋น์ ๋ด๊ฐ (์๊ฐ ์๋๋ผ) pipenv๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ ์ด์ ์ค ํ๋๋ ํตํฉ์์ Pipfile์ ๋ํ ๊ด๋ฒ์ํ ์ง์์ด์์ต๋๋ค. , pyproject.toml ๋ฐ ์์ ๋ํ ์ง์์ ์ฌ์ ํ โโ๋๋ญ ๋๋ค. ๋ง์ง๋ง์ผ๋ก ํ์ธํ์ ๋ ์ด์ Dependabot์ด ์ง์ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ง๋ง ๋๋จธ์ง๋ ์์ฌ์ค๋ฝ์ต๋๋ค. RTD๋ ์ค์ ๋ก ๋ด๊ฐ Pipfile์ ๋ํ ํต์ ์์๋ด์ผ ํ๋ ์ ์ผํ ๊ณณ์ด์๊ณ ์๊ฐ ๋ ๋นจ๋ฆฌ ์ง์๋๋ ๊ณณ์ด์์ต๋๋ค.
์ด๋ค ๋๊ตฌ๊ฐ ๊ฒฐ๊ตญ ์ฌ์ฉ์๋ฅผ ์ด๊ฒผ๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ ์๊ฐ์๋ ์ฌ๋๋ค์ด pip + virtualenv์ ๊ฐ์ ๊ฒ์ ๊ฐ์ ํ ์ํ๊ณ pipenv๊ฐ ๋ํ๋๋ฉด ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค. ์๋ ์ ์๋ ค์ง์ง ์์๊ณ , ๋ด๊ฐ ๊ทธ๊ฒ์ ๋ํด ์์์ ๋ ๋ง์นจ๋ด ์ํ๊ณ๋ฅผ ์ง๋ฐฐํ๋ ํ๋์ ๋๊ตฌ๊ฐ ์๋ค๋ ๊ฒ์ด ์ฐ๋งํ๋ค๋ ๋๋์ ๋ฐ์์ต๋๋ค. ๋์ค์ ์ฌ๋๋ค์ pipenv์ ๊ฒฐํจ์ ๊นจ๋ซ๊ณ ํ์ผ๋ก ๋์๊ฐ๊ฑฐ๋ ๋์์ ์ฐพ๊ณ ์๋ฅผ ๋ฐ๊ฒฌํ๊ธฐ ์์ํ์ต๋๋ค. ์ด ๊ณผ์ ์ด ์์ง๋ ์ผ์ด๋๊ณ ์๋ ๊ฒ ๊ฐ์์. ๋๊ตฌ๋ ์๋ฅผ ์์์ฐจ๋ฆฌ๋ ๊ฒ์ ๋ฐ๋ผ์ก์ง๋ง pipenv๋ ๋ ์ผ์ฐ ๋๋ ์ฑํ๋์์ผ๋ฉฐ ์ด๋ฏธ "๋ชจ๋ ๊ณณ์์" ์ง์๋ฉ๋๋ค.
๋ง์ ์ฌ๋๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ค๋๋ ๋๋ pipenv์ ํ๊ณ๋ฅผ ๋ณด๊ณ ์๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์๊ฐ์ ํ์ง๋ง ์ฌ์ฉํ๋ ๋๊ตฌ๊ฐ ๋ฐ๋ผ์ก์ ๋๊น์ง ํ์ง ์์ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ๋จผ์ ์ด ํ๋ก์ ํธ์์ ์ฌ๋ฌ๋ถ์ด ํ๋ ๋ชจ๋ ์ผ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค :smiley:
์ ๋ ์ด ๋ฌธ์ ์ ๊ด์ฌ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ฌ๋๋ค์ด ์ด ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊ฒ์ผ๋ก ์์ํ๊ณ ์ด๋ค ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์์ฉํด์ผ ํ๋์ง์ ๋ํด ๋ช ๊ฐ์ง๋ง ๊ธฐ๋กํ๊ณ ์ถ์ต๋๋ค. ์ฌ๋๋ค์ ์ข ์ข pipenv๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง ํผ๋์ค๋ฌ์ ํ๊ธฐ ๋๋ฌธ์ ์ด ๊ธฐ๋ฅ์ผ๋ก ๋ชจ๋๋ฅผ ๋ง์กฑ์ํค๊ธฐ๋ ์ด๋ ค์ธ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค.
๋๋ pipenv ๋ฌธ์์ ์ด ์น์ ์ ์ ๊ณต๋ ์ ๋ณด๋ฅผ ์ฃผ์ ์ฐธ์กฐ ์ง์ ์ผ๋ก ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ๊ฑฐ๊ธฐ์ ๋์ด๋ ์ฌ์ฉ ์ฌ๋ก์ ์ง์นจ์ ์์ฉํ๋ฉด ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๊ฐ ๋ง์กฑํ ๊ฒ์ ๋๋ค.
RTD์ ์ค์น ๊ณผ์
๋ฐ๋ผ์ ํ์ฌ virtualenv๊ฐ ์์ฑ๋ ํ ์ค์น ํ๋ก์ธ์ค์๋ ์ธ ๋จ๊ณ๊ฐ ์์ต๋๋ค.
pip install .
๋๋python setup.py install --force
ํจํค์ง ์์ฒด ์ค์น(์ ํ ์ฌํญ)pipenv๊ฐ ์ด๋ฌํ ๋จ๊ณ์ ์ ํฉํ ๋ฐฉ๋ฒ
pipenv
์์ฒด์ ์ค์น๋ ์ฒซ ๋ฒ์งธ ๋จ๊ณ์์ ์ํํด์ผ ํฉ๋๋ค. YAML ๊ตฌ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ๊ฑด๋ถ์ฌ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.์ด์ pipenv์ ์ผ๋ถ(๋๋ ์๋ง๋ "๋๋ถ๋ถ์") ์ฌ์ฉ๋ฒ์ ์ค์ ๋ก 2๋จ๊ณ์ 3๋จ๊ณ๋ฅผ ๊ฒฐํฉํฉ๋๋ค. ๋ง์ ํ๋ก์ ํธ๊ฐ Pipfile์
-e .
๋๋ ์ด์ ์์ํ๋ ์ฌ์์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํจํค์ง์ ํ์ ์ข ์์ฑ์ ํฌํจํฉ๋๋ค).๊ทธ๋ฌ๋ ์์ ๋งํฌ๋ ๋ฌธ์์ ์ง์ ๋ ๊ฒ์ฒ๋ผ Pipfiles๋ ํ๋ก์ ํธ์
install_requires
์์กด ํ์ง ์๊ณ ์์ฒด์ ์ผ๋ก ์ข ์์ฑ์ ๊ด๋ฆฌํ ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ pipenv๋ฅผ ์ฌ์ฉํ์ฌ 2๋จ๊ณ๋ฅผ ์๋ฃํ๊ณ ํ์ํ ๊ฒฝ์ฐ 3๋จ๊ณ์pip install .
๋๋python setup.py install
๋ฅผ ์ฌ์ฉํฉ๋๋ค.๋ด๊ฐ ์๊ฐํ ์ ์๋ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์ ์ฐํ ์ ๊ทผ ๋ฐฉ์์
pipenv install {opts}
๋ฅผ 2์ 3 ์ฌ์ด์ ์ถ๊ฐ ๋จ๊ณ๋ก ์ํํ๋ ๊ฒ์ ๋๋ค. 2๋จ๊ณ์ 3๋จ๊ณ๋ ์ด๋ฏธ ์ ํ ์ฌํญ์ด๋ฏ๋ก ์ฌ์ฉ์์๊ฒ ์ํ๋ ๋ฐฉ์์ ๋ํด ๋ง์ ์์ ๋ฅผ ์ค๋๋ค. ์ํธ ๋ฐฐํ์ ์ธ ๊ตฌ์ฑ ์ต์ ์ผ๋ก ์ฌ์ฉ์๋ฅผ ํผ๋ํ์ง ์๊ณ ํ๊ฒฝ์ ์ค์ ํฉ๋๋ค. ์ค๋ช ์๋ ์ด๋ฌํ ๋ค์ํ ๊ตฌ์ฑ ์ต์ ์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ถ๋ช ํ ๋ช ํํด์ผ ํฉ๋๋ค.pipenv install
์ธ์์ฌ์ฉ์์๊ฒ ์์ ๋ฅผ ์ฃผ๊ณ ์๋ก์ด
pipenv install
ํ๋๊ทธ์ ๋ํ ๊ตฌ์ฑ์ ๋ฏธ๋์๋ ๋ณด์ฅํ๊ธฐ ์ํด ์ฌ์ฉ์๊ฐ YAML์์ ๋ฌธ์์ด๋ก ์ฌ์ฉํ๋ ค๋ ํ๋๊ทธ๋ฅผ ์ง์ ํ ์ ์๋๋ก ํ์ฉํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ pipenv๊ฐ ๋ค๋ฅธ virtualenv๋ฅผ ์์ฑํ์ง ์๋๋ก--system
์๊ตฌ ํ๋๊ทธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ์ฌ์ฉpipenv
๊ฐ์ ํ๊ฒฝ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ด๋ฏธ ๊ฐ์ ํ๊ฒฝ ์ค์ ์์ํ ์ฌ๋์ค๋ฌ์ด ๊ฒฌ๊ณ ํ ์ค๊ณ ๋ฐ API ๊ฐ์ง๊ณ ๋ถํ์virtualenv
, ๊ทธ๋ฆฌ๊ณpipenv
์ ๊ฐ์ ํ๊ฒฝ ๊ด๋ฆฌ๊ฐ ๋ ์ต์ข ์ฌ์ฉ์ QoL ๊ธฐ๋ฅ.๊ธฐ๋ณธ ๋์์ด
Pipfile.lock
์์ ์ค์นํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์--ignore-pipfile
๋ ๋ถํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.๊ทธ๋ฌ๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ํจํค์ง ๋๋ ์๊ตฌ ์ฌํญ ํ์ผ์
pipenv install
๋ํ ์ธ์๋ก ์ง์ ํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ Pipfile์ ์ข ์์ฑ์ ์ถ๊ฐํ๊ณ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฒฐ์ ์ ์ผ๋ก ๋ค์ ์์ฑํ์ง ์๋ ๋ฐ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.๊ตฌ์ฑ ๋ ์ด์์
๋ฐ๋ผ์ ์์ ์์ ์ ๊ฐ์ํ ๋ ๋ด ์ ๊ทผ ๋ฐฉ์์ YAML์ ๋ค์ ์ต์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋๋ค.
ํธ์ง: ๋ ๋ฒ์งธ๋ก ์ด๋ฌํ ์ต์ ์
pipenv
ํค ์๋์ ํ์ ํค๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ ๊ฒ์ ๋๋ค.python
ํค์ ํฌํจํ์ง ์๋ ์ด์ ๋ ๊ฐ์ฅ ์ ์ฌํrequirements_file
ํค์ ๊ฐ์ ์์ค์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค.pipenv๋ฅผ ์ฌ์ฉํ ์ค์น ์์ฝ
pipenv_install
๊ฐ True์ธ ๊ฒฝ์ฐ pipenv๋ฅผ ํฌํจํ์ฌ pip๋ก RTD์ ํต์ฌ ์๊ตฌ ์ฌํญ์ ์ค์นํฉ๋๋ค.requirements.txt
ํ์ผ์์ ์๊ตฌ ์ฌํญ์ ์ค์นํฉ๋๋ค.pipenv install --system {opts}
pip install .[extras]
๋๋python setup.py install --force
์ค ํ๋๋ฅผ ์ํํ๊ฑฐ๋ ๋ ๋ค ์ํํ์ง ์์ต๋๋ค.๋ค๋ฅธ ๊ด์ ์ด ์๊ฑฐ๋ ๊ฐ์ ํ ์ ์๋ ์ฌํญ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์. ์ค๋ง์ผ๋ฆฌ: