SK Networks AI/일일 회고록

[SK네트웍스 Family AI 캠프 11기] 일일 회고 - 7일차(25.02.17 월요일)

js-kkk 2025. 2. 17. 14:40

파이썬 문법 중 pip freeze를 이용한 패키지 설치, 파일입출력과 예외처리와 Streamlit, git 기본 설정 + 원격 저장소에 push 에 대해 강의가 진행되었다. 휴가를 사용해서 참석하지 못했던 6일차 수업 일일 회고에 미리 정리해둔 부분을 제외하고 새로 알게된 내용과 오늘 발생한 문제점, 해결방안 에 대해서 정리하고자 한다. (Streamlit은 우선 코드만 올려두고 자세한 설명은 따로 카테고리를 빼서 작성하려고 한다)

 

 

 

학습 내용

1. pip freeze로 패키지 한번에 설치하기(requirements.txt, 개발 환경 동일 세팅)

2. file i/o

3. Streamlit

4. git 기본 설정 + 원격 저장소에 push까지 

5. 오늘 발생한 문제점

6. 해결방안

 

 

1. pip freeze로 패키지 한번에 설치하기(requirements.txt, 개발 환경 동일 세팅)

 

requirements.txt

💡프로그램의 종속성 관리를 위해 사용하는 파일의 통상적 이름이다. 이 파일에는 프로젝트에서 사용되는 모든 패키지와 버전이 나열되어 있어, 프로젝트를 배포하거나 다른 환경에서 실행할 때 동일한 패키지 환경을 재현할 수 있도록 한다.

 

  • requirements.txt 파일 생성
    • 현재 환경에 설치된 모든 패키지와 버전을 담은 requirements.txt 라는 파일을 생성한다.
pip freeze > requirements.txt

 

 

  • 새 가상 환경 만들기 (VScode 의 cmd 창에서 진행)
python -m venv new_env
source new_env\Scripts\activate
 # Windows에서는 new_env\Scripts\activate
 # Mac 에서는 new_env\bin\activate

 

 

(에러 발생시)

cmd 에서 작업 디렉토리 위치를 Scripts 로 옮겨, activate 라고 입력한다. 

 

 

 

  • requirements.txt 파일을 이용한 라이브러리 설치
    • -r 옵션 뒤에 오는 파일 경로를 읽어 해당 파일 내에 명시된 패키지를 설치한다.
pip install -r requirements.txt

 

 

(에러 발생시)

pip install -r requirements.txt 실행 시 발생한 에러

해당 에러 발생 시, 문구 그대로 python.exe -m pip install --upgrade pip 을 입력해주어 업그레이드 후 그대로 진행해주면 된다.

 

그러면 Python interpreter 설정에 new_env 가 만들어 졌음을 확인할 수 있다.

 

 

 

  • requirements.txt 사용 시 주의 사항
    • 가상 환경 사용: requirements.txt 파일을 생성하기 전에 가상 환경을 사용하는 것이 좋다. 이는 프로젝트에 필요한 패키지들만 requirements.txt에 포함되게 하여, 불필요한 패키지들이 포함되는 것을 방지한다.
    • 패키지 버전 관리: requirements.txt 파일에 포함된 패키지 버전을 고정하면, 환경의 일관성을 유지할 수 있다. 그러나 필요에 따라 버전을 업데이트하는 것도 중요하다.
    • 선별적인 설치: 특정 패키지를 무시하거나 선택적으로 설치하고 싶다면, requirements.txt 파일을 편집하여 필요 없는 패키지를 제거하거나 조건부로 설치되도록 설정할 수 있다.

 

 

2. file i/o

 

[추가]

VScode 에서 원하는 파일의 주소를 가져오고 싶을 때

 

1.해당 파일의 위치에 마우스를 대고 우클릭을 누르고, Reveal in File Explorer를 클릭한다. 아래와 같은 화면이 나올 것이다. 

2.형광펜 친 부분의 주소를 복사한다.

