티스토리 뷰

주의! 해당 글은 전문가의 의견이나 유명 사이트의 번역글이 아닙니다. 

단지 공부를 하는 학생이 공부하고 그를 통해 생각하는 것을 써놨으니, 100% 신뢰할 수 없습니다.


cf. 장고 프로젝트 커맨드는 '장고걸스 튜토리얼'을 참조하였습니다.
    또한 개발환경은 OS X 입니다. (django 및 python 자료는 구글링하면 많습니다.)



Twelve-Factor App은 전체 시스템에 특정 패키지가 암묵적으로 존재하는 것에 절대로 의존하지 않습니다.

그래서 패키지의 종속성을 시스템으로부터 분리하고, 

종속성 선언을 manifest를 이용해서 모든 종속성을 완전하고 엄격하게 선언해야합니다.


이렇게 하는 이유를 생각해보면, 

파이썬을 이용한 장고 프로젝트에 필요한 A라는 라이브러리가 있는데, 

이게 현재 내 로컬 개발 환경의 시스템상에는 파이썬에 디폴트로 A 라이브러리가 설치되어 있습니다.


그래서 A 라이브러리를 설치할 필요없이 저는 신나게 A 라이브러리를 활용해서 개발을 합니다.

그리고 드디어 배포를 한다고 한다면? 뭐 배포를 물리서버에 할수도있고, AWS에 하든 Azure에 하든 상관없습니다.

그런데 배포 서버의 환경에 따라 배포 시스템에는 A 라이브러리가 없을수도, 있을수도 있습니다. 


해당 서버를 저희한테 내준 사람/기업이 A 라이브러리를 개인적으로 설치했는지는 저희도 모릅니다. 

이런걸 일일히 신경을 쓸 수 없기때문에, 저희는 프로젝트의 필요 라이브러리를 시스템에 의존하면 안됩니다.



그래서 파이썬에서는 종속성 선언과 종속성 분리를 위한 도구가 있습니다. 

- pip : 종속성 선언

- virtualenv: 종속선 분리


이런 도구들을 쓴다면 다른 개발자가 프로젝트를 실행하기 위해서 필요한 패키지들을 일일히 문서를 보고 설치할 필요가 없고

단지 종속성 관련 도구를 이용해 손쉽게 필요한 패키지를 설치하여 개발에 참여할 수 있습니다.


아래는 django 프로젝트를 종속성을 분리하고 명시적으로 선언하여 시작하는 과정을 그대로 담았습니다.




우선


$ python3 -m venv myvenv


을 통해 myvenv 라는 가상 환경을 만들어 시스템의 python 환경으로부터 종속성을 분리합니다.


그리고 이제 myvenv 환경상에서 각종  패키지들의 종속성을 선언하기 위해서


$ source myvenv/bin/activate


를 통해서 myvenv 가상환경을 실행합니다.

그러면 터미널에 (myvenv)라는 문구가 생기고 이제부터 실행되는 파이썬 환경은 시스템에 설치된 파이썬과 각자 다른 환경이 됩니다.

이상태에서 pip를 통해서 패키지를 설치하면 시스템의 python에 설치되는게 아니라, myvenv 가상환경에 설치됩니다.


$ pip install django==1.8


이렇게 종속성을 분리할 수 있습니다.


그밑으로는 myvenv 환경의 pip를 업그레이드하고, redis를 myvenv 가상환경에 설치합니다.


이렇게 장고 프로젝트의 종속성을 분리하고 명시적으로 선언할 수 있습니다.


이렇게 django 패키지가 시스템의 python으로부터 종속성이 분리됬는지를 확인해보겠습니다.


(myvenv) 가상환경상에서 설치된 django 1.8을 통해서 django앱을 생성하면, 


$ django-admin startproject mysite .


이렇게 django 패키지가 myvenv 가상환경에 설치되어있기때문에 django앱을 생성할 수 있습니다.



하지만 (myvenv)환경이 아닌, 시스템 환경에서 똑같은 커맨드를 실행하게 되면, 


$ django-admin startproject mysite .



이렇게 django 패키지의 종속성을 분리시켜놨기 때문에 커맨드를 찾을 수 없다고 나옵니다.






댓글
댓글쓰기 폼
공지사항
Total
92,889
Today
10
Yesterday
13
«   2019/04   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30        
글 보관함