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년부터 유지보수가 안되고 있는 것 같긴 한데.. 동작은 잘 합니다. 더이상 동작하지 않는다면 누군가 상위호환 라이브러리를 만들겠죠 뭐
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Python] Expected type X, got Type[X] instead (0) | 2021.09.10 |
---|---|
[Django] "You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path." 해결 방법 (0) | 2021.09.02 |
pip-chill: pip로 직접 설치한 라이브러리만 보는 법 (0) | 2021.08.23 |
[Python] secrets로 랜덤한 토큰(해시) 만들기 (0) | 2021.07.23 |
[Python] 파이썬 GIL이란? (0) | 2021.04.22 |