diff --git a/pages/requirement/pip.md b/pages/requirement/pip.md new file mode 100644 index 0000000..3c66b3c --- /dev/null +++ b/pages/requirement/pip.md @@ -0,0 +1,198 @@ +# pip + +`pip` is Python’s **package manager**. +It’s the tool you use to **install, upgrade, and remove Python libraries** that aren’t included in the standard library. + +Think of it like: + +* `apt` on Debian/Ubuntu +* `dnf` on Fedora +* `npm` for JavaScript + +## What does pip do? + +With `pip`, you can: + +1. **Install packages** + +```bash +pip install requests +``` + +2. **Upgrade packages** + +```bash +pip install --upgrade requests +``` + +3. **Uninstall packages** + +```bash +pip uninstall requests +``` + +4. **List installed packages** + +```bash +pip list +``` + +5. **Install from a requirements file** + +```bash +pip install -r requirements.txt +``` + +## Where do packages come from? + +By default, pip downloads packages from **PyPI** (Python Package Index): + +* [https://pypi.org](https://pypi.org) +* Contains **hundreds of thousands** of Python libraries +* Example packages: `requests`, `numpy`, `flask`, `django`, `pandas` + +## pip vs Python itself + +* **Python** → the programming language + standard library +* **pip** → installs *extra* libraries written by the community + +Example: + +```python +import math # standard library (no pip needed) +import requests # external library (installed via pip) +``` + +## pip and Python versions + +On many systems: + +* `pip` → Python 2 or system default +* `pip3` → Python 3 + +Safer way (recommended): + +```bash +python3 -m pip install requests +``` + +This ensures pip matches the Python version you’re using. + +## Virtual environments + +`pip` works best with **virtual environments** ([venv](pages/requirement/venv.md)) to avoid breaking system Python: + +```bash +python3 -m venv venv +source venv/bin/activate +pip install flask +``` + +## What is `requirements.txt`? + +`requirements.txt` is a **list of Python packages** (and versions) your project depends on. + +Example: + +```txt +flask==3.0.0 +requests>=2.31.0 +gunicorn +``` + +## Install dependencies from `requirements.txt` + +### Basic usage + +```bash +pip install -r requirements.txt +``` + +### Safer (recommended) + +```bash +python3 -m pip install -r requirements.txt +``` + +This ensures pip matches your Python version. + +## Use with a virtual environment (best practice) + +```bash +python3 -m venv venv +source venv/bin/activate + +pip install -r requirements.txt +``` + +After activation, all packages go into `venv/`. + +## Generate `requirements.txt` from current environment + +If you already installed packages: + +```bash +pip freeze > requirements.txt +``` + +⚠️ This captures **everything** installed in the environment. + +## Common version formats + +```txt +flask==3.0.0 # exact version (reproducible builds) +requests>=2.31.0 # minimum version +numpy~=1.26.0 # compatible release +django<5.0 # version upper limit +``` + +## Install from multiple requirement files + +```bash +pip install -r base.txt -r dev.txt +``` + +Useful for: + +* `base.txt` → production +* `dev.txt` → development tools (pytest, black, etc.) + +## Requirements from Git / local path + +```txt +git+https://github.com/pallets/flask.git +-e . +``` + +Then install: + +```bash +pip install -r requirements.txt +``` + +## Debian / system Python warning (important) + +On Debian-based systems, **don’t install globally** unless you know what you’re doing: + +❌ Bad: + +```bash +sudo pip install -r requirements.txt +``` + +✅ Good: + +```bash +python3 -m venv venv +pip install -r requirements.txt +``` + +## Typical workflow (TL;DR) + +```bash +python3 -m venv venv +source venv/bin/activate +pip install -r requirements.txt +python app.py +``` +