|
1 | 1 | A summary of package management tools in the Python ecosystem |
2 | 2 |
|
3 | | -| | poetry | pipenv | pip | virtualenv | setup.py | twine | pyenv | pipsi | |
4 | | -|------------------------------------------------------------------------|--------|--------|-----|------------|----------|-------|-------|-------| |
5 | | -| installs abstract dependencies | ✔️ | ✔️ | ✔️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | |
6 | | -| installs concrete dependencies | ✔️ | ✔️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | |
7 | | -| isolates Python environments | ✔️ | ✔️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | ✔️ | |
8 | | -| captures packaging metadata (name, version, author, etc) | ✔️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | |
9 | | -| file format based on a PEP | ✔️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | |
10 | | -| automatically creates virtual environments | ✔️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | |
11 | | -| generates concrete dependencies from abstract dependencies (requirements.txt or lock file) | ✔️ | ✔️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | |
12 | | -| can generate lock file with hashes | ✔️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | |
13 | | -| builds packages suitable for distribution on PyPI | ✔️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | |
14 | | -| publishes packages to PyPI | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | ✖️ | |
15 | | -| can enter shell for virtual environment | ✖️ | ✔️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | |
16 | | -| installs specific Python versions to system | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | |
17 | | -| globally installs and sandboxes Python packages that have command-line entry points | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✔️ | |
| 3 | +## tools |
| 4 | + |
| 5 | +| | poetry | pipenv | pip | virtualenv | setup.py (setuptools) | twine | pyenv | pipsi | |
| 6 | +|--------------------------------------------------------------------------------------------|------------------------------------------|----------------------------------------------------|--------------------------|------------------------------------|------------------------------------------------------------------|---------------------------------------------------------|---------------------------|--------------------------------| |
| 7 | +| installs abstract dependencies | ✔️ | ✔️ | ✔️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | |
| 8 | +| installs concrete dependencies | ✔️ | ✔️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | |
| 9 | +| isolates Python environments | ✔️ | ✔️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | ✔️ | |
| 10 | +| captures packaging metadata (name, version, author, etc) | ✔️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | |
| 11 | +| file format based on a PEP | ✔️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | |
| 12 | +| automatically creates virtual environments | ✔️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | |
| 13 | +| generates concrete dependencies from abstract dependencies (requirements.txt or lock file) | ✔️ | ✔️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | |
| 14 | +| can generate lock file with hashes | ✔️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | |
| 15 | +| builds packages suitable for distribution on PyPI | ✔️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | |
| 16 | +| publishes packages to PyPI | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | ✖️ | |
| 17 | +| can enter shell for virtual environment | ✖️ | ✔️ | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | |
| 18 | +| installs specific Python versions to system | ✖️ | ✔️ | ✖️ | ✖️ | ✖️ | ✖️ | ✔️ | ✖️ | |
| 19 | +| globally installs and sandboxes Python packages that have command-line entry points | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✖️ | ✔️ | |
| 20 | +| relies on | virtualenv | virtualenv, pew, pip-tools, requirementslib, pyenv | - | pip, shell scripts | setuptools | - | shell scripts | virtualenv | |
| 21 | +| stated purpose | dependency management and packaging tool | development workflow tool | Python package installer | Python virtual environment builder | download, build, install, upgrade, and uninstall Python packages | Collection of utilities for publishing packages on PyPI | python version management | global Python script installer | |
| 22 | + |
| 23 | + |
| 24 | +## File formats |
| 25 | + |
| 26 | +| | requirements.txt | Pipfile | Pipfile.lock | pyproject.toml | pyproject.lock |setup.py |
| 27 | +|-------------------|-------------------|----------------------|----------------------|----------------|----------------------|-| |
| 28 | +| purpose | todo | | | | | | |
| 29 | +| metadata captured | todo | | | | | | |
| 30 | +| origin | convention of pip | convention of Pipenv | convention of Pipenv | PEP 518 | convention of Poetry | todo | |
| 31 | + |
| 32 | + |
18 | 33 |
|
19 | 34 | Disclaimer: I did not author or maintain any of these tools and strive to keep this list as impartial as possible. |
20 | 35 |
|
|
0 commit comments