Page 24 -
P. 24

하지만 추이적(transitive) 의존 관계에 의해 문제가 생길 수 있다. 추이적 의존
              관계는 설치한 패키지가 다른 패키지에 의존하는(그리고 그 패키지가 또 다

              른 패키지에 의존하는) 경우를 말한다. 예를 들어 Sphinx를 설치한 후 pip를
              통해 이 패키지가 의존하는 다른 패키지 목록을 볼 수 있다.


              $ python3 -m pip show Sphinx
              Name: Sphinx
              Version: 2.1.2
              Summary: Python documentation generator
              Location: /usr/local/lib/python3.8/site-packages
              Requires: alabaster, imagesize, requests,
                sphinxcontrib-applehelp, sphinxcontrib-qthelp,
                Jinja2, setuptools, sphinxcontrib-jsmath,
                sphinxcontrib-serializinghtml, Pygments, snowballstemmer,
                packaging, sphinxcontrib-devhelp, sphinxcontrib-htmlhelp,
                babel, docutils
              Required-by:

              flask 같은 다른 패키지를 설치하면 이 패키지도 Jinja2 패키지에 의존한다
              는 사실을 알 수 있다.

              $ python3 -m pip show flask
              Name: Flask
              Version: 1.0.3
              Summary: A simple framework for building complex web applications.
              Location: /usr/local/lib/python3.8/site-packages
              Requires: itsdangerous, click, Jinja2, Werkzeug
              Required-by:


              시간이 지남에 따라 Sphinx와 flask가 서로 달라지므로 의존 관계 충돌이 발
              생할 수 있다. 현재는 두 패키지가 모두 똑같은 Jinja2 버전에 의존할 것이

              다. 하지만 6개월이나 1년 후에 Jinja2가 기존 버전을 사용하는 코드가 제
              대로 컴파일되거나 동작하지 못하게 하는(이런 변경을 기존 코드를 깨는







          570




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