NullNull

Django 가상환경 이해 본문

Django

Django 가상환경 이해

KYBee 2022. 10. 5. 00:13

해당 글은 비전공자를 위한 개발 동아리 피로그래밍에서 진행했던 세션의 정리본 입니다.

 

지금까지 Django에 대해서 잘 알아봤으니까 Django를 실행하려면 무엇을 해야하는지 알아볼게요. 우선 우리는 파이썬과 Django를 설치해야 합니다. 이 둘은 다운을 받아서 사용하면 되는데요. 여기서 또 한가지 중요한 개념이 나옵니다.

 

우리가 워드를 사용해서 4개의 문서를 작성한다고 가정할게요. 앞에 보이는 문서들을 다 만들었습니다. 우리는 워드라는 하나의 소프트웨어를 사용했죠? 혹시 저 문서들은 모두 똑 같은 워드를 사용했기 때문에 모두 글꼴, 글꼴 크기, 글자색을 똑같이 사용해야 할까요?

 

당연히 그렇지 않습니다. 자소서에는 나눔고딕과 파란색 글자를 사용했더라도 지원서에는 빨간색 궁서체를 사용할 수 있습니다. 즉 워드라는 소프트웨어는 각 파일 별로 세팅을 다르게 할 수 있음을 의미합니다.

 

이 개념이 정말 아무것도 아닌거 같아도 개발을 할 때는 매우 중요합니다. 예를 들어, 우리가 인스타그램 서비스를 우리의 노트북으로 개발을 한다고 해봅시다. 저 파이썬과 Django 밑에있는 숫자는 버전을 뜻합니다. 인스타그램은 파이썬 3.8버전, Django 3.20버전을 사용하고 있네요.

 

자 이때 페이스북에서 자신들의 웹 사이트를 만들어 달라고 연락이 옵니다. 자 페이스북은 파이썬 몇 버전과 Django 몇 버전을 사용하고 있나요? 페이스북은 파이썬 3.8 버전과 장고 2.20 버전을 사용합니다.

 

페이스북을 개발하기 전에 제 노트북에는 파이썬 3.8과 Django 3.20 버전이 깔려있는 상황이었습니다. 다행스럽게도 파이썬 버전은 인스타그램과 페이스북이 같은데, Django의 버전이 다르네요. 여기서 문제가 발생합니다.

 

우리가 핸드폰에서 카카오톡 옛날 버전과 지금 버전을 따로따로 가지고 있을 수 없는 것 처럼 우리가 사용하는 컴퓨터는 한 가지 버전의 파이썬과 한 가지 버전의 Django만 다운로드하여 사용할 수 있습니다.

 

그럼 인스타그램을 개발하다가 갑작스럽게 페이스북 개발을 맡게된 저는 어떻게 해야할까요? 지금 제 컴퓨터에 있는 Django 3. 20 버전을 지우고 페이스북에서 사용하는 Django 2.20버전을 다운받으면 됩니다. 생각보다 간단하죠?

 

자 그러면 이러면 어떨까요?

 

페이스북 웹 사이트를 잘 개발하고 있는데 갑자기 에어비엔비에서 또 개발을 해달라고 요청이 옵니다. 에어비앤비는 파이썬 2.7버전과 Django 3.20버전을 사용하네요. 하지만 지금 제 컴퓨터에는 파이썬 3.8버전과 Django 2.20 버전이 설치되어 있습니다. 그럼 또 Django 2.20버전을 지우고 파이썬 3.8버전을 지운 다음 파이썬 2.7 버전과 Django 3.20버전을 다운로드 하면 되겠네요?

그러다가 만약 에어비앤비를 개발하고 있다가 갑자기 페이스북 웹 사이트에서 버그가 생겨서 페이스북 개발을 해야한다면 어떻게 해야할까요??

 

또 파이썬과 Django를 지우고 새로 설치하고 해야 할 겁니다. 생각보다 귀찮고 헷갈리죠?

 

뭐 가장 좋은 방법은 컴퓨터를 3대 사서 사용하는 것인데, 현실적으로 불가능하니까 이런 문제를 보다 현실적인 방법으로 해결하기 위해 나온 것이 바로 가상환경 입니다.

 

위에서 제가 워드 파일 별로 내용과 설정을 서로 다르게 해서 관리한 것 처럼 각 프로젝트 별로 파이썬과 Django의 버전을 다르게 해서 관리할 수 있게 해주는 것이 바로 가상환경입니다.

 

한가지 의문이 들 순 있습니다. 아니 카카오톡과 같은 소프트웨어는 매번 최신 버전이 나올때마다 업데이트를 시켜주는데 그냥 에어비앤비나 페이스북이 Django나 파이썬 버전을 최신 버전이 나올때마다 업데이트 시켜주면 해결되지 않을까? 라고 생각하실 수 있어요. 하지만 그건 소프트웨어에 해당되는 내용이고 Django는 프레임워크라서 그 발상은 매우 위험한 결과를 초래할 수 있습니다.

 

실제로 저희가 웹 서비스를 개발할 땐 하나의 웹 서비스에 매우 많은 프로그램들이 설치되어 사용됩니다. 이를 패키지라고 하는데 특정 기능을 하기 위해 만들어진 프로그램이라고 생각해주세요. 앞에 보시는 예시는 실제로 제가 웹 서비스를 개발할 때 사용했던 패키지들의 모음입니다. Django를 사용한다고 해서 Django만 사용하는게 아니라 다른 패키지들도 많이 사용하는 걸 볼 수 있죠?

 

중요한건 이 패키지들이 어떤 이유에서든 특정 버전에서만 동작할 수 있습니다. 예를 들어, 그 패키지를 개발하던 회사가 망해서 더 이상 패키지가 개발되지 않아서 옛날 버전의 패키지를 계속 사용해야 하는 경우도 있습니다. 최신 버전의 패키지를 출시했지만 보안 취약점이 발견 되서 낮은 버전을 사용해야 하는 경우도 있습니다.

 

실제로 그렇진 않지만 Django가 파이썬 2.9버전에서 마지막으로 업데이트되고 더 이상 버전 업그레이드가 안된다고 생각해볼게요. 그러면 만약 파이썬이 3, 4, 5버전까지 나왔더라도 우리는 Django를 사용하기 위해서 2.9버전의 파이썬만을 사용해야 합니다. 더 높은 버전에서는 이전 버전에서 개발되었던 Django의 일부 기능이 동작하지 않을 수 있기 때문이에요.

 

결과적으로 항상 최신 버전을 사용하는게 중요한게 아니라 각 개발 프로젝트에서 사용되는 패키지들의 버전을 기록하고 알맞은 환경을 세팅한 다음 개발을 하는 것은 정말 매우 중요하구요 이를 쉽게 해주기 위해 나온 것이 바로 가상환경입니다.

 

 

다음에는 가상환경을 직접 만들어보면서 실습해볼게요!

Comments