์ฌ๋ฌ๋ถ ์๋ ํ์ธ์,
๊ทธ ์ํฉ
ํ์ฌ ๋ฏธ๋ฌ๋ฅผ ๊ฐ๋ฆฌํค๋ URL์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ธฐ๋ณธ PyPI ์ธ๋ฑ์ค URL์ ์ฌ์ ์ํ๋ ์ฌ์ด ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ๊ธฐ์ ํ๊ฒฝ์์ ๊ฐ๋ฐ์์๊ฒ ์ ์ฅ์ ๋ฏธ๋ฌ๋ฅผ ์ฌ์ฉํ๋๋ก ์๊ตฌํ๋ ๊ฒ์ ๋งค์ฐ ์ผ๋ฐ์ ์ ๋๋ค.
๋ถํํ๋ ์ด๊ฒ์ pipenv์์ ์ฝ๊ฒ ์์ฉํ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ฏธ๋ฌ๋ฅผ ์ด๋ฌํ ํจํค์ง์ ์์ค๋ก Pipfile์ ๋ช ์์ ์ผ๋ก ์ถ๊ฐํ ์ ์์ง๋ง ์ด์์ฑ์ด ์์๋ฉ๋๋ค.
(true) ๋ฏธ๋ฌ๋ฅผ ์ง์ ํ์ฌ PyPI ์ธ๋ฑ์ค์ ์์น๋ฅผ โโ์ฌ์ ์ํ๋ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๋ค. ์ด๋ PyPI์๋ง ์ ์ฉ๋๋ฉฐ ๋ค๋ฅธ ํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์๋ ์ ์ฉ๋์ง ์์ต๋๋ค(์ด๋ ์ฌ์ ํ Pipfile์ ๋ช ์์ ์ผ๋ก ์ง์ ๋จ).
์ผ๋ฐ ์ ์
Docker๋ ์ฌ์ฉ์๊ฐ ๋ฐ๋ชฌ์ ๊ตฌ์ฑ ํ์ผ์์ ๋ ์ง์คํธ๋ฆฌ ๋ฏธ๋ฌ๋ฅผ ์ง์ ํ ์ ์๋๋ก ํ์ฌ ์ด๋ฌํ ์ํฉ์ ์์ฉํฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, pipenv ์ฌ์ฉ์๊ฐ ํ๊ฒฝ ๋ณ์, ๊ตฌ์ฑ ํ์ผ ๋๋ ๋ช ๋ น์ค ๋งค๊ฐ๋ณ์๋ฅผ ํตํด PyPI์ ๋ํ (์ง์ ํ) ๋ฏธ๋ฌ๋ฅผ ์ง์ ํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ์ด ๊ฐ์ด ์ค์ ๋๋ฉด pipenv๋ PyPI์ ๋ํ ์ฐ๊ฒฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์๋ ๋ชจ๋ PyPI ํจํค์ง์ ๋ํด ๋ฏธ๋ฌ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ผ๋ถ ๊ธฐ์ ํ๊ฒฝ์์๋ PyPI๊ฐ ์ฐจ๋จ๋์ง ์์ ์ํ๋ก ์ ์ง๋์ง๋ง ์ ์ฑ ์ ๋ฐ๋ผ ์์์ ์ธ๊ธํ ๋ค๋ฅธ ์ด์ ๋ก ๋ฏธ๋ฌ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๊ตฌํ ๊ณ ๋ ค ์ฌํญ
๊ด๋ จ ํ ๋ก
์ด๊ฒ์ Freenode์ #python ๋ฐ #pypa์์ ๋ ผ์๋์์ต๋๋ค. ๋ช ๊ฐ์ง ๊ฑด์ค์ ์ธ ๋ ผ์ ๋์ ์ฌ๊ธฐ์์ ํ ๋ก ์ ์ํด ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์ด๋ผ๊ณ ๊ฒฐ์ ํ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ชจ๋ ๋ ธ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
/cc @uranusjr @ncoghlan @altendky @njsmith
๋๋ ์ด๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ํ๋ ์ผ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค(๊ธฐ์
FW/์บ์ฑ ํ๋ก์) -- PIPENV_PYPI_MIRROR
์ ๊ฐ์ด pipfile์์ ์ฐพ์ ๊ฒฝ์ฐ pypi ๋์ ์ฌ์ฉํ ๋ฏธ๋ฌ๋ฅผ ์ง์ ํ๊ธฐ ์ํด ์ฌ์ ์ ์ค์ ์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. PIPENV_PYPI_CACHING_PROXY
๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ ๋จผ์ ์๋ํด์ผ ํจ์ ์ง์ ํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก pypi ์์์ sources
๋ก ์ฌ๋ผ์ด์คํฉ๋๋ค.
๊ทธ๊ฒ์ด ๋ชฉํ๋ฅผ ๋ฌ์ฑํ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๊น? ๊ทธ๋ ๋ค๋ฉด ๊ตฌํ ์ง๋์ ํ๊ทธ๋ฅผ ์ง์ ํ์ฌ ์ด๊ฒ์ด ์ข์์ง ๋์์ง ์๋ ค์ค ์ ์์ต๋๋ค(@ncoghlan).
์ฃผ์ ์ฌํญ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค. PyPI๊ฐ PyPI์์ ๊ณต์นญํ ํจํค์ง๊ฐ ์ค์ ๋ก PyPI๊ฐ ๊ฒ์ํ ๊ฒ๊ณผ ์ผ์นํ๋๋ก pip
์ TLS ๋
๋ฆฝ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ธฐ ์ํด PEP 458๊ณผ ์ ์ฌํ ํจํค์ง ์๋ช
๋ฉ์ปค๋์ฆ์ ๊ตฌํํ ๋๊น์ง , ํธ๋ํฝ์ ํฌ๋ช
ํ๊ฒ ๋ค๋ฅธ ์๋ฒ๋ก ๋ฆฌ๋๋ ์
ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ณด์ ๊ด์ ์์ ์ง์ ์ผ๋ก ์ฐ๋ ค๋๋ ์ฌํญ์
๋๋ค.
๋ถํํ๋ ๊ทธ ํน์ ๊ณต๊ฒฉ ๋ฒกํฐ๋ ์ด๋ฏธ pip.conf
๋ฅผ ํตํด ์ด๋ ค ์์ผ๋ฏ๋ก pipenv
์์ค์์ ๋น์ทํ ๊ฒ์ ์ ๊ณตํ๋ค๊ณ ํด์ ์ง๊ธ๋ณด๋ค ๋ ๋๋น ์ง์ง๋ ์์ ๊ฒ์
๋๋ค.
๊ทธ ์ธ์๋ ๋ฒ์ฉ ๋ฆฌํฌ์งํ ๋ฆฌ URL ์ฌ์์ฑ ๋ฉ์ปค๋์ฆ์ ์ ์ด๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ๊ณ์ธต์์ PyPI์ ํน์ ํ ๊ฒ๋ณด๋ค ์ค์ ๋ก ๋ฌธ์ํํ๊ณ ์ค๋ช ํ๊ธฐ๊ฐ ๋ ์ฌ์ธ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒ:
pipenv --override-source-url 'default=https://pypi-proxy.example.com/api' --override-source-url 'https://pypi.python.org/simple=https://pypi-proxy.example.com/api' --override-source-url 'https://pypi.org/simple=https://pypi-proxy.example.com/api' install
(์ ์ผํ PyPI ํน์ ๋นํธ๋ pip.conf
์ ๋ช
์๋ ๋๋ก pip์ ๊ธฐ๋ณธ ๋ค์ด๋ก๋ ์์ค๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ํด "default"๋ฅผ ์ฌ์ฉํฉ๋๋ค).
๋งค๋ฒ ์ ์ฒด ์์ค URL ์ฌ์ ์ ๋งต์ ์ฒ ์ํ๋ ๊ฒ์ ์ค์ ๋ก ์ฌ์ฉํ๊ธฐ์๋ ๋ค๋ฃจ๊ธฐ ํ๋ค ์ ์์ผ๋ฏ๋ก CLI ์คํ์ ๋ํ ๋ช ๊ฐ์ง ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.
pipenv --override-source-urls <config file> install
pipenv --pypi-mirror https://pypi-proxy.example.com/api install
--override-source-url
๋ ์ด์ด๋ฅผ ์ฆ์ ๋
ธ์ถํ ์ง ์ฌ๋ถ๋ ๋ค๋ฅธ ์ง๋ฌธ์
๋๋ค. ๋จผ์ ๋ ๊ฐ๋จํ --pypi-mirror
์ต์
์ ๊ตฌํํ๊ณ --override-source-url
๋ฐ --override-source-urls
๋ ๊ทธ๋ ๊ฒ ํ๋ ๋์ ์ผ๋์ ๋๊ณ ๊ฐ๋ฅํ ๋ฏธ๋ ์ต์
์
๋๋ค.
์ผ๋ฐ์ ์ธ {given URL: override URL}
๋งคํ๋ ๋ด ์ฒซ ๋ฒ์งธ ์๊ฐ์ด์์ง๋ง ์ถ๊ฐ ๊ณ ๋ ค ์ฌํญ์ ๋ฐ๋ผ ํน์ ์ผ์ด์ค PyPI์ ๋ํ ๋ช ๊ฐ์ง ์ฃผ์ฅ์ด ์์ต๋๋ค.
PyPI๋ ์ ์๋ ค์ง ๊ณต๊ฐ URL ๊ณผ ๋ง์ ๋ฏธ๋ฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ ์ ์์ ๋งค์ฐ ๋ ํนํฉ๋๋ค.
https://pypi.python.org/simple/
์๋ https://pypi.org/simple/
์ฌ๋ฌ https://pypi.org/simple
URL์ด ์์ต๋๋ค https://pypi.python.org/simple
https://pypi.org/simple/
ํํ ์ฌ๋์?), ๊ฐ ์ฌ์ฉ์๊ฐ ์ค์ค๋ก ์์๋ด๋๋ก ํ๋ ๋์ ์ด ๋ฌธ์ ๋ฅผ ํ ๋ฒ๋ง ํด๊ฒฐํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค.
@njsmith ๋ด ๊ฒ์๋ฌผ์ ๋ง์ง๋ง ๋ถ๋ถ์์ --pypi-mirror <URL>
์คํ ์ ์์ ์ฐธ์กฐํ์ญ์์ค. ์ด๊ธฐ ๊ตฌํ์ด ๊ทธ๊ฒ์๋ง ์ด์ ์ ๋ง์ถ ๊ฒฝ์ฐ ์ผ๋ฐ URL ์ฌ์์ฑ ๊ธฐ๋ฅ์ ๋ด๋ถ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ผ๋ก ์์ํ ์ ์์ต๋๋ค(" PyPI"์๋ ๊ถ๊ทน์ ์ผ๋ก ๋ชจ๋ ๋์ผํ ์์น๋ก ํ์ธ๋๋ ์ฌ๋ฌ URL์ด ์์ผ๋ฉฐ ๋์ค์ ๊ทธ ์์ฒด๋ก ๊ธฐ๋ฅ์ผ๋ก ๋
ธ์ถ๋๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค(๊ธฐ๋ณธ --pypi-mirror
์ฌ์ฉ์ ๋ํด ์ํ๋ ๋๋ก ์๋ํ๋ ๊ฒ์ผ๋ก ํ์ธ๋ ํ). ์ฌ๋ก).
์ ๋ง๋ค, ๋์ณค์ด :-)
๋ช ๋ น์ค ์ธ์๋ฅผ ๋ณด๋ค ์๊ตฌ์ ์ธ ๊ตฌ์ฑ์ ๋งคํํ๋ ์ผ๋ฐ์ ์ธ ๊ท์น์ด ์์ต๋๊น? ๋๋ ์ด๊ฒ์ ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ๊ทธ๊ฒ์ ํ ๋ฒ ์ค์ ํ๊ณ ์์ด ๋ฒ๋ฆฌ๊ธฐ๋ฅผ ์ํ ๊ฒ์ด๋ผ๊ณ ์์ํฉ๋๋ค.
@ncoghlan ์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
์ฃผ์ ์ฌํญ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค. PyPI๊ฐ PEP 458๊ณผ ์ ์ฌํ ํจํค์ง ์๋ช ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ์ฌ ๋ช ๋ชฉ์ PyPI์์ ์์๋ ํจํค์ง๊ฐ ์ค์ ๋ก PyPI๊ฐ ๊ฒ์ํ ๊ฒ๊ณผ ์ผ์นํ๋๋ก pip์ TLS ๋ ๋ฆฝ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํ ๋๊น์ง ๋ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํธ๋ํฝ์ ํฌ๋ช ํ๊ฒ ๋ค๋ฅธ ์๋ฒ๋ก ๋ฆฌ๋๋ ์ ํ๋ ๊ฒ์ ๋ณด์ ๊ด์ ์์ ์ง์ ์ผ๋ก ์ฐ๋ ค๋ฉ๋๋ค.
๋ด Pipfile.lock
๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฝ๊ณ ์๋ค๋ฉด ํจํค์ง์ ํจํค์ง๊ฐ ์ค์น๋ ์์ค ๊ฐ์ ์ ์ฅ๋ ๊ด๊ณ๊ฐ ์์ต๋๋ค. ๊ธฐ์กด ๊ธฐ๋ฅ ์งํฉ์์ ์ฌ๋ฌ ์์ค๋ฅผ ์ง์ ํ ์ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ๋น์ทํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๊น? sync
๋ ์ ๊ธ ํ์ผ์ ์์ฑํ ๋ ์ฌ์ฉํ ๊ฒ๊ณผ ๋ค๋ฅธ ์์ค์์ ํจํค์ง๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค.
Pipfile.lock
๋ ๊ณ ์ ๋ ๊ฐ ์ข
์์ฑ์ ๋ํด ํ์ฉ๋๋ ์ํฐํฉํธ ํด์ ๋ชฉ๋ก์ ์ ์ฅํ๋ฏ๋ก ์ผ๋จ ์ ๊ธ์ ์๋ฃ ํ๋ฉด ๋น๋ฐ๋ฆฌ์ ํจํค์ง๋ฅผ ๊ต์ฒดํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ ๊ธ ์์ฑ ์ Pipfile
์ ์์ค์ ๋ช
์์ ์ผ๋ก ์ตํธ์ธํ๋ ๊ฒ์ "๋๋ ์ด ์์ค๊ฐ ๋๋ฅผ ๋ง์น์ง ์์ ๊ฒ์ด๋ผ๊ณ ์ ๋ขฐํ๋ฉฐ TLS๋ฅผ ์ฌ์ฉํ์ฌ ๋ด๊ฐ ์ค์ ๋ก ์ด ์์ ๊ณผ ๋ํํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค"๋ผ๊ณ ๋งํฉ๋๋ค. (์ฌ๊ธฐ๊ฐ ์๋ pip
๋๋ ๋ค๋ฅธ PyPA ์ ์ฅ์ ์ค ํ๋์ ์์ ์ ์์ง๋ง ํน์ ํจํค์ง๋ฅผ ํน์ ์์ค ์ ์ฅ์์ ๋ฐ์ธ๋ฉํ ๊ฐ๋ฅ์ฑ์ ๋ํด ๋
ผ์ํ๋ ์ด๋๊ฐ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.)
pip.conf
์์ ๊ธฐ๋ณธ ์์ธ URL์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ถ๊ฐ ์์ธ URL์ ์ถ๊ฐํ๊ฑฐ๋ ๊ตฌ์ฑ ํ์ผ ๋๋ ์
ธ ํ๋กํ ๊ธฐ๋ฐ ๋ฉ์ปค๋์ฆ์ ํตํด ์ฌ๊ธฐ์ ์ ์๋ ์ฌ์ ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ค๋ฆ
๋๋ค. ๋ด ํ ๋๋ ํ ๋ฆฌ(์: sdist์ setup.py ํ์ผ)์ ๋ํ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ผ๋ก ํน์ ์์ ์ ์คํ๋์ด ์ด ํจํค์ง ์์ค๋ฅผ ์ ๋ขฐํ๋๋ก ์ค์ ์ ๊ตฌ์ฑํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค." ๊ทธ๋ฆฌ๊ณ PEP 458๊ณผ ๊ฐ์ ์๋ช
์ฒด๊ณ๋ ํ์ธ์ ์ฌ์ฉ๋๋ ๊ณต๊ฐ ํค ์์ฒด๊ฐ ์์ ์ ์ํด ๋์ ๊ถํ์ด ํ์ํ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ํ ๋๋ ํ ๋ฆฌ ๋ด๋ถ ์ด๋๊ฐ์ ์ ์ฅ๋์ด ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ข
๋ฅ์ ์์์์ ๋ํ ์์ ํ ๋ฐฉ์ด๊ฐ ์๋๋๋ค.
์๊ฒฉํ ๋ณด์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ง ์กฐ์ง์ด ์ผ๋ฐ์ ์ผ๋ก ์ธํฐ๋ท์ ๋ํ ์ก์ธ์ค๊ฐ ์ ํ๋ ์ ๊ธด ์๋ฒ์์ ๋น๋๋ฅผ ์คํํ๊ฑฐ๋ ๋คํธ์ํฌ ์์ค์์ ์ด๋ฌํ ์ข ๋ฅ์ ๋ฌธ์ ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ์๋ ์ถฉ๋ถํ ์ด์ ๊ฐ ์์ต๋๋ค.
๋ํ ์ฌ๋ฌ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ณ ํจํค์ง๊ฐ ๊ธฐ๋ณธ์ด ์๋ ์ธ๋ฑ์ค์์ ๊ฐ์ ธ์จ ๊ฒฝ์ฐ ์ ๊ธ ํ์ผ์ ํ์๋ฉ๋๋ค.
pep 458 ๋ฌธ์ ๋ ๋ณธ์ง์ ์ผ๋ก ๋ด๊ฐ ์ผ๋์ ๋์๋ ๊ฒ์ ๋๋ค. URL์ ๋ค๋ฅด์ง๋ง ์ค์ ๋ก pypi์ ์ง์ ์ ๋ก์ปฌ์์ pypi๋ฅผ ๋ณต์ฌํ๊ณ ๋์ผํ๋ค๊ณ ์ฃผ์ฅํ๋ ๊ฒฝ์ฐ์ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ ๋๋ ๋ด ํ ๋๋ ํ ๋ฆฌ(์: sdist์ setup.py ํ์ผ)์ ๋ํ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ผ๋ก ํน์ ์์ ์ ์คํํ ์์์ ํ๋ก์ธ์ค๊ฐ ์ด ํจํค์ง ์์ค๋ฅผ ์ ๋ขฐํ๋๋ก ์ค์ ์ ๊ตฌ์ฑํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ด๊ฒ์ด ์ํ ๋ชจ๋ธ์ธ ๊ฒฝ์ฐ pipenv๊ฐ ์ํํ ์ ์๋ ์์
์ด ํฐ ์ํฅ์ ๋ฏธ์น ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ํ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ์ ์์ ํ ์ ์๋ ์ฌ๋์ $PATH
์ ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฝ์
ํ๊ณ ์ํ๋ ์์
์ ์ํํ๋ ๊ฐ์ง pipenv๋ฅผ ์ฝ์
ํ๋ ๊ฒ๊ณผ ๊ฐ์ ์์
์ ์ํํ ์๋ ์์ต๋๋ค.
@njsmith ์ด๊ฒ์ pip์ ์ํ ๋ชจ๋ธ์ด๊ธฐ๋ ํฉ๋๋ค. ํจํค์ง ์ค์น๋ sdist setup.py
ํ์ผ์์ ์์์ ์ฝ๋๋ฅผ ์คํํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ ์ฝ๋๋ ์ค์ ๋ก ์ค์ ๊ณผ ๊ฐ์ ํ ๋๋ ํ ๋ฆฌ์ ํญ๋ชฉ์ ๋ฎ์ด์ฐ๊ฑฐ๋ ๊ฒฝ๋ก์ ํญ๋ชฉ์ ์ถ๊ฐํ๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ํ ์ ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ช
์์ ์ผ๋ก pypi(์๊ณ ์ ๋ขฐํ ์ ์๋ ์ธ๋ฑ์ค)์ ๊ถํ์ ๋ถ์ฌํ๊ณ ํด์ ๊ฒ์ฌ๋ฅผ ์๊ตฌํ๋ ๊ฒ์ด ๋ณด์์ ์ํ ์ข์ ๋จ๊ณ์
๋๋ค. ์ด๋ฅผ ํตํด ์๋ ค์ง ๋ณด์ ์ํ์ ์ค์ ์ง์ค์์ผ๋ก ์ ์ด ๋ฐ ์ ๊ฑฐํ๊ณ ๋ค์ด๋ก๋ ์ค์ธ ํจํค์ง๋ฅผ ๋ถ์ฐ ๋ฐฉ์์ผ๋ก ๊ฒ์ฆํ ์ ์์ต๋๋ค. ๋ค์ด๋ก๋ํ ์ ๊ธ ํ์ผ์ ๋ฐ์์ผ ํ๋ ํด์์ ๋ํด ๋ฌด์์ด๋ผ๊ณ ๋งํ์ต๋๊น? ์์ธ์์ ์ป์ ๊ฒ๊ณผ ์ผ์นํ์ง ์์ต๋๊น? ์ด ์์
๋ชจ๋๊ฐ ์คํจํ๋ ค๋ฉด ๋ก์ปฌ ์์คํ
, ์ธ๋ฑ์ค ๋ฐ ๋คํธ์ํฌ ๊ณ์ธต ์ค ํ๋ ์ด์์์ ์ค๋ฅ๊ฐ ๋ฐ์ํด์ผ ํฉ๋๋ค. ์ ๋ขฐํ ์ ์๋ ์ธ๋ฑ์ค์ ๋ํด ํด์๋ฅผ ํ์ธํ๋ ์์
์ ํจ๊ป ์ํํ๋ ์ ํ๋ฆฌ์ผ์ด์
์คํ์์ ์ฌ๋ฌ ์์๋ ํจํค์ง๋ฅผ ๊ฐ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค. , ๊ทธ๋ฆฌ๊ณ ๋ง์ ๊ฒฝ์ฐ ํด์ ์์ฒด๋ ๊ด๋ จ๋์ง ์์ ๋ ๋ค๋ฅธ ์์ค์์ ์์ต๋๋ค. ์ด์ ์ต์ํ pip์ pipenv์ ๋ชจ๋ ํด์ ๊ฒ์ฌ๊ฐ ์ด๋ป๊ฒ๋ ๋ณ์กฐ๋์ด ์ํ๋ ๊ฒ๊ณผ ๋์ผํ ํด์๋ฅผ ์์ฑํ์ง๋ง ๋ค๋ฅธ ์
์์ ์ธ ๊ฒ์ ์ค์นํด์ผ ํฉ๋๊น?
๋ด ๋ง์ ๋ก์ปฌ ์์คํ ์ด ์์๋ ๊ฒฝ์ฐ pip ๋๋ pipenv๊ฐ ์ฌ์ฉ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด ํ ์ผ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๋น์ ์ด ๋ค์ด๋ก๋ํ๊ณ ์๋ ํจํค์ง๊ฐ ๋น์ ์ด ๊ทธ๊ฒ์ ๊ฒ์ํ๊ธฐ๋ก ๋์ด ์๋ ๊ณณ์์ ๋น์ ์ด ์ฐพ๊ณ ์๋ ํจํค์ง๋ผ๋ ๊ฒ์ ํ์ ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ณด์ ์ฌ์ฌ์์ ํ๋์ ์์๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
@ncoghlan @njsmith ์ด ๋ชจ๋ ์์๊ฐ sudo pip install...
์ ๋ํ ๋ฐ๋ฐ ์์ง์๊ณผ ์ผ๋ฐ์ ์ธ ์๋ฏธ์์ pip๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์์คํ
ํจํค์ง ๊ด๋ฆฌ์๋ ํ์ด์ฌ์ ๊ด๋ฒ์ํ๊ฒ ์ค์นํฉ๋๋ค. ์ด๊ฒ์ ์ค์ ๋ก pipenv ์ง๋ฌธ์ ์๋์ง๋ง ์ง๊ธ ํ ๋ก ์ด ์งํ๋๊ณ ์๋ ๊ณณ์ด๋ฉฐ ๋ค์ ๋จ๊ณ๋ฅผ ์๋ดํ ์ ์์ต๋๋ค...
@techalchemy ์ด ์ฃผ์ ์ ๋ํ ์ฐ๊ฒฐ์ด ์ ํ ๋ณด์ด์ง ์์ต๋๊น? ์์ ๋ชจ๋ ๊ฒ์ ๊ฒฐ๋ก ์ ์ฌ์ฉ์๊ฐ PyPI์ ๋ํด pipenv๊ฐ ์ฌ์ฉํ๋ ๋ฏธ๋ฌ๋ฅผ ์ฌ์ ์ํ๋๋ก ํ๋ฉด ์ถ๊ฐ ์ํ์ด ๋ฐ์ํ์ง ์์ผ๋ฉฐ sudo pipenv
๋ฅผ ์ํํ๋ ๊ฒ์ ์ ์ด์ ์๋ฏธ๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋ ์ฃ ?
@njsmith ์๋์ sudo pipenv
๋ฅผ ์ฌ์ฉํด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ฐ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ์ค์ ๋ก ์ฃผ์ ๊ฐ ์๋์ง๋ง ์ํ ๋ชจ๋ธ ๊ฒฝ๋ก๋ฅผ ์ฝ๊ฐ ๋ฐ๋ผ๊ฐ๊ธฐ ๋๋ฌธ์ ํ์ํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก:
๊ทธ๋ฆฌ๊ณ PEP 458๊ณผ ๊ฐ์ ์๋ช ์ฒด๊ณ๋ ํ์ธ์ ์ฌ์ฉ๋๋ ๊ณต๊ฐ ํค ์์ฒด๊ฐ ์์ ์ ์ํด ๋์ ๊ถํ์ด ํ์ํ ๋๋ ํ ๋ฆฌ๊ฐ ์๋ ํ ๋๋ ํ ๋ฆฌ ๋ด๋ถ ์ด๋๊ฐ์ ์ ์ฅ๋์ด ์๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ข ๋ฅ์ ์์์์ ๋ํ ์์ ํ ๋ฐฉ์ด๊ฐ ์๋๋๋ค.
์๊ฒฉํ ๋ณด์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ง ์กฐ์ง์ด ์ผ๋ฐ์ ์ผ๋ก ์ธํฐ๋ท์ ๋ํ ์ก์ธ์ค๊ฐ ์ ํ๋ ์ ๊ธด ์๋ฒ์์ ๋น๋๋ฅผ ์คํํ๊ฑฐ๋ ๋คํธ์ํฌ ์์ค์์ ์ด๋ฌํ ์ข ๋ฅ์ ๋ฌธ์ ๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ์๋ ์ถฉ๋ถํ ์ด์ ๊ฐ ์์ต๋๋ค.
์ต์ํ ์ด๋ ์ ๋์ ๋ฐฉ์ด๊ฐ ๊ถํ ์๋ ์์น์ ์ ์ฅ๋ ํค์ ์์กดํ์ง๋ง ๊ถํ ์๋ python ์ค์น๋ฅผ ์ฌ์ฉํ์ง ๋ง๋ผ๊ณ ์กฐ์ธํ๋ ๊ฒฝ์ฐ ๋
ผ์ํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ํ๋ ธ์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ํ์คํ @ncoghlan ์ ์๊ฒฌ๊ณผ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค (๊ทธ๋ฌ๋ sudo pipenv
, ๊ทธ๊ฒ์ ์ ๋ ๋์ด์๋ ์ ๋ฉ๋๋ค)
๋ค, ๊ทธ๋ฅ ๊ฐ์๊ธฐ ๋ ์ค๋ฅธ ์๊ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ถ๊ฐ ์ปจํ ์คํธ๊ฐ ์ผ๋ถ ํด๊ฒฐ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ TUF๋ฅผ ๊ตฌํํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ ์ถ์ธก์ ์ธ ํ ๋ก ์ ์ฐธ์ฌํ๊ธฐ ๋ณด๋ค๋ PyPI ๋ฏธ๋ฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ฌ๋๋ค์ ๋๋ ์ฃผ์ ์ ์ด ๋ฌธ์ ๋ฅผ ์ ์งํ๋ ๋ฐ ํฌํํฉ๋๋ค. (์ด์จ๋ ์ฌ์ฉ์์ ํ ๋๋ ํ ๋ฆฌ์ ๋ํ ์์์ ์ฐ๊ธฐ ์ก์ธ์ค ๊ถํ์ ๊ฐ์ง ๊ณต๊ฒฉ์๋ฅผ ๋ฐฉ์ดํ๊ธฐ ์ํด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๊ฑฐ๋ ํด์ผ ํ๋ ์ผ์ด ๋ง์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.)
์, ์ด์ ์ฐ๋ฆฌ๊ฐ ๊ธฐ๋ํ๊ฑฐ๋ ์ ํธํ๋ ๋์์ ์ ์ํด ๋ณด๊ฒ ์ต๋๋ค. ๋์ ํ์ฌ ์์ ์ดํด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
--pypi-mirror
๊ฐ ์ ๋ฌ๋๊ฑฐ๋ PIPENV_PYPI_MIRROR
๊ฐ ์ค์ ๋๋ฉด ๋ค์์ ์ ํธํด์ผ ํฉ๋๋ค.๋ค๋ฅธ URL์ด ์๋ PyPI๋ง ์ฌ์ ์ํด์ผ ํฉ๋๋ค. ์๋ง๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ PyPI URL์ด ์ฌ์ฉ ์ค์ผ ๊ฒ์ด๋ฏ๋ก ๋์ดํ ์ ์์ผ๋ฉฐ, ํ๋๋ฅผ ๋์น๋ฉด ๋๊ตฐ๊ฐ ๋ฒ๊ทธ๋ฅผ ์ ๊ณ ํ๊ณ ์ถ๊ฐ๋ ๊ฒ์ด๋ฉฐ ๊ณง ๋ชจ๋ URL์ ๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ ์๊ฒ ๋ง๋ ์ ๊ทผ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
@njsmith ๊ฐ ๋งํ ๊ฒ์ ๋ด ๊ด์ ๊ณผ๋ ์ผ์นํฉ๋๋ค. ์ด๊ธฐ PR์์ ๊ต์ฒดํ ๊ฒ์ ์ ์ํ๋ 3๊ฐ์ repo URL์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
pip
์ ๊ธฐ๋ณธ ์ค์ ์ ์์กดํ๋ ๊ฒฝ์ฐ)ํํ ์ฌ๋์ ์ฌ๋ถ๋ URL์ ๋ณ๋๋ก ๋์ดํ๋ ๊ฒ๋ณด๋ค URL ์ ๊ทํ ๋จ๊ณ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์์ฒญ Pipfile์๋ ํํ ์ฌ๋์(์์ฑ ์) ๊ฐ ์์ผ๋ฏ๋ก ์ด ๋ฐฉ๋ฒ ๋๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํ ์ ์์ต๋๋ค.
๋ง๋ค, ๋ด ์๊ฐ์ ์ด๋ฌ๋ค.
str.rstrip
๋ ์์์ ์์ ํํ ์ฌ๋์๋ฅผ ์ ๊ฑฐํ๋๋ผ๋ ์์
์ ์ถฉ๋ถํ ๊ฒ์
๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด์ ๋ํด ๋ ์๊ฒฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ต๋ ํ๋์ ํํ ์ฌ๋์๋ฅผ ์ ๊ฑฐํ์ญ์์ค)์์ฒญ๋. ๋๋ ์ด๊ฒ์ด ์์ ํ๊ธฐ์ ์ถฉ๋ถํ๊ณ ๊ตฌ์ถํ๊ธฐ์ ์ถฉ๋ถํ ๊ฐ๋จํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ๊ฐ์ฌํฉ๋๋ค!
๋ฏธ๋ฌ ๊ธฐ๋ฅ์ด ๋นจ๋ฆฌ ์ถ๊ฐ๋์์ผ๋ฉด ํฉ๋๋ค~
์ด ๋ฌธ์ ๋ ๋ฐ์ํฉ๋๋ค. ์ํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ด ๋ฐฐํฌ ์ ๋ต์ ์ด๋ฏธ ๋ด๋ถ PyPI ์๋ฒ๋ฅผ ์ฐธ์กฐํ๋ ์์คํ ์ ์ฒด pip.conf๋ฅผ ์ค์ ํฉ๋๋ค. ๋๋๊ฒ๋ ์ด ๊ตฌ์ฑ์ Pipenv์์ ๋ฌด์๋ฉ๋๋ค.
๋ด๋ถ PyPI๋ฅผ ์ด๋/์ด๋ฆ ๋ณ๊ฒฝํ๋ ค๋ฉด Pipfiles๊ฐ ์๋ ์ฌ๋ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ๋ฐ์ดํธํ๊ณ ํด๋น Pipfile.lock ํ์ผ์ ๋ค์ ์์ฑํด์ผ ํฉ๋๋ค. ๋ฏธ๋ฌ ์ต์ ์ ์ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Pipenv๊ฐ Pip์ ๋ํ ์์คํ ๊ตฌ์ฑ์ ์ฝ์ ์๋ง ์๋ค๋ฉด ์๋ํ๊ณ ๋ ์ค๋ณต๋๋ ๋๋์ด ๋ค ๊ฒ์ ๋๋ค.
PR ํ์ํฉ๋๋ค btw
์๋ . ์ ์๊ฒ๋ ๊ฐ์ ์๊ตฌ ์ฌํญ์ด ์์ง๋ง ์ด ๋ฌด์ ๊ธฐ๋ฅ์ ๋ค๋ฅธ ํฐ์ผ์ผ๋ก ๋ถํ ํ๊ณ ์ถ์ต๋๋ค.
์์๋๋ ํ๋ ์ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ๋ฒ์งธ ํฐ์ผ์์ โ์ฌ์ ์ ์ต์ ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด CI ๋๋ ๊ธฐํ ๋ด๋ถ์์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ๋ ํ์ฌ ํ๋ก๋์
์์ pipenv๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง๋ง Arrifactory Pypi ์ ์ฅ์์ ๋๋ฌํ๊ธฐ ์ํด ์ ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ Pipfile์ ์๋์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค๋ ์ ์ ๋ชจ๋ ์ฌ๋์๊ฒ ๋๋ฌด ์์ฃผ ์๊ธฐ์์ผ์ผ ํฉ๋๋ค(์ฐธ๊ณ ๋ก Nexus๋ Pypi๋ ์ํํฉ๋๋ค. ๋ฌด๋ฃ๋ก ์บ์ํ๊ณ t๋ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค!). ์ฐ๋ฆฌ๋ ๋งค์ฐ ์ ํ์ ์ธ ๋ฐฉํ๋ฒฝ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ํ์ฌ ๋ด๋ถ์์ ์ธ๋ถ ์ข
์์ฑ์ ์บ์ํ๋ ๊ฒ์ ๋งค์ฐ ์ข์ ๋ฐฉ๋ฒ์ด๋ฏ๋ก ๋ฐฑ์
ํ๊ณ ์ทจ์ฝ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
์ผ๋ฐ ๋๋ ์ฌ์ฉ์ ๊ตฌ์ฑ ํ์ผ๊ณผ ์ ์ฌํ ๊ฐ๋จํ ๊ธฐ๋ฅ(์: pip ๋๋ npm์ ๋ํด ์ด๋ฏธ ์ํํ ๊ฒ๊ณผ ๊ฐ์ด)์ผ๋ก ๋ชจ๋ ์ํฌ์คํ
์ด์
์ ๋ฐฐํฌํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ค์๋ฅผ ๋ ํ๋๋ก ํ๋ ๊ฒฝ์ฐ ์ ์๊ฒ ์๋ฒฝํ ๊ฒ์
๋๋ค.
๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์ณค์ ์๋ ์์ง๋ง ์ด๊ฒ์ ํ๊ท์ฒ๋ผ ๋ณด์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ ์ ๋์ 11.6.0์ ์ฌ์ฉํ๊ณ pipenv๋ ๋ด๋ถ pypi ๋ฏธ๋ฌ๋ฅผ ๊ฐ๋ฆฌํค๋ pip.conf์ ์ค์ ์ ๊ธฐ๊บผ์ด ์์ํ์ต๋๋ค.
์ด๊ฒ ์ธ์ ๊ณ ์ฅ๋ฌ๋์ง ์์ธ์? ์ด๊ฒ์ ์ฐ๋ฆฌ ์ปจํ ์คํธ์์ pipenv๋ฅผ ์์ ํ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ญ๋๋ค. ์ค๋ซ๋์ ์ ์์ ์ผ๋ก ์๋ํ๋๋ฐ ์ด๊ฒ์ "๋๋ฝ๋ ๊ธฐ๋ฅ"์ผ๋ก ๋ณด๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ถ๋ช ํ ํ์๋ฉด: 2018.05.18๋ก ์ ๊ทธ๋ ์ด๋ํ ํ Pipfile[.lock]์ ์ง์ ๋ ๋ฏธ๋ฌ๋ฅผ ์ฌ์ฉํ๋๋ผ๋ pipenv๋ pypi.org์์ ์ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๊ณ ์๋ํฉ๋๋ค.
๋ด๊ฐ ๋ณด๊ณ ์๋ ๊ฒ์ ์ด ๋ฌธ์ ์ ๋ณ๊ฐ์ ๋ฌธ์ ์ผ ์๋ ์์ต๋๋ค.
@brettdh ๋ณธ์ธ์ ํ๊ฒฝ์ ๋ณด์ง ์๊ณ ๋ ๊ตฌ๋ถํ๊ธฐ ์ด๋ ต์ง๋ง ๊ฐ์ ๋ฌธ์ ๋ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ฆด๋ฆฌ์ค ๊ฐ์ ์ด๋ฑ๋ถํ์ฌ ์ ํํ ์ด๋๊ฐ ๋ณ๊ฒฝ๋์๋์ง ํ์ธํ๊ณ ์ด์ ๋ํ ์ ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๋ฅผ ์ํด PR์ ํ๊ณ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ๊ธฐ๋ณธ ์ค์ ์ ๋นํด ํดํ๋์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ง ์ถ์๋์ง ์์ pip 10 ์ ๋ฐ์ดํธ์ ๋ฌผ๊ฒฐ์ ํฉ์ธ์์ ์ ์์ง๋ง @JacobHenner ๊ฐ ์์ง ์ถ๊ฐํ์ง ์์ ๊ฒฝ์ฐ ํฐ ์ด๋ ค์ ์์ด ์ด๋ฅผ ์ ํํ ์ ์๋ค๊ณ ๋ฏฟ์ต๋๋ค.
๊ณต์ PyPi์ ์บ์ฑ ํ๋ก์๋ก devpi๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. pip ์์ฒด์ ๊ฒฝ์ฐ pip๊ฐ ๋ชจ๋ ์์ฒญ์ โโ๋ํด ๋ก์ปฌ devpi ์๋ฒ๋ฅผ ์ฌ์ฉํ๋๋ก /etc/pip.conf
๋ฐ /usr/lib64/python3.6/disutils/distutils.cfg
๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ pipenv๋ ์ด๋ฌํ ์์คํ
์ ์ฒด ์ค์ ์ ๋ฌด์ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ฏ๋ก devpi ์๋ฒ๋ฅผ ์ฐธ์กฐํ๋๋ก Pipfile์ [[source]]
๊ตฌ์ฑ ์ค์ ์ ์์ ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ Pipfile์ ์ธ๋ถ์ ๊ฒ์ํ๋ฉด ์ธ๋ถ ๊ธฐ์ฌ์๊ฐ ์ค์ ๋ก ์์ ์ ํ๊ฒฝ์ ๊ตฌ์ถํ๊ธฐ ์ํด [[source]]
์ค์ ์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค.
pipenv๋ /etc/pip.conf
๋ฐ /usr/lib.../distutils.cfg
์ ์ ์ญ ์ค์ ์ ์กด์คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@polski-g
๊ณต์ PyPi์ ์บ์ฑ ํ๋ก์๋ก devpi๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
๋ฅ์์ค ์ ์ฅ์, ํ์ง๋ง ๊ฐ์ ์๊ฐ์ ๋๋ค.
๊ทธ๋ฌ๋ pipenv๊ฐ ์ด๋ฌํ ์์คํ ์ ์ฒด ์ค์ ์ ๋ฌด์ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@techalchemy๊ฐ ์ธ๊ธํ๋ฏ์ด pipenv(11.6.0)๋ pip.conf
(homedir๋ ๋ง์ฐฌ๊ฐ์ง)๋ฅผ ์กด์คํ์ง๋ง ์ต์ ๋ฒ์ ์ ๊ทธ๋ ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ํนํ ํ๋ ์ฝ๋ฉ๋ pypi.org URL์ด ์ด๋๊ฐ์ ์์ต๋๋ค(์ข
์์ฑ resolution, IIRC) ์ฌ์ ์ํ ์ ์์ต๋๋ค.
pipenv๋ /etc/pip.conf ๋ฐ /usr/lib.../distutils.cfg์ ์ ์ญ ์ค์ ์ ์กด์คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋์ํฉ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ์ฌ์ฉ ์ฌ๋ก์์ distutils.cfg
๋ฅผ ์์ ํ ํ์๊ฐ ์์์ต๋๋ค.
IIRC์๋ pip.conf๋ฅผ ์กด์คํ์ง ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์์ง๋ง ์ด๋ฅผ ์ฐพ์ผ๋ ค๋ฉด ๋ฌธ์ ์ถ์ ๊ธฐ๋ฅผ ์์ธํ ์ดํด๋ด์ผ ํฉ๋๋ค. ์ด์จ๋ ๋ฐฐ๋ ํญํดํ๊ณ PyPI ๋ฏธ๋ฌ๋ง์ด ๊ฑฐ์ ์๋ฃ๋์์ผ๋ฏ๋ก ๊ฐ๊น์ด ์ฅ๋์ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒ์ ๋๋ค.
๋๋ ์ด ๊ธฐ๋ฅ์ด ๋ค์ ๋ฆด๋ฆฌ์ค์ ์ถ์๋ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
๋ํ ์ด๊ฒ์ ๋ํด ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๊ตฌ์ฑ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํด ์ฌ๊ธฐ์ ๊ตฌ์ฑ ํ์๋ฅผ ์์ฑํ ํ .load()
๋ฅผ ํธ์ถํด์ผ ํ ์๋ ์์ต๋๋ค.
https://github.com/pypa/pipenv/blob/master/pipenv/project.py#L573 -#L577
@uranusjr ๋ฏธ๋ฌ๋ง ๊ตฌ์ฑ์ด ์๋ํ๋ ํ(์ฆ, ๋ด๊ฐ ์ธ๊ธํ ํ๋์ฝ๋ฉ๋ pypi.org URL์ ์ฌ์ฉํ์ง ์์) pipenv๊ฐ ์ด์ ๋ํ ์์ฒด ๊ตฌ์ฑ์ ๊ฐ๊ณ pip๋ฅผ ๋ฌด์ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
@brettdh ๋ด ์ง์ ์ ํ์ธํ๊ณ ๊ทํ์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋์ง ํ์ธํ ์ ์์ต๋๊น?
๊ทํ์ ํ๊ฒฝ์์ ์ฌ์ฉ ์ฌ๋ก?
>
@JacobHenner ๋ค, ๊ฐ์ฌํฉ๋๋ค. --pypi-mirror
์ต์
( pipenv install
, pipenv lock
)์ ์ฌ์ฉํ ์ด๊ธฐ ํ
์คํธ๋ ์ ๋๋ก ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. PR์ ์์ ์ ์์ ๋จ๊ฒผ์ต๋๋ค.
ํ์ง๋ง pypi.org์ ๋ํ ํ๋์ฝ๋ฉ๋ URL์ด ์ฌ์ ํ pipenv ์์ค์ ํฉ์ด์ ธ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๊ฒ์ด ์ฝ๊ฐ ๊ฑฑ์ ๋ฉ๋๋ค. [[source]]
ํญ๋ชฉ์์ ์ด๋ค ํญ๋ชฉ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ ์๋์๋์ง ํ์ ํ ์ ์์ผ๋ฉฐ ์์ ๋ฌธ์ ๋ฅผ ์ผ์ผํจ ์ํฌํ๋ก๊ฐ ์ ํํ ๊ธฐ์ต๋์ง ์์ต๋๋ค. ๊ทธ๋์ ๊ณ ์ณ์ก๋ค๊ณ ๋ง์๋๋ฆฌ๊ธฐ ์ด๋ ต์ต๋๋ค. ๐ฌ
์, ์ด๋ฒ ๋ฆด๋ฆฌ์ค ์ดํ์ ์ฃผ์ ์ฝ๋ ์ ๋ฆฌ๋ฅผ ๊ณํํ๊ณ ์์ต๋๋ค. Cli ํญ๋ชฉ์ cli๋ก ์ด๋ํ๊ณ ์์ธ๋ฅผ ๋ฒ๋ธ๋งํ๊ณ ๊ทธ๊ณณ์์ ๋ชจ๋ ์ข ๋ฃ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ค๋ณต ์ฝ๋๋ฅผ ์ค๋ณต ์ ๊ฑฐํ๋ ๋ฑ ๋ง์ ์์ ์ด ํ์ํ ๊ฒ์ด๋ฉฐ ์์ ๋ด์ฌ๋ฅผ ์ํ๋ ์ฌ๋์ด ์๋ค๋ฉด ๋์์ ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๋ฐฉ๊ธ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์๊ณ ์ฌ์ ํ ์์ค์์ pypi.org๋ฅผ ํ๋์ฝ๋ฉํ๊ณ ์์ต๋๋ค. ๋ชฉํ๋ ํ๊ฒฝ ๋ณ์ ๋๋ pypi-mirror๋ฅผ ๊ฐ์ ธ ์์ [[source]]์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋๋ ๊ฒ์ ๋๊น?
ํธ์งํ๋ค:
๋ฐฉ๊ธ ์ฝ๋๋ฅผ ํํค ์ณค์ต๋๋ค .. ๋น์ ์ด ๊ฐ์ง๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค
if PIPENV_TEST_INDEX:
DEFAULT_SOURCE = {
u"url": PIPENV_TEST_INDEX,
u"verify_ssl": True,
u"name": u"custom",
}
else:
DEFAULT_SOURCE = {
u"url": u"https://pypi.org/simple",
u"verify_ssl": True,
u"name": u"pypi",
}
PIPENV_TEST_INDEX๋ฅผ ํ๊ฒฝ ๋ณ์ PIPENV_PYPI_MIRROR๋ก ๋ณ๊ฒฝํ๋ค๋ฉด ์ข์ ์์์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๊ธฐ์์ ๋ ผ์๋ ์๋ฃจ์ ์ ์ค๋ซ๋์ ๊ตฌํ๋์์ต๋๋ค. ์ธ์ฉํ ์ค๋ํซ์ ๊ธฐ๋ณธ๊ฐ ์ ๋๋ค. ์ฆ, Pipfile์ ์์ฑํ ๋ ์์ค๋ฅผ ์ ๊ณตํ์ง ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
์๋์, ์์ค๋ Pipfile์์ ๋ณ๊ฒฝ๋์ด์๋ ์ ๋ฉ๋๋ค. ์ด๋ฒ ๋ณํ์ ๋ชฉํ
์ฌ์ฉ์๊ฐ ๋ณ๊ฒฝ ์์ด _๋ฏธ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ PyPI URL์ ์ฌ์ ์ํ ์ ์๋๋ก ํ์ต๋๋ค.
ํํ์ผ.
@JacobHenner ๋ฏธ๋ฌ ์ฒ๋ฆฌ ์ฝ๋๋ ์์ค ๋ชฉ๋ก์ ์ฌํ ์ฒ๋ฆฌํ๊ณ pypi.org
URL์ ์ง์ ๋ ๋ฏธ๋ฌ์ ๋ํ ์ฐธ์กฐ๋ก ๋ฐ๊ฟ๋๋ค .
์ด๊ฒ์ด Pipfile
์ ๋ช
์์ ์ธ pypi.org
ํญ๋ชฉ์ด ์๋ ๊ฒฝ์ฐ์๋ ๋ฏธ๋ฌ ์ฌ์ ์๊ฐ ์๋ํ๋๋ก ํ๋ ๊ฒ์
๋๋ค. pipenv
๋ ๋์ผํ ๋
ผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒด ๊ธฐ๋ณธ ์์ค๋ ์ฌ์ ์ํฉ๋๋ค.
ํ์ฌ ํด๋น ํ์ฒ๋ฆฌ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด ๊ธฐ๋ฅ ์์ฒญ์ด ์๋๋ผ ์ด๋ฏธ ๊ตฌํ๋ ๊ธฐ๋ฅ์ ๋ํ ์๋ก์ด ๋ฒ๊ทธ ๋ณด๊ณ ์์ ๋๋ค.
๋ง์ง๋ง ๋๊ธ์ @kylecribbs๋ฅผ ์ํ ๊ฒ ๊ฐ์๋ฐ์?
@JacobHenner ์, ์ฃ์กํฉ๋๋ค. ์ด ๋ณ๊ฒฝ ์ฌํญ์ด ์๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ์ง ๋ชปํ๋ค๊ณ ๊ทํ์ ์๊ฒฌ์ ์๋ชป ํด์ํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ค์ ๋ก ๋ฌด์์ธ์ง ๋ช ํํ ํ๋ ค๋ Kyle์ ๋ต๋ณ์ด ์๋๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค๋ฅธ URL์ด ์๋ PyPI๋ง ์ฌ์ ์ํด์ผ ํฉ๋๋ค. ์๋ง๋ ๋ช ๊ฐ์ง ๋ค๋ฅธ PyPI URL์ด ์ฌ์ฉ ์ค์ผ ๊ฒ์ด๋ฏ๋ก ๋์ดํ ์ ์์ผ๋ฉฐ, ํ๋๋ฅผ ๋์น๋ฉด ๋๊ตฐ๊ฐ ๋ฒ๊ทธ๋ฅผ ์ ๊ณ ํ๊ณ ์ถ๊ฐ๋ ๊ฒ์ด๋ฉฐ ๊ณง ๋ชจ๋ URL์ ๊ฐ๊ฒ ๋ ๊ฒ์ ๋๋ค.