pip is the official, default Python package installer. It ships with every Python 3.4+ install. It talks to PyPI (the Python Package Index), which hosts more than 500,000 packages. Every Python tutorial assumes pip exists; every requirements.txt file is read by pip; every newer Python tool (uv, poetry, pixi) ultimately interoperates with the pip ecosystem. You cannot avoid pip in Python — you can only learn it well.
pip is also frustrating in well-known ways. It has no lockfile by default — requirements.txt is just a flat list of packages with optional version constraints, not a true lock of the entire transitive dependency tree. It's slow — installing a sizable scientific Python project can take minutes. It has no built-in Python version management — you need pyenv or similar separately. Its uninstalls are dirty — removing a package leaves its transitive deps installed. It has no global tool runner — you need pipx separately for the npx-style workflow.
Modern Python development typically chains four tools to compensate: pip + venv + pip-tools (or pip-compile) + pyenv + pipx. The next track in this quest, uv, replaces all five with a single Rust binary that's 10-100x faster. But the day you have to install that one Python tool that doesn't yet support uv, you're back to pip — so learn pip first, even if your daily driver becomes uv.