3.C:\encore_skn11\python-basic\08_file-io 이런식으로 복사가 될텐데 VScode 에서 ' \ ' 가 있는 곳에 \를 하나 더 추가해준다.('\'는 escape 문자이므로)

4.최종적으로는 이런 형태가 될 것 이다. f = open(' C:\\encore_skn11\\python-basic\\08_file-io','w')   

 

 

3. Streamlit

main_page.py

#실행할 때 streamlit run main_page.py (*주의* cmd 창에서 실행할 때 main_page 디렉토리 에서 실행해야함)
import streamlit as st  

st.title('오늘은 신나는 월요일')
st.header('오늘은 Streamlit 배우는 날~~')
st.subheader('Streamlit으로 만들어 보는 내 사이트')

my_site = st.text_input('오늘 내가 만들어보고 싶은 사이트는?')
st.write(my_site)

if st.button(f'{my_site} 접속하기'):
    st.success(f'{my_site}로 접속 중', icon='✌️')

 

 

 

input_page.py

import streamlit as st

st.title('사용자 입력 받기')

nickname = st.text_input("닉네임 입력")
age = st.number_input("나이 입력: ", min_value=13, max_value=80)

options = ["대학생","고등학생","중학생","초등학생"]
selected = st.selectbox("학교 입력",options)

r_options = ["맛집 탐방","영화 감상","음악 감상","사진 찍기"]
choice = st.radio("취미 입력", r_options)
selected_many = st.multiselect("취미가 여러 개라면",r_options)

checked = st.checkbox("개인정보 제공 동의")

if st.button('입력 완료!'):
    st.write(f"이름이 뭐에요? {nickname}")
    st.write(f"몇 살이야? {age}")
    st.write(f"어디 다녀? {selected}")
    st.write(f"취미가 뭐야? {choice}")
    st.write(f"취미가 여러개야? {selected_many}")
    st.write(f"개인정보 제공 동의해? {checked}")

 

 

data_page.py

import streamlit as st

import pandas as pd

st.title('게임 캐릭터의 인지도')
data = pd.DataFrame({
    "캐릭터" : ["전사","법사","힐러","탱커","랜덤"],
    "선택횟수" : [120, 95, 150, 80, 111],
    "승률 (%)" : [52, 48, 56, 60, 49],
    "인지도 (%)" : [25, 20, 30, 15, 22]
})

st.dataframe(data, use_container_width=True)

# edited_data = st.data_editor(data)     #표 안의 값 수정 가능, 수정된 내용을 어딘가에 반영하려면 변수에 저장
# st.write(edited_data)

st.bar_chart(data.set_index('캐릭터')['선택횟수'])      #set_index -> 데이터프레임에 관한 것. 특정 컬럼을 인덱스로 지정 ex)캐릭터를 인덱스로, 선택횟수를 값으로
st.line_chart(data.set_index('캐릭터')['승률 (%)'])
fig = data.plot.pie(
    y="인지도 (%)",
    labels=data["캐릭터"],
    autopct="1.1f%%",
    figsize=(6,6),
    legend=False,
    title="캐릭터 별 인지도"
).get_figure()
st.pyplot(fig)

 

 

session_state.py

import streamlit as st

st.title('Counter')

if "customer_count" not in st.session_state: #session state : streamlit 모듈이 가진 변수 /세션 자체에 대한 선택값 저장 ?
    st.session_state.customer_count = 0

if st.button('손님 한 명 추가요~!'): #Streamlit은 요소와 사용자간의 인터랙션이 생기면 화면을 새롭게 렌더링함. 즉, 화면을 다시 그려주기 때문에 원하는 대로 동작 x
    st.session_state.customer_count += 1
    
if st.button('오늘 장사 끝! 손님 수 초기화!'):
    st.session_state.customer_count = 0

st.write(f"지금까지 온 손님 수:{st.session_state.customer_count}")

 

 

 

 

 

4. git 기본 설정 + 원격 저장소에 push까지 

git 기본 설정

 

로컬 레퍼지토리로 이동 후

 

 

왼쪽 사진에서 sign in with your browser 클릭

 

 

 

4. 오늘 발생한 문제점

pip install -r requirements.txt 실행 시 발생한 에러

5. 해결방안 

 

해당 에러 발생 시, 문구 그대로 python.exe -m pip install --upgrade pip 을 입력해주어 업그레이드 후 위 1. pip freeze로 패키지 한번에 설치하기(requirements.txt, 개발 환경 동일 세팅) 의 내용을 그대로 진행해주면 된다. 

 

 

[추가]

VScode 에서 코드에 이모지를 작성하고 싶으면 [ windows 키 + . ] 을 누르면 됨.