Menu

pip trong Python: cài package, quản lý phiên bản và dùng PyPI

Cách cài, nâng cấp và gỡ package Python bằng pip, gồm cả PyPI, tệp requirements và cách tránh cái bẫy cài đặt toàn cục.

Trang này có trình soạn thảo chạy trực tiếp. Sửa, chạy và xem đầu ra ngay lập tức.

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ải sudo pip install, mà là môi trường ảo.
  • ModuleNotFoundError sau khi cài: gần như luôn là trường hợp pip install đã cài package vào một bản Python khác với bản đang chạy script. Kiểm tra which python và which pip (macOS/Linux) hoặc where python / where pip (Windows). Hoặc chắc chắn hơn, dùng python -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.
  • poetry và 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.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu