๐ฆ Colab์์ requirements.txt
์์ฑํ๋ ์ด์
โ ์ requirements.txt๋ฅผ ๋ง๋ค๊น?
- ํ์ฌ ํ๊ฒฝ์ ์ค์น๋ ํจํค์ง ๋ชฉ๋ก๊ณผ ๋ฒ์ ์ ๋ณด๋ฅผ ๊ธฐ๋ก
- ๋ค๋ฅธ ํ๊ฒฝ(๊ฐ๋ฐ/๋ฐฐํฌ/ํ์ /์๋ฒ ๋ฑ)์์ ๋์ผํ ํจํค์ง ๋ฒ์ ์ผ๋ก ์ฌ์ค์นํ๊ธฐ ์ํด
- ํนํ Colab์ฒ๋ผ ์ธ์ ์ด ์ด๊ธฐํ๋๋ ํ๊ฒฝ์์๋ ํ์
โ
1. pip freeze
๋ช
๋ น์ด (๊ฐ์ฅ ์ผ๋ฐ์ )
!pip freeze > requirements.txt
- ํ์ฌ Colab ์ธ์ ์ ์ค์น๋ ๋ชจ๋ ํจํค์ง์ ๋ฒ์ ์ ํ ์คํธ๋ก ์ ์ฅ
pip install -r requirements.txt
๋ก ์ฌ์ค์น ๊ฐ๋ฅ- ๋ถํ์ํ ๊ธฐ๋ณธ ํจํค์ง๊น์ง ํฌํจ๋จ (์ ์ ํ๋ ค๋ฉด ์๋ ํธ์ง ํ์)
๐ ์์ฑ ์์:
pandas==2.2.2
sqlalchemy==2.0.31
mysql-connector-python==9.0.0
oracledb==1.4.0
โ
2. pkg_resources
๋ฅผ ์ด์ฉํ ํ์ด์ฌ ์ฝ๋ ์ถ์ถ
import pkg_resources
with open("requirements.txt", "w") as f:
for dist in pkg_resources.working_set:
f.write(f"{dist.project_name}=={dist.version}\n")
pip freeze
์ฒ๋ผ ์ ์ฒด ํจํค์ง๋ฅผ ์ถ์ถ- ํ์ด์ฌ ์ฝ๋ ์์์ ์ ์ด ๊ฐ๋ฅ (ํํฐ๋ง, ํน์ ํจํค์ง๋ง ์ถ์ถ ๋ฑ ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅ)
.project_name
์ ํจํค์ง ์ด๋ฆ,.version
์ ๋ฒ์
โ
3. pip list
+ ์์์
(๋ถ๋ถ ์ถ์ถ ์ ์ ์ฉ)
!pip list
- ์ค์น๋ ํจํค์ง ๋ฆฌ์คํธ๋ฅผ ์ถ๋ ฅ๋ง ํจ
- ์ง์ ๋ณด๊ณ ํ์ํ ํจํค์ง๋ง ๊ณจ๋ผ
requirements.txt
์ ์ ์ ์ ์์
โ 4. ์๋ ์์ฑ (์ฝ๋์์ ํจํค์ง ๋ฆฌ์คํธ ๋ณต์ฌ)
required = [
"pandas==2.2.2",
"sqlalchemy==2.0.31",
"mysql-connector-python==9.0.0"
]
with open("requirements.txt", "w") as f:
f.write("\n".join(required))
- ๋ด ํ๋ก์ ํธ์ ํ์ํ ํจํค์ง๋ง ์ ํ์ ์ผ๋ก ๋ช ์
- ์ฝ๋ ์์์ ๋ช ํํ๊ฒ ๊ด๋ฆฌ ๊ฐ๋ฅ
- ์คํ/ํ์ต์ฉ ํ๋ก์ ํธ์ ๋ง์ด ์ฐ์
โ
5. %pip freeze
(IPython ๋งค์ง ๋ช
๋ น์ด)
%pip freeze > requirements.txt
- Colab์์๋ ์ ์๋
!pip freeze
์ ๊ฑฐ์ ๋์ผํ์ง๋ง, ์ธ์ ๋ด๋ถ ํ๊ฒฝ๊ณผ ๋ ์์ ์ ์ผ๋ก ์ฐ๊ฒฐ
๐ฏ ์์ฝ ๋น๊ต
๋ฐฉ์ | ๋ชฉ์ /ํน์ง | ์ฅ์ | ๋จ์ |
---|---|---|---|
!pip freeze |
์ ์ฒด ํจํค์ง ์ถ์ถ | ์ฝ๊ณ ๋น ๋ฆ | ๋ถํ์ํ ํจํค์ง๋ ๋ง์ |
pkg_resources |
์ฝ๋๋ก ์ ์ด | ํํฐ๋ง ๋ฑ ์ปค์คํฐ๋ง์ด์ง ๊ฐ๋ฅ | ๋ณต์กํจ |
!pip list |
ํ์ธ์ฉ | ํ์ํ ํจํค์ง ์๋ ์ ํ | ์๋ ์์ ํ์ |
์๋ ๋ฆฌ์คํธ ์์ฑ | ํ์ํ ํจํค์ง๋ง | ๊น๋ํ๊ณ ๋ช ํ | ์๋ํ ์ ๋จ |
%pip freeze |
IPython ์ ์ฉ | ๋ด๋ถ ํ๊ฒฝ ์์ ์ ์ฐ๊ฒฐ | ์ผ๋ฐ Python์์ ์ฌ์ฉ ๋ถ๊ฐ |
๋๊ธ