pip detail
This commit is contained in:
parent
ff81a00ad6
commit
db8449fe68
198
pages/requirement/pip.md
Normal file
198
pages/requirement/pip.md
Normal file
@ -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
|
||||||
|
```
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user