pip uninstall로 라이브러리를 지우면 디펜던시가 지워지지 않습니다

$ pip freeze
asgiref==3.4.1
Django==3.2.6
pytz==2021.1
sqlparse==0.4.1

예를 들어 Django를 설치하면 이렇게 asgiref, pytz, sqlparse가 추가로 설치됩니다

pip uninstall django로 장고를 지우면 어떻게 될까요? 종속성이니까 같이 지워질 것 같은 느낌이 듭니다

$ pip uninstall django
Found existing installation: Django 3.2.6
Uninstalling Django-3.2.6:
  Would remove:
    # ...
Proceed (Y/n)? y
  Successfully uninstalled Django-3.2.6

$ pip freeze
asgiref==3.4.1
pytz==2021.1
sqlparse==0.4.1

하지만 그렇지 않습니다. 왜 그런지는 잘 모르겠네요. 그게 pip의 철학인지? npm은 다 지워줬던거같은데..

아무튼 unused dependency까지 전부 지우려면 pip-autoremove 라는 라이브러리를 사용해볼 수 있습니다.

$ pip-autoremove django
Django 3.2.6 (...)
    pytz 2021.1 (...)
    asgiref 3.4.1 (...)
    sqlparse 0.4.1 (...)
Uninstall (y/N)?y
Found existing installation: asgiref 3.4.1
Uninstalling asgiref-3.4.1:
  Successfully uninstalled asgiref-3.4.1
Found existing installation: Django 3.2.6
Uninstalling Django-3.2.6:
  Successfully uninstalled Django-3.2.6
Found existing installation: sqlparse 0.4.1
Uninstalling sqlparse-0.4.1:
  Successfully uninstalled sqlparse-0.4.1
Found existing installation: pytz 2021.1
Uninstalling pytz-2021.1:
  Successfully uninstalled pytz-2021.1

pip-autoremove를 사용해 패키지와 미사용 의존성(unused dependency)까지 한번에 지울 수 있습니다

버전이 0.9.1에서 멈춰 있고 한 2018년부터 유지보수가 안되고 있는 것 같긴 한데.. 동작은 잘 합니다. 더이상 동작하지 않는다면 누군가 상위호환 라이브러리를 만들겠죠 뭐

반응형