Let’s say you have a project with the following top level dependencies:
xlrd money babel pyinstaller jinja2 pywin32
After installing them you have the following packages:
altgraph==0.16.1 Babel==2.7.0 beautifulsoup4==4.7.1 et-xmlfile==1.0.1 future==0.17.1 jdcal==1.4.1 Jinja2==2.10.1 macholib==1.11 MarkupSafe==1.1.1 money==1.3.0 pefile==2019.4.18 pipdeptree==0.13.2 psutil==5.6.3 PyInstaller==3.4 pytz==2019.1 pywin32==224 pywin32-ctypes==0.2.0 soupsieve==1.9.2 xlrd==1.2.0
With pipdeptree you get a tree with the sub-depdencies to every top level package:
Babel==2.7.0 - pytz [required: >=2015.7, installed: 2019.1] beautifulsoup4==4.7.1 - soupsieve [required: >=1.2, installed: 1.9.2] et-xmlfile==1.0.1 jdcal==1.4.1 Jinja2==2.10.1 - MarkupSafe [required: >=0.23, installed: 1.1.1] money==1.3.0 pipdeptree==0.13.2 - pip [required: >=6.0.0, installed: 19.0.3] psutil==5.6.3 PyInstaller==3.4 - altgraph [required: Any, installed: 0.16.1] - macholib [required: >=1.8, installed: 1.11] - altgraph [required: >=0.15, installed: 0.16.1] - pefile [required: >=2017.8.1, installed: 2019.4.18] - future [required: Any, installed: 0.17.1] - pywin32-ctypes [required: Any, installed: 0.2.0] - setuptools [required: Any, installed: 40.8.0] pywin32==224 xlrd==1.2.0