Page 25 -
P. 25

변경(breaking change)이라고 부른다) 새로운 버전을 릴리스할 수도 있다.
                  pytyhon3 -m pip install --upgrade Jinja2를 사용해 전역 Jinja2의 버전을

                  갱신하면 Sphinx는 제대로 작동하지 않는데, flask는 계속 제대로 작동하는
                  모습을 보게 될 수도 있다.


                  이런 식으로 프로그램이 깨지는 이유는 파이썬에서 전역적으로는 어떤 모
                  듈을 단 한 버전만 설치할 수 있기 때문이다. 설치한 패키지 중 일부는 새

                  로운 버전을 사용해야 하고 다른 일부는 예전 버전을 사용해야 한다면 시
                  스템이 제대로 작동하지 못하게 된다. 이런 상황을 일컬어 의존 관계 지옥

                  (dependency hell)이라고 부른다.

                  패키지 관리자들이 릴리스 사이의 API 호환성을 최대한 유지하기 위해 노력
                  (Better way 85: ‘패키지를 사용해 모듈을 체계화하고 안정적인 API를 제공

                  하라’ 참고)해도 이런 식의 고장이 생길 수 있다. 새로운 버전의 라이브러리
                  가 해당 라이브러리의 API에 의존하는 코드의 동작을 크게 바꿀 수 있다. 시

                  스템 사용자들이 패키지를 새 버전으로 바꿨는데, 다른 패키지는 업그레이드
                  하지 않는다면 의존 관계가 깨질 수 있다. 주의를 기울이지 않는다면 여러분

                  이 모르는 사이에 환경이 바뀔 위험이 늘 존재한다.

                  다른 컴퓨터에서 작업을 하는 개발자들과 서로 협업하는 경우 이런 어려움은

                  더 증폭된다. 이런 때는 최악의 경우를 가정하는 것이 최선이다. 즉, 다른 이
                  들이 자신의 컴퓨터에 설치한 파이썬과 전역 패키지가 여러분의 컴퓨터에 설
                  치된 버전과 살짝 다를 것이라고 예상해야 한다. 이로 인해 한 개발자의 컴퓨

                  터에서는 코드베이스가 완벽히 동작하는데, 다른 개발자의 컴퓨터에서는 완

                  전히 망가지는 당황스러운 경우가 생길 수 있다.

                  이 모든 문제를 해결하는 방법은 venv라는 도구를 쓰는 것이다. venv는 가
                  상 환경(virtual environment)을 제공한다. 파이썬 3.4부터 파이썬 설치 시





                                                                        10장  협업  571




     파이썬 코딩의 기술_06.indd   571                                              2020-10-20   오후 2:53:42
   20   21   22   23   24   25