라이브러리 설치시 해당 라이브러리의 의존성 패키지가 함께 설치된다.
만약 어떤 의존성 패키지가 함께 설치되는지 확인하는 방법에 대해 알아보자
라이브러리의 여러 정보중 requires 항목에서 볼 수 있다.
pip show "{library_name}"
ex)
❯ pip show pre-commit
Name: pre-commit
Version: 3.8.0
Summary: A framework for managing and maintaining multi-language pre-commit hooks.
Home-page: https://github.com/pre-commit/pre-commit
Author: Anthony Sottile
Author-email: asottile@umich.edu
License: MIT
Location: "location"
**Requires: cfgv, identify, nodeenv, pyyaml, virtualenv**
Required-by:
pip install pipdeptree
pipdeptree --package "{package_name}"
requirements.txt 이나 setup.py 파일을 확인할 수도 있다.

pip show에서 보았던 내용이 있고 아래에 install_requires에 의존성 목록을 볼 수 있다.
이렇게 확인하고 라이브러리를 설치했다가 만약 해당 패키지만 삭제하면 같이 설치되었던 의존성들은 어떻게 될까?
pip uninstall ‘package_name’ 으로 패키지를 삭제하는데 해당 패키지만 삭제되고 의존성인 패키지는 그대로 남아 있는다.
왜냐하면 삭제된 패키지이외에 다른 패키지의 의존성일 수도 있기 때문에 같이 삭제했다가는 문제가 생길 수 있다.
그러면 처음에 설치했던 패키지가 더이상 필요없으면 해당 의존성을 찾아보고 일일이 다 삭제를 해야하나??
매우 비효율적이라고 생각한다.
역시나 이러한 문제를 해결해주는 친절한 라이브러리가 존재했다.
pip-autoremove를 사용하면 특정 패키지를 삭제할 때 더 이상 다른 패키지에서 사용되지 않는 의존성 패키지를 자동으로 삭제해준다.
# 설치
pip install pip-autoremove
# 삭제
pip-autoremove "{package_name}"
그런데 여러 패키지를 설치해서 실험하고 삭제하거나 프로젝트를 오래 진행하면필요하지 않는 패키지와 필요한 패키지가 requirements.txt에 섞여서 포함되어 있는 경우가 있을 수 있다.
이때 pip-check-reqs를 사용하면 requirements.txt에 포함되어 있지만 사용되지 않는 라이브러리를 쉽게 찾을 수 있다.
# 설치
pip install pip-check-reqs
# 사용되지 않는 패키지 찾기
pip-missing-reqs "location"
실제 배포를 준비할때 프로젝트 내에서 실제로 사용되는 패키지들만 명시가 되어야 한다.
실제로 사용되는 라이브러리만 포함된 requirements.txt를 생성할 수도 있다.
pipreqs 라는 라이브러리를 사용하면 된다.
# 설치
pip install pipreqs
# 프로젝트 내에서 사용되는 새로운 requirements.txt 생성
pipreqs "/path/to/your/project"