pip thực chất là gì
pip là công cụ cài những thư viện Python mà bạn không tự viết. Khi bạn chạy pip install requests, nó tìm requests trên PyPI (Python Package Index), tải phiên bản phù hợp với nền tảng của bạn và đặt vào thư mục site-packages của bản cài Python. Sau đó, import requests sẽ chạy được.
Mọi bản cài Python 3 từ python.org, Homebrew hay trình quản lý package của Linux đều có sẵn pip. Trước khi cài gì, hãy kiểm tra:
python -m pip --version
Bạn sẽ thấy số phiên bản và đường dẫn tới module pip. Nếu lệnh thất bại, cách sửa chắc chắn nhất là:
python -m ensurepip --upgrade
Lệnh này cài pip vào bản Python của bạn, dùng bản sao đi kèm trình thông dịch.
python -m pip so với pip
Bạn sẽ gặp cả hai dạng. Chúng làm gần như cùng một việc, với một khác biệt quan trọng: python -m pip dùng python trên PATH của bạn, cũng chính là bản mà script của bạn dùng. Còn pip không thì dùng bất kỳ pip nào được tìm thấy trước, mà không phải lúc nào cũng là cùng một bản.
Khi máy có nhiều hơn một bản Python (rất dễ xảy ra trên macOS), pip không kèm gì chính là nguyên nhân của tình huống khó hiểu "mình đã cài thư viện rồi mà code vẫn báo ModuleNotFoundError".
Quy tắc chung: dùng python -m pip ... khi bạn muốn chắc chắn trình thông dịch nào nhận package. pip không kèm gì vẫn ổn cho việc nhanh khi bạn đã chắc chắn.
Cài một package
Lệnh cơ bản:
python -m pip install requests
Lệnh này tải requests từ PyPI, cùng mọi thứ nó phụ thuộc vào, rồi cài đặt tất cả. Một phút sau bạn đã dùng được:
Cài nhiều package cùng lúc:
python -m pip install requests pandas rich
Ghim một phiên bản cụ thể:
python -m pip install "django==5.0.2"
python -m pip install "requests>=2.30,<3"
Dấu ngoặc kép quan trọng trong một số shell: chúng ngăn == và < bị hiểu thành toán tử của shell.
Nâng cấp và gỡ cài đặt
python -m pip install --upgrade requests
python -m pip uninstall requests
--upgrade tải phiên bản mới nhất thỏa mãn ràng buộc bạn chỉ định. uninstall gỡ package nhưng không gỡ các phụ thuộc của nó; chúng vẫn ở đó cho đến khi bạn gỡ thủ công.
Để giữ chính pip luôn mới:
python -m pip install --upgrade pip
Nên chạy vài tháng một lần. Các phiên bản pip mới phát hiện được nhiều lỗi cài đặt hơn và giải quyết phụ thuộc tốt hơn.
Xem những gì đã cài
python -m pip list
python -m pip show requests
list hiện mọi package đã cài trong bản Python hiện tại. show requests in ra phiên bản, vị trí, các phụ thuộc và giấy phép của riêng package đó, rất hữu ích khi bạn băn khoăn "rốt cuộc mình đang dùng phiên bản nào?"
requirements.txt: ghi lại các phụ thuộc
Khi dự án có nhiều hơn vài thư viện, hãy ghi danh sách lại. pip freeze làm việc này cho bạn:
python -m pip freeze > requirements.txt
Lệnh đó tạo ra một tệp với mỗi dòng là một phụ thuộc đã ghim phiên bản:
django==5.0.2
requests==2.31.0
rich==13.7.1
Ai clone repository của bạn cũng có thể cài lại y hệt bằng:
python -m pip install -r requirements.txt
pip freeze ghi lại mọi thứ đã cài, kể cả phụ thuộc gián tiếp. Như vậy là tốt nếu cần tái tạo chính xác, nhưng lại rối nếu bạn chỉ muốn các thư viện cấp cao nhất mà code thực sự import. Nhiều dự án giữ một requirements.txt viết tay chỉ gồm phụ thuộc trực tiếp và để pip tự giải quyết phần gián tiếp.
Với dự án hiện đại, pyproject.toml (đi kèm các công cụ như pip-tools, uv, poetry hoặc hatch) đang dần thay thế requirements.txt. Ý tưởng vẫn vậy: "ghi các phụ thuộc ra, chạy một lệnh để cài chúng", nhưng định dạng tệp có cấu trúc hơn.
Luôn cài vào môi trường ảo
Mọi dự án Python thực sự đều nên có một môi trường ảo. Đó là một thư mục riêng của dự án với python và các package riêng, nên pip install trong dự án này không ảnh hưởng đến dự án nào khác.
Thiết lập trong hai dòng:
python -m venv .venv
source .venv/bin/activate # macOS / Linux
# or .venv\Scripts\activate on Windows
Sau khi kích hoạt, python -m pip install requests cài vào venv. Bản Python của hệ thống vẫn sạch sẽ. Chúng tôi giải thích kỹ hơn ở trang Môi trường ảo.
Nếu bạn chạy pip install và thấy cảnh báo về việc cài vào Python của hệ thống (hoặc thông báo bảo bạn thêm --break-system-packages), hãy dừng lại. Đó là dấu hiệu để tạo một venv.
Khi pip không cài được package
Vài lỗi thường gặp và ý nghĩa của chúng:
Could not find a version that satisfies the requirement …: thường là gõ sai tên package, hoặc package cần phiên bản Python mới hơn bản bạn đang có.error: Microsoft Visual C++ 14.0 or greater is required(Windows): package có phần mở rộng native và cần bộ công cụ build C++. Hãy cài Build Tools của Microsoft hoặc tìm một wheel đã build sẵn (phần lớn package phổ biến đều có).Permission denied: bạn đang cài vào Python của hệ thống mà không có quyền root. Cách sửa đúng không phảisudo pip install, mà là môi trường ảo.ModuleNotFoundErrorsau khi cài: gần như luôn là trường hợppip installđã cài package vào một bản Python khác với bản đang chạy script. Kiểm trawhich pythonvàwhich pip(macOS/Linux) hoặcwhere python/where pip(Windows). Hoặc chắc chắn hơn, dùngpython -m pip install ....
Những lựa chọn hiện đại thay cho pip
Vài công cụ bạn sẽ nghe nhắc đến, tất cả đều tương thích với pip và giải quyết những vấn đề cụ thể:
uv: trình cài và giải quyết phụ thuộc nhanh hơn nhiều. Thay thế trực tiếp được cho phần lớn lệnh pip.pipx: cài các công cụ dòng lệnh (nhưblack,ruff,httpie) vào các venv riêng biệt, để chúng dùng được ở mọi nơi mà không xung đột với phụ thuộc của dự án.poetryvàhatch: trình quản lý dự án gộp việc xử lý môi trường ảo, giải quyết phụ thuộc và build vào một công cụ.
Ngày đầu bạn chưa cần cái nào cả. Học pip trước; dùng đến các công cụ khác khi bạn thực sự gặp vấn đề mà chúng giải quyết.
Tiếp theo: môi trường ảo
Package và môi trường ảo luôn đi cùng nhau. Bạn đã thấy lý do; trang tiếp theo đi chi tiết vào venv: tạo, kích hoạt, hủy kích hoạt và những quy ước nhỏ giúp dự án Python gọn gàng.
Câu hỏi thường gặp
pip trong Python là gì?
pip là trình cài package của Python, công cụ tải và cài các thư viện bên thứ ba từ Python Package Index (PyPI). pip install requests tải thư viện requests và đặt nó vào chỗ mà trình thông dịch Python của bạn import được. pip có sẵn trong mọi bản cài Python 3 gần đây.
Làm sao để cài pip?
pip đi kèm với Python. Nếu pip --version báo không tìm thấy lệnh, hãy chạy python -m ensurepip --upgrade hoặc python -m pip install --upgrade pip. Trên macOS và Linux, dùng pip3 nếu không tìm thấy pip; lệnh này trỏ tới bản cài Python 3.
Làm sao để cập nhật pip?
Chạy python -m pip install --upgrade pip. Dùng python -m pip thay vì chỉ pip giúp việc nâng cấp nhắm đúng trình thông dịch Python bạn đang dùng, một chi tiết nhỏ nhưng quan trọng khi máy có nhiều bản Python.
Nên cài package toàn cục hay trong môi trường ảo?
Môi trường ảo, lần nào cũng vậy, cho mọi dự án lớn hơn một script dùng một lần. Cài toàn cục gây xung đột phiên bản giữa các dự án và làm bẩn bản Python của hệ thống. Module venv (có sẵn) là câu trả lời ngắn gọn, chúng tôi giải thích kỹ ở trang Môi trường ảo.