ํ์ด์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌํ๊ธฐ - pipx ํธ
ํ์ด์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌํ๊ธฐ - pipx ํธ ๊ด๋ จ
ํ์ด์ฌ์ ์ค๋ ์ฌ์ฉํด์์ง๋ง ํ์ด์ฌ์ผ๋ก ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌํ ๋๋ ํญ์ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ์ต๋๋ค.
์ด ๊ธ์์ ์ดํด๋ณด๋ pipx
๊ฐ ์ฌ์ฉ๋๋ ๊ฒ์ ์ฌ๋ฌ ์น ์ฌ์ดํธ๋ ๋ฌธ์์์ ๋ง์ด ๋ด์์ง๋ง, ์ฒ์์ '๋ ์ฌ์ฉํ๋ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ๋ง ์ฌ์ฉํ๋ฉด ๋์งโฆ ๋ญ ๋ ๋ฐฐ์์ผ ํ๋' ํ์ต๋๋ค. ํ์ง๋ง pipx
๋ฅผ ์ฌ์ฉํ๊ณ ๋๋ ์ ๊ฐ ์ฝ์ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ํ์ด์ฌ ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ด ์์ฒญ ์ง์ ๋ถํ๊ตฌ๋ ํ๋ ์๊ฐ์ด ๋ค์์ต๋๋ค. ์ฌ๋ฌ๋ถ๋ ์ ๊ฐ ๋๋ ์ด๋ฐ ์ฒ์ง๊ฐ ๊ฐ๋ฒฝํ๋ ๋๋์ ๋ฐ์ ์ ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ๊ทธ๋์ ์ฌ๋ฌ๋ถ์๊ฒ๋ pipx
๋ฅผ ์๊ฐํ๊ณ ์ ํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ํ์ด์ฌ์ ๋น๋กฏํด C, C++, ์๋ฐ, Rust, Golang ๋ฑ ๋ค์ํ์ง๋ง, ์ฌ๊ธฐ์์๋ ํ์ด์ฌ์ผ๋ก ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํ์ด์ฌ์ ์ฌ์ฉํด ๊ฐ๋ฐ์ ์งํํ๋ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก๋ ๋๋ค์์ ๊ฐ๋ฐ์๊ฐ ๋ฌธ์๋ ์ํ์ ์ฐพ์๋ณด๊ฑฐ๋ ๋๋ ChatGPT์ ๊ฐ์ ์น๊ตฌ๋ค์ ํตํด ๋์์ ๋ฐ์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํฉ๋๋ค. ๊ทธ์ ๋ฐํด์ ํ๋ก๊ทธ๋จ ๋ฐฐํฌ๋ '์ด๋ป๊ฒ๋ ๋์ง ์์๊น? ๊ทธ๊ฑด ์ฐ๋ ์ฌ๋์ ๋ชซ ์๋์ผ?' ํ๋ ์์ผ๋ก ๋ฌด๊ด์ฌํฉ๋๋ค.
์ค์ ๋ก ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค. ๋จ์ํ pip
๋ช
๋ น์ ์ฌ์ฉํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ฑฐ๋ ์
๊ทธ๋ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
pip install package_name
๋ฌผ๋ก pip ๋ช
๋ น์ ๊ธฐ๋ณธ์ ์ผ๋ก PyPI์ ๋ฑ๋ก๋ ํจํค์ง๋ง ๊ฐ์ ธ์ต๋๋ค. ์์ฆ ๋ง์ด ์ฌ์ฉ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ pip
์ ๊ฐ์ ๋ช
๋ น์ด๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์๋ฐ๋ maven์ด๋ gradle ๊ฐ์ ์น๊ตฌ๋ค์ ์ฌ์ฉํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ์ ์๊ณ NodeJS๋ npm
์ด๋ yarn
๋ช
๋ น์ ์ฌ์ฉํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. pip
์ ๋ง์ฐฌ๊ฐ์ง๋ก gradle
์ด๋ npm
๊ฐ์ ๋๊ตฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ํ๋ ๊ณต๊ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฅ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ ์ง๋ง ๋จ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ ๋ชฉ์ ์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๊ธฐ ์ํด ํ์ํ ๊ฒ์ด์ง, ์ค์ ๋ก ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ค๋ ํ๋ก๊ทธ๋จ์ด ์ด๋ค ์ ์ฅ์๋ฅผ ํตํด ์ ๊ณต๋์ง๋ ์์ต๋๋ค.
Console Script (์ฝ์ ์คํฌ๋ฆฝํธ)
ํ์ด์ฌ์ ๋ค๋ฅธ ์ธ์ด์ ๋ฌ๋ฆฌ ํ์ด์ฌ ํ๋ก๊ทธ๋จ์ ํจํค์งํ ๋ ํ์ด์ฌ ํ์ผ์ ์ ธ[1]์์ ์ง์ ์คํํ ์ ์๋๋ก ๊ตฌ์ฑํด๋๋ฉด ์ด์์ฒด์ ์ ํด๋น ํจํค์ง๋ฅผ ์ค์นํ์ ๋ ์คํ ํ์ผ์ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์ด๊ฒ์ โConsole Script (์ฝ์ ์คํฌ๋ฆฝํธ)โ๋ก ๋ถ๋ฆ ๋๋ค. ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ธ์์ ๋น ๋ฅด๊ฒ ํ์ด์ฌ ํจํค์ง์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด
์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ณผ์ ์ ๋จผ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด Asana์์ ๋ฐ์ดํฐ๋ฅผ ๋งค์ผ ์๋ฒฝ์ ๋ถ๋ฌ์ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง ํ์ด์ฌ ์คํฌ๋ฆฝํธ์ธ asana_project_sync.py
ํ์ผ์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ[2]์ผ๋ก ์ง์
ํด์ ์
ธ์์ ํ์ด์ฌ์ ์ง์ ์คํํด์ผ ํฉ๋๋ค.
source .venv/bin/activate
python asana_project_sync.py
๋ฌผ๋ก python ๋ช
๋ น์ ์ง์ ์คํฌ๋ฆฝํธ ํ์ผ ์ด๋ฆ์ ๋ช
์ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ asana_project_sync.py
์๋ if __name__ == โ__main__โ
๋ก ์์ํ๋ ๊ณณ์์ main()
๊ณผ ํจ์๋ฅผ ๋ง๋ค์ด์ ธ ์์ด์ผ ํฉ๋๋ค.
์ด๋ ๊ฒ ์
ธ์์ ์ง์ ์คํ ๊ฐ๋ฅํ ํ์ด์ฌ ์คํฌ๋ฆฝํธ๊ฐ ๋ ๋ง์์ง๋ฉด ์์ฐ์ค๋ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค python
๋ช
๋ น์ ์ง์ ๋ช
์ํด์ฃผ๋ ์๊ณ ๋ก์์ ๋ณดํ์ผ ํฉ๋๋ค. ๋ฌผ๋ก ๋งฅ์ด๋ ๋ฆฌ๋
์ค ํ๊ฒฝ์ ํ์ด์ฌ ์คํฌ๋ฆฝํธ๋ฉด ํ์ผ์ ์ฒซ๋ฒ์งธ์ค์ ํ์ด์ฌ ์ธํฐํ๋ฆฌํฐ์ ์คํ ๊ฒฝ๋ก๋ฅผ ๋ช
์ํ๊ณ ํ๋ก๊ทธ๋จ์ ์คํ ๊ถํ์ ์ ๊ณตํด์ผ ํฉ๋๋ค.
์ฌ๊ธฐ๊น์ง๋ง ๋ค์ด๋ ๋จธ๋ฆฌ๊ฐ ์ด์ง์ด์งํ์์ฃ ? ๊ทธ๋ ์ง๋ง ์์ง ์ด์ง์ด์งํ์ค๋๊ฐ ์๋๋๋ค. ํ์ด์ฌ ์คํฌ๋ฆฝํธ๊ฐ ์๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ๋ค์ด๊ฐ์ ํ๋ก๊ทธ๋จ์ ์คํํด์ผ ํฉ๋๋ค.
์ ๋ฆฌํ๋ฉด, ์ ธ์์ ์ง์ ์คํ ๊ฐ๋ฅํ ํ์ด์ฌ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค.
- ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ ์ง์
pip show
๋ช ๋ น์ผ๋ก ํ์ด์ฌ ํจํค์ง ์ค์น ์์น ํ์ธ- ํจํค์ง ์ค์น ์์น๋ก ์ด๋
python
๋ช ๋ น์ผ๋ก ์คํฌ๋ฆฝํธ ์คํ
์ ธ์์ ์ง์ ์คํ ๊ฐ๋ฅํ ํ์ด์ฌ ์คํฌ๋ฆฝํธ ์คํ์ ์ํด ์ด๋ ๊ฒ ๋งค๋ฒ 4๋ฒ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ๋ง ํฉ๋๋ค. ์๋ฌด๋ฆฌ ์ฐ๋ฆฌ๊ฐ ์ ธ์ ์ฌ์ฉํ๋ ๋ฐ ์ต์ํ๋ค๊ณค ํ์ง๋ง, ํ๋ก๊ทธ๋จ ์คํ ๊ณผ์ ์์ ํ์ดํ ์ค๋ฅ๋ฅผ ๋ด๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ ์ ๊ณตํด์ผ ํ๋ ์ธ์๋ฅผ ์๋ตํ๋ค๊ฑฐ๋ ํ๋ ์ค์๋ฅผ ๋ด๊ธฐ๋ ์ฝ์ต๋๋ค.
๊ทธ๋์ ์ ธ์์ ํ์ด์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ์ฝ์ ์คํฌ๋ฆฝํธ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฝ์ ์คํฌ๋ฆฝํธ๋ ํ์ด์ฌ ํจํค์ง์ ํ ๋ ๋ง๋ค์ด์ง๋ฉฐ, ์ ๊ณผ์ ์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ ํฐ๋ฏธ๋์์ ๋ช ๋ น์ด๋ก ์ง์ ์คํํ ์ ์์ต๋๋ค. ๋คํ์ค๋ฝ๊ฒ๋ ํ์ด์ฌ์ ํจํค์งํ ๋ ํน์ ํ์ด์ฌ ์คํฌ๋ฆฝํธ์ ์๋ ํจ์ ํ๋๋ฅผ ํ๋ก๊ทธ๋จ ์ง์ ์ ์ผ๋ก ์ผ์ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋ฉ๋๋ค. ์ฝ์ ์คํฌ๋ฆฝํธ๊ฐ ์ ๊ณต๋๋ ํจํค์ง๋ ํ์ด์ฌ ํจํค์ง๋ฅผ ์ค์นํ์ ๋ ์ ธ์์ ์ฝ์ ์คํฌ๋ฆฝํธ ์ด๋ฆ์ ์ ๋ ฅํ๊ณ ์คํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ์คํฌ๋ฆฝํธ๊ฐ ์คํํ๋ ์ง์
์ ์ด asana_project_sync.py
ํ์ผ์ ์๋ main
ํจ์์ด๋ฉด ์ฝ์ ์คํฌ๋ฆฝํธ์ ์ด๋ฆ์ asana_project_sync
๋ก ๋ช
๋ช
ํ ์ ์์ ๊ฒ์
๋๋ค.
์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด
์ด์ ์ฐ๋ฆฌ์ ํฐ๋ฏธ๋ ํ๋ก๊ทธ๋จ์์ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ ์ง์
asana_project_sync
๋ช ๋ น ์คํ
์ฌ๋ฌ๋ถ์ด ๋ณด์๊ธฐ์ ์ด๋ค๊ฐ์? ์์์ ์ดํด๋ดค๋ ๊ณผ์ ๊ณผ ๋น๊ตํด ๋ด๋ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ํ์ด์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ด ํจ์ฌ ์ฌ์ด ๊ฒ ๊ฐ์ฃ ? ์ค์ ๋ก๋ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ด์ฌ ์คํฌ๋ฆฝํธ์๋ __name__
์ด __main__
์ธ์ง ๋น๊ตํ๋ if
๋ฌธ์ด ์์ด๋ ๋๊ธฐ์ ํจ์ฌ ๋ ๋จ์ํ ์คํ ๋ฐฉ๋ฒ์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
PIPX๋ฅผ ์์ํ๊ธฐ์ ์์
์ด์ pipx
์ด์ผ๊ธฐ๋ฅผ ํ๊ฒ ์ต๋๋ค. ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค๊ณ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ณผ์ ์ผ๋ก ๋ง์กฑํ๋ค๋ฉด pipx
๊ฐ์ ๋๊ตฌ๊ฐ ์ ํ์ํ ์ง ์์ํ ๊ฒ์
๋๋ค. ์ค์ ๋ก pipx
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํ์ด์ฌ์ด ์ค์น๋์ด ์์ด์ผ ํ๊ธฐ๋ ํฉ๋๋ค. ์ด๋ฐ ์ ์ ์์ด์๋ ์๋ฐ ์ธ์ด๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ์๋ฐ๋ก ๋ง๋ค์ด์ง ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌํ ๋ JVM์ด ์ค์น๋๋ ์ปดํจํฐ์ ์ด๋ฏธ ์๊ฑฐ๋ ๊ฐ๋ฐ์๊ฐ ํด๋น ํ๋ก๊ทธ๋จ์ JVM์ด ํจ๊ป ๋ฐฐํฌํฉ๋๋ค.
์ง๊ธ๊น์ง ์ดํด๋ณธ ๊ฒ์ฒ๋ผ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ด์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ๊ฒ ์คํํ ์ ์์์๋ ๋ถ๊ตฌํ๊ณ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ ์์ฑํด์ผ ํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ด ์๋์ฐ๋ ๋งฅ ์ด์์ฒด์ ์ฌ์ฉ์๋ฉด ๋จ์ํ '์์คํ ์ ์ค์น๋์ด ์๋ ํ์ด์ฌ ํ๊ฒฝ์ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ณตํ๋ ํ์ด์ฌ ํจํค์ง๋ฅผ ์ค์นํ๋ฉด ๋์ง, ๋ญ๊ฐ ๋ฌธ์ ์ผ!'๋ผ๊ณ ํ ์๋ ์์ต๋๋ค.
ํ์ง๋ง ์์คํ ์ ์ค์น๋ ํ์ด์ฌ ํ๊ฒฝ์ ๊ธ๋ก๋ฒ ํ๊ฒฝ์ผ๋ก ์ฌ๊ธฐ์ ์ง์ ์ค์นํ๊ฒ ๋๋ฉด ํ๋ก๊ทธ๋จ๋ง๋ค ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๋ค์ด ๋ฌ๋ผ ํ๋ก๊ทธ๋จ์ด ์คํ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํฉ๋๋ค.
๋์ฑ์ด ๋ฆฌ๋ ์ค ๋ฐฐํฌ๋ณธ๋ค์ ์๋์ฐ, ๋งฅ๊ณผ ๋ฌ๋ฆฌ ํ์ด์ฌ์ผ๋ก ๊ตฌํ๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ์์คํ ์์ ์ง์ ์ด์ฉ๋๊ณ ์์ด, ๋ฆฌ๋ ์ค ๋ฐฐํฌ๋ณธ ์ ์ฒด์์ ์ง์ ํ์ด์ฌ์ ์ปดํ์ผํด์ ๋ฒ๋ค๋ง๋ ๋ฐฐํฌ๋ณธ ์ ์ฉ ํจํค์ง ํ์ผ๋ก ์ ๊ณตํฉ๋๋ค. 2021๋ ์ด์ ์๋ ์์คํ ์ ๋ฒ๋ค๋ง๋ ํ์ด์ฌ ํ๊ฒฝ(๊ธ๋ก๋ฒ ํ๊ฒฝ)์ root ์ฌ์ฉ์๊ฐ ์ง์ ๊ด๋ฆฌํ๋ ํจํค์ง(์ด๋ฅผ ์ธ๋ถ ํจํค์ง๋ก ๋ถ๋ฆ ๋๋ค)๋ฅผ ์ค์นํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง๋ง, ์ด๋ก ์ธํด ์ต์ ์ ๊ฒฝ์ฐ ๋ฆฌ๋ ์ค๋ฅผ ์ฌ์ค์น ํด์ผ ํ๋ ์ํฉ๊น์ง ๋ฐ์ํจ์ ๋ฐ๋ผ ๋ ผ์๋ฅผ ๊ฑฐ์ณ PEP 668์ด Accept ๋์์ต๋๋ค.
PEP 668์์ ๊ถ์ฅํ๋ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ํ์ด์ฌ ํจํค์ง๋ฅผ ๋ฐฐํฌํ ๋ ์ ํธ๋๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฐ ์ด์ ๋ก ์ธํด ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ด ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ ๊ฒ์ ๋๋ค.
๊ทธ๋ ์ง๋ง ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ฝ์ ์คํฌ๋ฆฝํธ๊ฐ ์ค์น๋ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๊ณ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๊ฒ์ ๋ถํธํ ์๋ฐ์ ์์ฃ . ๋ฌด์๋ณด๋ค ๋ค์์ ์ฌ์ฉ์๊ฐ ์ด์ฉํ๊ฒ ๋ง๋๋ ๊ณผ์ ์์ โ๊ฐ์ ํ๊ฒฝโ์ ๋ง๋ค๊ณ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๋ ๊ณผ์ ๋ถํฐ ์ํ์น ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
PIPX ์ค์นํ๊ธฐ
Flask ๊ฐ๋ฐ์์ธ Armin Ronacher๋ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์
ธ์์ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ ์ง์
ํ์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ํ์ด์ฌ ํ๋ก๊ทธ๋จ์ธ pipsi
๋ผ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ์ต๋๋ค.
ํ์ด์ฌ ํจํค์ง ์์ํ(Python Packaging Authority)๋ pipsi
์ NodeJS์ npx
์์ ์ํฅ์ ๋ฐ์ ์ฝ์ ์คํฌ๋ฆฝํธ๊ฐ ์ ๊ณต๋๋ ํ์ด์ฌ ํจํค์ง ๊ด๋ฆฌ ๋๊ตฌ์ธ pipx
๋ฅผ ๊ฐ๋ฐํ์ต๋๋ค. pipx
๋ฅผ ์ฌ์ฉํด ์ฝ์ ์คํฌ๋ฆฝํธ๊ฐ ์ ๊ณต๋๋ ํ์ด์ฌ ํจํค์ง๋ฅผ ์ค์นํ๋ฉด ์ฌ์ฉ์๊ฐ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ค๊ณ ๊ฐ์ ํ๊ฒฝ์ ํ์ฑํํ๊ณ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ ๊ณผ์ ์ ๊ฑฐ์น์ง ์์๋ ๋ฉ๋๋ค.
pipx
๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ํ์ด์ฌ ๊ธ๋ก๋ฒ ํ๊ฒฝ์ ๋จผ์ pipx
๋ฅผ ์ค์นํด์ผ ํฉ๋๋ค. ์ด์์ฒด์ ๋ณ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ค์นํฉ๋๋ค.
๊ด๋ฆฌ์ ๋ชจ๋์ โ๋ช ๋ น ํ๋กฌํํธโ ๋๋ โํ์์ ธโ์์ ์คํํฉ๋๋ค.
pip install pipx
homebrew๊ฐ ์ค์น๋์ด ์์ ๋๋ง brew
๋ช
๋ น์ ์ฌ์ฉํฉ๋๋ค.
sudo pip install pipx
# brew๊ฐ ์์ ๊ฒฝ์ฐ
brew install pipx
๋ฐ๋น์ ๋๋ ์ฐ๋ถํฌ ๊ณ์ด
sudo apt install pipx
๋ ๋ํ ๊ณ์ด์ ๋ชจ๋ ๋ฆฌ๋ ์ค
sudo dnf install pipx
๋ฆฌ๋
์ค์ ๊ฒฝ์ฐ ์์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ๋ฒ๋ค๋ง๋ ํ์ด์ฌ์ด ์ค์น๋ฉ๋๋ค. ์ฌ๊ธฐ์ root
์ฌ์ฉ์๊ฐ ์ง์ ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ผ๋ฏ๋ก ๋ฐฐํฌ๋ณธ ์ ์ฅ์์์ ์ง์ ์ ๊ณตํ๋ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค. pipx
๋ฅผ ์ค์นํ ๋ค์์๋ ๋ฐ๋์ ๋ค์ ๋ช
๋ น์ ์คํํด์ผ ํฉ๋๋ค.
pipx ensurepath
pipx
ํจํค์ง๋ฅผ ์ค์นํ๊ณ ensurepath
๋ช
๋ น๊น์ง ์คํํ์ผ๋ฉด ์ด์ pipx
๋ฅผ ์ฌ์ฉํด ํจํค์ง๋ฅผ ์ค์นํ ์ฐจ๋ก์
๋๋ค.
PIPX๋ก ํจํค์ง ์ค์นํ๊ธฐ
pipx
๋ก ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํฉ๋๋ค.
pipx install package_name
.pipx install
๋ก ์ค์น๋ ํ์ด์ฌ ํจํค์ง์ ์ฝ์ ์คํฌ๋ฆฝํธ๋ <User Folder>/.local/bin
ํด๋ ์๋์ ๋ฐ๋ก๊ฐ๊ธฐ๊ฐ ๋ง๋ค์ด์ง๋๋ค. ์์ ๋ก ์คํํด๋ณผ ํ์ด์ฌ ํจํค์ง๋ก cowsay
๋ฅผ ์ค์นํ๊ณ ์คํํ๊ฒ ์ต๋๋ค.
pipx install cowsay
cowsay moooo
#
# -----
# < moooo >
# -----
# \ ^__^
# \ (oo)\_______
# (__)\ )\/\
# ||----w |
# || ||
cosway
๋ ์ ๋์ค ํฐ๋ฏธ๋์์ ์์คํค ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ๊ทธ๋ฆผ์ ํ์ํ๋ ์์คํค์ํธ์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก ํ(Perl)์ ๋น๋กฏํ์ฌ ํ์ด์ฌ ํจํค์ง๋ก๋ ๋ง๋ค์ด์ ธ ์์ต๋๋ค.
pipx
๋ก ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ๋ง ํ๋ฉด ์ฝ์ ์คํฌ๋ฆฝํธ ์คํ์ ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์์ต๋๋ค. pipx
๋ ํ์ด์ฌ ํจํค์ง๋ฅผ ์ค์นํ๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์ ํ ํด๋์ ๊ฒฉ๋ฆฌ๋ ํ์ด์ฌ ๊ฐ์ ํ๊ฒฝ์ ์๋์ผ๋ก ์์ฑํฉ๋๋ค. ์ด ํ๊ฒฝ์ shared libs๋ผ๊ณ ํฉ๋๋ค. ์ด๋ ๊ฒ ๊ฒฉ๋ฆฌ๋ ๊ฐ์ ํ๊ฒฝ์ ํ์ด์ฌ ํจํค์ง๋ฅผ ์ค์นํ๊ณ , <User Folder>/.local/bin
ํด๋ ์๋์ ์ฝ์์คํฌ๋ฆฝํธ์ ๋ฐ๋ก๊ฐ๊ธฐ(๋ฆฌ๋
์ค๋ ๋งฅ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ)๋ฅผ ์์ฑํฉ๋๋ค.
pipx
์์ ํจํค์ง ์ ๊ฑฐํ๊ธฐ
pipx
๋ฅผ ์ฌ์ฉํด ์ค์นํ ํจํค์ง๋ฅผ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์์คํ
์์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ์์์ ์ค์นํ cowsay
ํจํค์ง๊ฐ ๋ํ์ ์ผ๋ก ํ ๋ฒ๋ง ์ฌ์ฉํ๊ณ ์ฌ์ฉํ์ง ์๋ ํจํค์ง์
๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ํจํค์ง๋ฅผ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
pipx uninstall package_name
์ด๋ ๊ฒ ์ ๊ฑฐ๋ ํ์ด์ฌ ํจํค์ง๋ <User Folder>/.local/bin
ํด๋์์๋ ์ฝ์ ์คํฌ๋ฆฝํธ์ ๋ฐ๋ก๊ฐ๊ธฐ๊ฐ ์ญ์ ๋ฉ๋๋ค.
pipx
๋ ์ดํด๋ณด๊ธฐ
์์์ pipx
๋ฅผ ์ฌ์ฉํด ํ์ด์ฌ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์์ต๋๋ค. ๊ทธ๋ผ ์ด์ ์ด๋ฐ ๊ถ๊ธ์ฆ์ด ์๊ธธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
Q.
pipx
๊ฐ ์์ผ๋ฉดpip
๋ ๋ ์ด์ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ธ๊ฐ์?Q.
pipx
๋ฅผ ์ฌ์ฉํ๋ฉดpipenv
๋poetry
๊ฐ์ ๋๊ตฌ๋ ์ ์จ๋ ๋๋์?Q.
pipx
๋ฅผ ์ด๋ฏธ ์ค์น๋pipx
๋ฅผ ์ฌ์ฉํด ์ค์นํ ์๋ ์๋์?
์ฒซ ๋ฒ์งธ ๊ถ๊ธ์ฆ๋ถํฐ ์ดํด๋ณด๋ฉด pipx
๋ ์ค์ ๋ก๋ pip
๋ฅผ ํ ๋ฒ ๋ ๊ฐ์ผ ๋๊ตฌ์ด๊ธฐ ๋๋ฌธ์ pip
๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ ์๋๋๋ค. ์ด๋๊น์ง๋ ์ฝ์ ์คํฌ๋ฆฝํธ๊ฐ ์ ๊ณต๋๋ ํ์ด์ฌ ํจํค์ง ๋ฐฐํฌ์ ์ฌ์ฉ๋๋ ๋๊ตฌ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
๋ ๋ฒ์งธ ๊ถ๊ธ์ฆ์ ๋ํ ๋ต์
๋๋ค. pipx
๋ ํ์ด์ฌ ํจํค์ง ๋ฐฐํฌ์ ์ฌ์ฉ๋๋ ๋๊ตฌ์ง๋ง, pipenv
๋ poetry
๋ ํ์ด์ฌ ํจํค์ง๋ฅผ ๊ฐ๋ฐํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๋๊ตฌ์ด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ฑ๊ฒฉ์ ๋๊ตฌ๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ๋ค๋ง ์ด๋ค ๋๊ตฌ๋ ์ฝ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ pipx
๋ช
๋ น์ผ๋ก ์ค์นํด์ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
์ธ ๋ฒ์งธ ๊ถ๊ธ์ฆ์ ๋ํ ๋ต์ ๊ถ์ฅ๋์ง ์๋๋ค ์
๋๋ค. ๋ณ๋์ pipx-in-pipx
ํ๋ก์ ํธ๋ฅผ ํตํด ์๋ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ถ์ฅ๋์ง ์์ผ๋๊น ๊ฐ๋ฅํ๋ฉด ์๋ํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
pipx
๊ฐ ์ ์ฉํ ๊ฒฝ์ฐ๋ ํ์ด์ฌ ํจํค์ง์ ์ํด ์ฌ์ฉํ๋ pipenv
, poetry
, pdm
๊ณผ ํ์ด์ฌ ํจํค์ง ํ๊ฒฝ์ ๊ตฌ์ฑํด์ฃผ๋ django-admin
, cookiecutter
์ ๊ฐ์ด ํ์ด์ฌ ๋ฒ์ ์ ์๊ด์์ด ์ฌ์ฉํ๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ๋์
๋๋ค. ์์คํ
์ ํ์ด์ฌ 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 ๋ฑ์ด ๋ชจ๋ ์ค์น๋์ด ์๋ค๊ณ ํ๋ค๋ฉด pipenv
, poetry
๊ฐ์ ๋๊ตฌ๋ฅผ ๋ชจ๋ ํ์ด์ฌ ํ๊ฒฝ์ ์ค์นํ๋ ๊ฒ์ ๋ถํธํ๊ธฐ๋ ํ ๋ฟ๋๋ฌ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์์ง๋ ์์ต๋๋ค.
ํ๋ ๋, ๋ฆฌ๋
์ค ๋ฐฐํฌ๋ณธ์์ ๊ธฐ๋ณธ์ผ๋ก ๋ฒ๋ค๋ง๋์ด ์ ๊ณตํ๋ pipx
ํจํค์ง๋ ๊ทธ ๋ฒ์ ์ด ๋งค์ฐ ๋ฎ์ต๋๋ค. ๊ฐ๋ฅํ๋ค๋ฉด ์ต์ pipx
ํจํค์ง ํ์ผ์ ์ฐพ์ ์ค์นํ์๊ธธ ๊ถ์ฅํฉ๋๋ค. ์ด ๊ธ์ ์ฐ๋ ๋น์์ pipx
์ต์ ๋ฒ์ ์ 1.4.3์
๋๋ค.
๋ง๋ฌด๋ฆฌ
์ด ๊ธ์์ ์ค๋ช
ํ์ง ์์์ง๋ง pipx
๋ pypi
์์ ํจํค์ง๋ฅผ ์ค์นํ๋ ๊ฒ ์ธ์๋ ์ฌ์ฉ์๊ฐ ์ง์ ํ๋ ์ธ๋ถ ํจํค์ง ์ ์ฅ์์์ ํจํค์ง๋ฅผ ์ค์นํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ด ๊ณผ์ ์์ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐฉ์์ ๋ํ ๋ถ๋ถ๋ ์๋๋ฐ ์ด ๋ถ๋ถ์ ์ฌ๋ฌ๋ถ์ด ๊ถ๊ธํดํ์๋ฉด ๋ต๊ธ ๋ฌ์๋๋ฆด๊ฒ์.
์ฐ๋ฆฌ๋ ์ด๋ค ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ด์์ฒด์ ์ โํ๋ก๊ทธ๋จ ์ค์นโ๋ ๊ณผ์ ์ ๊ฑฐ์ณ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ผ์์ ์ผ๋ก ์ฌ์ฉํ๋ ์คํผ์ค ํ๋ก๊ทธ๋จ, ํฌ๋กฌ ์น ๋ธ๋ผ์ฐ์ , ๋ ธ์ ๊ณผ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ๋ฐ๋ก ์ด๋ฐ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋ฉ๋๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ๋ ์ด์์ฒด์ ๊ฐ ์๋์ฐ๋ฉด โ.exeโ ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ด ํ๋ก๊ทธ๋จ์ ์คํํ๊ฒ ๋ ๊ฒ์ด๊ณ , ๋ฆฌ๋ ์ค๋ ๋งฅ[3]์ด๋ฉด ์คํ ๊ถํ์ ๊ฐ์ง๊ณ ์๋ ํ์ผ์ด๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ๋ณ๋๋ก ๋ง๋ ํ๋ก๊ทธ๋จ์ด๋ผ๋ฉด ์ด๋จ๊น์? ๋ ์ฌ๋ฆฌ๊ธฐ ์ฌ์ด ๋ฐฉ๋ฒ์ ํ๋ก๊ทธ๋จ ๊ตฌ๋์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๊ณผ ์คํ ํ์ผ์ ๋ชจ์ผ๊ณ , โ์ธ์คํจ๋ฌโ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํด์ โ์ธ์คํจ ํจํค์งโ๋ฅผ ๋ง๋ค๊ณ , ํ๋ก๊ทธ๋จ ์คํ์ด ํ๋ฝ๋๋ ์ด์์ฒด์ ์์ โ์ธ์คํจ ํ๋ก๊ทธ๋จโ์ ์ฌ์ฉํด ์ค์นํ๋ ๊ฒ์ ๋๋ค.
ํ์ด์ฌ๋ ์ฌ๋ฌ ์ด์์ฒด์ ์ ์ฐ๋ฆฌ๊ฐ ๋ง๋ ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌํ๊ธฐ ์ํด ๊ฐ๋ณ ์ด์์ฒด์ ์์ ์คํ ๊ฐ๋ฅํ ํ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด cx_freeze
๋ pyinstaller
๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ ๊ณผ ๋ฌ๋ฆฌ ์์ฆ์ ์ค๋งํธํฐ์ ์ํฅ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ค์นํ๊ณ ์ญ์ ํ๋ ํ๋์ด ์จ ์ฌ๋ ๊ฒ๋ณด๋ค ์ฌ์์ง ๊ฒ ๊ฐ๊ธฐ๋ ํ๋ฐ์. ์ด์ ๊ธ '๊ฐ๋ฐ ๋ฐํ์ ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ - ํ์ด์ฌpyenvํธ'์์ โํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ํ๊ฒฝโ์ ์ธ๊ธํ์ ๋์ฒ๋ผ, ์์ ์ ํ๋ก๊ทธ๋จ์ ์๋์ฐ์ ์ค์นํ๋ ๊ฒ๋ ๊ฝค ์ด๋ ต๊ณ ํ๋ ์ผ์ ์ํ์ต๋๋ค. ๋ฏฟ์ด์ง์ง ์์ผ์์ฃ ? ์ฌ๋ฌ๋ถ ์ฃผ๋ณ์ 1990 ~ 2010๋ ์ฌ์ด์ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ถ๋ค์๊ฒ ๋ฌผ์ด๋ณด์๋ฉด '๋๋๋จธ๋ฆฌ ๋๋ค'๋ผ๋ ๋ง์ ํ์๋ ๋ถ์ด ์์ ๊ฒ๋๋ค.
์ง๊ธ๊น์ง pipx
๋ก CLI ์คํ ํ์ผ์ ์ ๊ณตํ๋ ํ์ด์ฌ ํ๋ก๊ทธ๋จ์ ํ์ด์ฌ์ด ์ค์น๋ ํ๊ฒฝ์ ์ฝ๊ฒ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ดค์ต๋๋ค. ๋ค์์ ๋ต๊ฒ ์ต๋๋ค.
์ ธ์ ์ด์์ฒด์ ์์ ์ฌ์ฉํ๋ ํฐ๋ฏธ๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธํฉ๋๋ค. ์๋์ฐ๋ โ๋ช ๋ น ํ๋กฌํํธโ, โํ์์ ธโ์, ๋งฅ์ด๋ ๋ฆฌ๋ ์ค๋ โํฐ๋ฏธ๋โ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํด ์ ธ์ ์์ํ ์ ์์ต๋๋ค. โฉ๏ธ
ํธ์์ ๋งฅ์ด๋ ๋ฆฌ๋ ์ค ํ๊ฒฝ์ ํฐ๋ฏธ๋ ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. โฉ๏ธ
๋งฅ์ GUI ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌํ๊ธฐ ์ํด ๋ณ๋๋ก ์ฌ์ฉ๋๋ App ํจํค์ง ๋ฐฉ์์ด ์์ต๋๋ค. ์ด ๋ฐฉ์์ ํฐ๋ฏธ๋์์ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. โฉ๏ธ