본문 바로가기

About coding/Today I learned

2023년 04월 11일 TIL [#Django 입문_팀프로젝트_day2 #실수로 venv없이 pip install 했을 때 대처법]

 


오늘의 학습 계획

_정규시간 전까지 코테 스프린트 프로그래머스 day1~da2

_내 분량 배분 받고 처리계획 세우기 : html 만들기 > api 교통정리 > api 구현 ( view > data > urls )

_처리 계획 들고 튜터님 조언 받기

_최대한 처리하기 (약간 빨리 하고, 집중해서 하고 느낌 유지)


기록하고 싶은 학습내용

_코테day1~day2

def solution(num1, num2):
    if num1 == num2:
        return 1
    elif num1 != num2:
        return -1

if문에서 else를 굳이 안 써도 되는구나... 엘스가 선택이라는 걸 이제 알았다 힝

그리고 이렇게 if만 2개 써도 된다.

def solution(num1, num2):
    if num1 == num2:
        return 1
    if num1 != num2:
        return -1

 

_장고 템플릿 문법 이용

django에서 CSS적용하는 방법

1. 스태틱 폴더 만들기 (template폴더와 비등한 위치에. 스태틱 폴더의 이름은 static)

2. CSS 적용하고자 하는 html 최상단에 {% load static %}

3. head 태그 안에 <link rel="stylesheet" href="{% static '이름.css'%}"> 넣어주기

4. static 폴더 안에 '이름.css' 파일 만들기

적용이 안된다면 서버 재실행.

 

 


오늘 막힌 코딩테스트

문제

_첫 번째 분수의 분자와 분모를 뜻하는 numer1denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

시도

_ 이렇게 해보고 있다.

def solution(numer1, denom1, numer2, denom2):
    mother = denom1 * denom2
    son = numer1*denom2+numer2*denom1
    
    
    answer = [son, mother]
    return answer

그런데, 이렇게 만들어서 돌리면 '기약 분수로 나타냈을 때' 조건을 놓치게 된다.

어떻게 하면 son을 기약 분수로 바꿔줄 수 있지?

기약분수 = 분자와 분모의 공약수가 1 뿐이어서 더이상 약분할 수 없는 수. 흠...

 

해결

_

 

 


질문과 해결

Q. 헐!! 포크 해서 가져온 파일이 실행이 안된다 어떡하지?! ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

> 패키지를 설치하지 않아서 그렇다. 보통은 프로젝트를 공유할 때 requirements.txt 라는 메모장을 만들어 이 프로젝트에 쓰인 패키지들의 이름과 버전 목록을 함께 공유한다. 리콰이어먼츠 파일이 있는 것을 확인했다면,

pip install -r requirements.txt 해서 해당 파일에 메모된 모든 패키지를 설치한다.

 

Q.실수로 venv를 설치 안하고 requirements.txt를 설치했다 ㄷㄷ 이럴 때 단점은?

> 그냥 venv 없이 패키지를 설치하면 C드라이브에 글로벌 공간이 생성되고, 거기에 패키지가 설치된다. 그럴 경우 단점은

1. 내가 이 프로젝트를 만들기 위해 어떤 패키지를 썼는지 까먹게 되어서 타인과 공유할 때 뒤죽박죽이 된다.

2. 패키지에는 의존성 패키지라는 것이 있다. 이를테면 django를 깔면 장고만 깔리는 것이 아니라 거기에 따라오는 다른 패키지들이 있는데, 그 친구들이 django 3.0 버전에서만 통하거나 4.0 버전에서만 통하는 수가 있다. 그럴 경우 venv 없이 돌아다니면 requirements에 담겨 있는 기준을 삼아 세트로 움직일 수 없어 뒤죽박죽 엉망진창이 되고 만다. 따라서 프로젝트를 공유할 때 requirements.txt를 받았으면 무조건 새로 venv를 설치해 requirements.txt 기준 패키지를 깔아야 한다.

 

>그럼 실수로 venv 없이 설치한 패키지들을 삭제하려면 어떻게 해야 하나?

터미널에

pip freeze를 하면 현재 설치된 패키지 목록이 나온다.

pip freeze > (프리즈된 패키지들을 담을 임의의 메모장 이름)        #이러면 임의의 메모장 안에 패키지들 이름이 모두 담김

pip uninstall -r (프리즈된 패키지들을 담을 임의의 메모장이름) -y  #이러면 데스노트에 이름이 적힌 패키지들이 모두 삭제.