Das habe ich noch nie genutzt. Werde ich aber mal ausprobieren.
Man kann sich Abhängigkeiten durch andere Bibliotheken erzeugen. Dann hat man Pakete installiert, von denen man nichts weiß. Wenn man nun lange ein Framework nicht mehr aktualisiert hat, wird es irgendwann ein Paket treffen, dass die veraltete Version eines Frameworks nutzt.
Schlimm sind auch Pakete, die auf typo-squatting abzielen, wie erwartet funktionieren, aber gleichzeitig private Daten vom lokalen PC an irgendeinen Server senden.
Ich hab das Tool jetzt mal getestet. Folgendes Ergebnis:
Übrigens nutze ich Python 3.12.0. Also so alt ist die Installation nicht. Das Paket hatte ich installiert und war keine Abhängigkeit.
Ich war mich nicht sicher, ob es nicht vielleicht doch eine Abhängigkeit war, aber keins der installierten Pakete setzt zstd voraus.
Code: Alles auswählen
[deadeye@nexus ~]$ pipdeptree
aiofiles==23.2.1
Brotli==1.1.0
colorama==0.4.6
fastapi==0.103.2
├── anyio [required: >=3.7.1,<4.0.0, installed: 3.7.1]
│ ├── idna [required: >=2.8, installed: 3.4]
│ └── sniffio [required: >=1.1, installed: 1.3.0]
├── pydantic [required: >=1.7.4,<3.0.0,!=2.1.0,!=2.0.1,!=2.0.0,!=1.8.1,!=1.8, installed: 2.4.2]
│ ├── annotated-types [required: >=0.4.0, installed: 0.6.0]
│ ├── pydantic-core [required: ==2.10.1, installed: 2.10.1]
│ │ └── typing-extensions [required: >=4.6.0,!=4.7.0, installed: 4.8.0]
│ └── typing-extensions [required: >=4.6.1, installed: 4.8.0]
├── starlette [required: >=0.27.0,<0.28.0, installed: 0.27.0]
│ └── anyio [required: >=3.4.0,<5, installed: 3.7.1]
│ ├── idna [required: >=2.8, installed: 3.4]
│ └── sniffio [required: >=1.1, installed: 1.3.0]
└── typing-extensions [required: >=4.5.0, installed: 4.8.0]
filelock==3.12.4
flask==3.0.0
├── blinker [required: >=1.6.2, installed: 1.6.2]
├── click [required: >=8.1.3, installed: 8.1.7]
├── itsdangerous [required: >=2.1.2, installed: 2.1.2]
├── Jinja2 [required: >=3.1.2, installed: 3.1.2]
│ └── MarkupSafe [required: >=2.0, installed: 2.1.3]
└── werkzeug [required: >=3.0.0, installed: 3.0.0]
└── MarkupSafe [required: >=2.1.1, installed: 2.1.3]
ftfy==6.1.1
└── wcwidth [required: >=0.2.5, installed: 0.2.8]
ipython==8.16.1
├── backcall [required: Any, installed: 0.2.0]
├── decorator [required: Any, installed: 5.1.1]
├── jedi [required: >=0.16, installed: 0.19.1]
│ └── parso [required: >=0.8.3,<0.9.0, installed: 0.8.3]
├── matplotlib-inline [required: Any, installed: 0.1.6]
│ └── traitlets [required: Any, installed: 5.11.1]
├── pexpect [required: >4.3, installed: 4.8.0]
│ └── ptyprocess [required: >=0.5, installed: 0.7.0]
├── pickleshare [required: Any, installed: 0.7.5]
├── prompt-toolkit [required: >=3.0.30,<3.1.0,!=3.0.37, installed: 3.0.39]
│ └── wcwidth [required: Any, installed: 0.2.8]
├── Pygments [required: >=2.4.0, installed: 2.16.1]
├── stack-data [required: Any, installed: 0.6.3]
│ ├── asttokens [required: >=2.1.0, installed: 2.4.0]
│ │ └── six [required: >=1.12.0, installed: 1.16.0]
│ ├── executing [required: >=1.2.0, installed: 2.0.0]
│ └── pure-eval [required: Any, installed: 0.2.2]
└── traitlets [required: >=5, installed: 5.11.1]
littlefs-python==0.8.0
loguru==0.7.2
matplotlib==3.8.0
├── contourpy [required: >=1.0.1, installed: 1.1.1]
│ └── numpy [required: >=1.26.0rc1,<2.0, installed: 1.26.0]
├── cycler [required: >=0.10, installed: 0.12.0]
├── fonttools [required: >=4.22.0, installed: 4.43.0]
├── kiwisolver [required: >=1.0.1, installed: 1.4.5]
├── numpy [required: >=1.21,<2, installed: 1.26.0]
├── packaging [required: >=20.0, installed: 23.2]
├── Pillow [required: >=6.2.0, installed: 10.0.1]
├── pyparsing [required: >=2.3.1, installed: 3.1.1]
└── python-dateutil [required: >=2.7, installed: 2.8.2]
└── six [required: >=1.5, installed: 1.16.0]
paho-mqtt==1.6.1
pip-audit==2.6.1
├── cachecontrol [required: >=0.13.0, installed: 0.13.1]
│ ├── msgpack [required: >=0.5.2, installed: 1.0.7]
│ └── requests [required: >=2.16.0, installed: 2.31.0]
│ ├── certifi [required: >=2017.4.17, installed: 2023.7.22]
│ ├── charset-normalizer [required: >=2,<4, installed: 3.3.1]
│ ├── idna [required: >=2.5,<4, installed: 3.4]
│ └── urllib3 [required: >=1.21.1,<3, installed: 2.0.7]
├── cyclonedx-python-lib [required: ~=4.0, installed: 4.2.3]
│ ├── license-expression [required: >=30,<31, installed: 30.1.1]
│ │ └── boolean.py [required: >=4.0, installed: 4.0]
│ ├── packageurl-python [required: >=0.11, installed: 0.11.2]
│ ├── py-serializable [required: >=0.11.1,<0.12.0, installed: 0.11.1]
│ │ └── defusedxml [required: >=0.7.1,<0.8.0, installed: 0.7.1]
│ └── sortedcontainers [required: >=2.4.0,<3.0.0, installed: 2.4.0]
├── html5lib [required: >=1.1, installed: 1.1]
│ ├── six [required: >=1.9, installed: 1.16.0]
│ └── webencodings [required: Any, installed: 0.5.1]
├── packaging [required: >=23.0.0, installed: 23.2]
├── pip-api [required: >=0.0.28, installed: 0.0.30]
│ └── pip [required: Any, installed: 23.3.1]
├── pip-requirements-parser [required: >=32.0.0, installed: 32.0.1]
│ ├── packaging [required: Any, installed: 23.2]
│ └── pyparsing [required: Any, installed: 3.1.1]
├── requests [required: >=2.31.0, installed: 2.31.0]
│ ├── certifi [required: >=2017.4.17, installed: 2023.7.22]
│ ├── charset-normalizer [required: >=2,<4, installed: 3.3.1]
│ ├── idna [required: >=2.5,<4, installed: 3.4]
│ └── urllib3 [required: >=1.21.1,<3, installed: 2.0.7]
├── rich [required: >=12.4, installed: 13.6.0]
│ ├── markdown-it-py [required: >=2.2.0, installed: 3.0.0]
│ │ └── mdurl [required: ~=0.1, installed: 0.1.2]
│ └── Pygments [required: >=2.13.0,<3.0.0, installed: 2.16.1]
└── toml [required: >=0.10, installed: 0.10.2]
pipdeptree==2.13.0
ptpython==3.0.23
├── appdirs [required: Any, installed: 1.4.4]
├── jedi [required: >=0.16.0, installed: 0.19.1]
│ └── parso [required: >=0.8.3,<0.9.0, installed: 0.8.3]
├── prompt-toolkit [required: >=3.0.28,<3.1.0, installed: 3.0.39]
│ └── wcwidth [required: Any, installed: 0.2.8]
└── Pygments [required: Any, installed: 2.16.1]
pyperformance==1.0.9
├── packaging [required: Any, installed: 23.2]
└── pyperf [required: Any, installed: 2.6.1]
└── psutil [required: >=5.9.0, installed: 5.9.5]
pyright==1.1.331
└── nodeenv [required: >=1.6.0, installed: 1.8.0]
└── setuptools [required: Any, installed: 68.2.2]
PySide2==5.13.2
└── shiboken2 [required: ==5.13.2, installed: 5.13.2]
python-can==4.2.2
├── msgpack [required: ~=1.0.0, installed: 1.0.7]
├── packaging [required: Any, installed: 23.2]
├── setuptools [required: Any, installed: 68.2.2]
├── typing-extensions [required: >=3.10.0.0, installed: 4.8.0]
└── wrapt [required: ~=1.10, installed: 1.15.0]
pyzmq==25.1.1
richbench==1.0.3
├── pyinstrument [required: Any, installed: 4.5.3]
└── rich [required: Any, installed: 13.6.0]
├── markdown-it-py [required: >=2.2.0, installed: 3.0.0]
│ └── mdurl [required: ~=0.1, installed: 0.1.2]
└── Pygments [required: >=2.13.0,<3.0.0, installed: 2.16.1]
scipy==1.11.3
└── numpy [required: >=1.21.6,<1.28.0, installed: 1.26.0]
shed==2023.6.1
├── autoflake [required: >=1.4, installed: 2.2.1]
│ └── pyflakes [required: >=3.0.0, installed: 3.1.0]
├── black [required: >=23.3.0, installed: 23.9.1]
│ ├── click [required: >=8.0.0, installed: 8.1.7]
│ ├── mypy-extensions [required: >=0.4.3, installed: 1.0.0]
│ ├── packaging [required: >=22.0, installed: 23.2]
│ ├── pathspec [required: >=0.9.0, installed: 0.11.2]
│ └── platformdirs [required: >=2, installed: 3.11.0]
├── com2ann [required: >=0.3.0, installed: 0.3.0]
├── isort [required: >=5.10.1, installed: 5.12.0]
├── libcst [required: >=0.4.10, installed: 1.1.0]
│ ├── PyYAML [required: >=5.2, installed: 6.0.1]
│ ├── typing-extensions [required: >=3.7.4.2, installed: 4.8.0]
│ └── typing-inspect [required: >=0.4.0, installed: 0.9.0]
│ ├── mypy-extensions [required: >=0.3.0, installed: 1.0.0]
│ └── typing-extensions [required: >=3.7.4, installed: 4.8.0]
└── pyupgrade [required: >=3.0.0, installed: 3.15.0]
└── tokenize-rt [required: >=5.2.0, installed: 5.2.0]
stem==1.8.2
sympy==1.12
└── mpmath [required: >=0.19, installed: 1.3.0]
thonny==4.1.3
├── asttokens [required: >=2.0, installed: 2.4.0]
│ └── six [required: >=1.12.0, installed: 1.16.0]
├── docutils [required: >=0.16, installed: 0.20.1]
├── jedi [required: >=0.18.1, installed: 0.19.1]
│ └── parso [required: >=0.8.3,<0.9.0, installed: 0.8.3]
├── mypy [required: >=0.761, installed: 1.6.0]
│ ├── mypy-extensions [required: >=1.0.0, installed: 1.0.0]
│ └── typing-extensions [required: >=4.1.0, installed: 4.8.0]
├── pylint [required: >=2.4, installed: 3.0.0]
│ ├── astroid [required: >=3.0.0,<=3.1.0-dev0, installed: 3.0.0]
│ ├── dill [required: >=0.3.6, installed: 0.3.7]
│ ├── dill [required: >=0.3.7, installed: 0.3.7]
│ ├── isort [required: >=4.2.5,<6, installed: 5.12.0]
│ ├── mccabe [required: >=0.6,<0.8, installed: 0.7.0]
│ ├── platformdirs [required: >=2.2.0, installed: 3.11.0]
│ └── tomlkit [required: >=0.10.1, installed: 0.12.1]
├── pyserial [required: >=3.4, installed: 3.5]
├── Send2Trash [required: >=1.5, installed: 1.8.2]
├── setuptools [required: >=45.2, installed: 68.2.2]
└── wheel [required: Any, installed: 0.41.2]
zstd==1.5.5.1