1. pyenv là gì?
Đối với các nhà phát triển Python, việc sử dụng các phiên bản Python khác nhau cho từng dự án là điều thường gặp. Trong những trường hợp như vậy, công cụ hữu ích chính là pyenv
. pyenv
là một công cụ giúp quản lý nhiều phiên bản Python và cho phép bạn chuyển đổi dễ dàng giữa các phiên bản cho từng dự án cụ thể.
Vấn đề khi quản lý phiên bản Python
Trong quá trình phát triển Python, bạn có thể cần sử dụng các phiên bản Python khác nhau cho từng dự án. Ví dụ, một dự án cần Python 3.9 trong khi một dự án khác lại yêu cầu Python 2.7. Thông thường, hệ thống chỉ cài đặt một phiên bản Python, vì vậy việc chuyển đổi giữa các phiên bản là khá phiền phức. pyenv
chính là giải pháp để giải quyết vấn đề này.
Lợi ích của pyenv
Sử dụng pyenv
mang lại những lợi ích sau:
- Chuyển đổi phiên bản dễ dàng: Với
pyenv
, bạn có thể dễ dàng chuyển đổi phiên bản Python cho toàn hệ thống hoặc từng dự án. - Quản lý nhiều phiên bản: Bạn có thể quản lý nhiều phiên bản Python đã được cài đặt trên hệ thống chỉ với một lệnh duy nhất, giúp xử lý sự khác biệt về phiên bản hoặc thư viện cho từng dự án.
- Hỗ trợ nhiều hệ điều hành (ngoại trừ Windows): Có thể sử dụng trên nhiều hệ điều hành như macOS và Linux.
Cách hoạt động của pyenv
pyenv
tạo thư mục riêng cho từng phiên bản Python và cài đặt các phiên bản vào đó. Người dùng có thể sử dụng lệnh pyenv global
hoặc pyenv local
để chỉ định phiên bản Python cho toàn hệ thống hoặc cho từng dự án cụ thể.

2. Cách cài đặt pyenv
Tổng quan
Để sử dụng pyenv
, trước tiên bạn cần cài đặt nó vào hệ thống. Trong phần này, chúng tôi sẽ hướng dẫn cách cài đặt pyenv
trên macOS và Linux. Đối với Windows, pyenv
không được hỗ trợ chính thức nên bạn nên sử dụng các phương pháp khác như WSL hoặc Anaconda.
Cách cài đặt trên macOS
Trên macOS, bạn có thể dễ dàng cài đặt pyenv
bằng cách sử dụng Homebrew
– một công cụ quản lý gói phần mềm rất tiện lợi dành cho macOS. Vui lòng làm theo các bước dưới đây để cài đặt.
- Kiểm tra xem đã cài đặt Homebrew chưa
Mở Terminal và chạy lệnh sau để kiểm tra:
brew --version
Nếu phiên bản được hiển thị, Homebrew đã được cài đặt. Nếu chưa, hãy tham khảo hướng dẫn cài đặt tại trang chính thức của Homebrew.
- Cài đặt pyenv
Nếu đã cài đặt Homebrew, chạy lệnh sau để cài đặtpyenv
:
brew install pyenv
Sau khi cài đặt xong, chuyển sang bước tiếp theo.
- Thiết lập biến môi trường
Để sử dụngpyenv
, bạn cần thêm thiết lập vào file cấu hình shell như.bash_profile
hoặc.zshrc
. Thực hiện các lệnh sau trong Terminal:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init --path)"' >> ~/.bash_profile
Nếu bạn sử dụng .zshrc
, hãy thay thế .bash_profile
bằng .zshrc
. Sau khi thiết lập xong, hãy khởi động lại Terminal hoặc chạy lệnh sau để áp dụng thay đổi:
source ~/.bash_profile
- Kiểm tra cài đặt
Chạy lệnh sau để xác nhận rằngpyenv
đã được cài đặt thành công:
pyenv --version
Nếu số phiên bản được hiển thị, việc cài đặt đã thành công.
Cách cài đặt trên Linux
Trên môi trường Linux, về cơ bản bạn có thể cài đặt pyenv
theo cách tương tự như trên macOS, nhưng thường sử dụng trình quản lý gói như apt
hoặc yum
. Dưới đây là các bước cài đặt trên Ubuntu.
- Cài đặt các gói cần thiết
Trước khi càipyenv
, bạn cần cài các gói phụ thuộc. Thực hiện lệnh sau để cài đặt các công cụ cần thiết:
sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
- Cài đặt pyenv
Sử dụng Git để clone repository củapyenv
và cài đặt:
curl https://pyenv.run | bash
- Thiết lập biến môi trường
Để kích hoạtpyenv
, thêm cấu hình sau vào.bashrc
hoặc.zshrc
:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
Khởi động lại terminal hoặc thực hiện source ~/.bashrc
để áp dụng cấu hình.
- Kiểm tra cài đặt
Chạy lệnh sau để xác nhậnpyenv
đã được cài đặt đúng:
pyenv --version
Xử lý sự cố
Nếu gặp lỗi trong quá trình cài đặt pyenv
, nguyên nhân có thể là thiếu thư viện phụ thuộc. Đặc biệt trên Linux, các hệ thống khác nhau có thể cần thư viện khác nhau, vì vậy hãy tham khảo tài liệu chính thức để cài đặt đúng các gói cần thiết.

3. Quản lý phiên bản Python
Sau khi cài đặt pyenv
, bạn sẽ cần học cách quản lý các phiên bản Python. Phần này sẽ hướng dẫn cách cài đặt và chuyển đổi phiên bản Python bằng pyenv
.
Cài đặt phiên bản Python
Với pyenv
, bạn có thể dễ dàng cài đặt các phiên bản Python khác nhau. Ví dụ, nếu bạn muốn dùng Python 3.8 cho một dự án và Python 3.9 cho dự án khác, bạn có thể cài từng phiên bản như sau:
- Kiểm tra danh sách phiên bản
Chạy lệnh sau để hiển thị danh sách các phiên bản có thể cài đặt:
pyenv install --list
Lệnh này sẽ hiển thị toàn bộ các phiên bản Python mà pyenv
hỗ trợ, giúp bạn chọn phiên bản phù hợp.
- Cài đặt phiên bản Python
Chạy lệnh sau để cài phiên bản cụ thể:
pyenv install 3.9.1
Lệnh trên sẽ cài đặt Python 3.9.1 vào hệ thống. Nếu bạn cần nhiều phiên bản, hãy lặp lại với phiên bản khác.
Chuyển đổi phiên bản Python
pyenv
giúp bạn dễ dàng chuyển đổi giữa các phiên bản Python đã cài đặt, nhờ đó mỗi dự án có thể sử dụng phiên bản phù hợp và tránh xung đột.
- Chuyển đổi cho toàn hệ thống
Dùng lệnh sau để thay đổi phiên bản Python dùng chung cho toàn hệ thống:
pyenv global 3.9.1
Lệnh này đặt Python 3.9.1 làm mặc định cho toàn bộ hệ thống.
- Chuyển đổi cho từng dự án
Nếu bạn chỉ muốn thay đổi phiên bản Python cho một thư mục cụ thể, hãy dùng:
pyenv local 3.8.0
Phiên bản Python 3.8.0 sẽ chỉ áp dụng trong thư mục hiện tại, các thư mục khác vẫn dùng phiên bản toàn cục từ pyenv global
.
- Kiểm tra phiên bản hiện tại
Chạy lệnh sau để kiểm tra phiên bản Python đang được sử dụng:
pyenv version
Lệnh này hiển thị phiên bản Python đang được áp dụng theo từng cấp độ (toàn hệ thống hoặc cục bộ).
Gỡ cài đặt phiên bản
Nếu một phiên bản không còn cần thiết, bạn có thể gỡ bỏ bằng lệnh sau:
- Cách gỡ phiên bản
Dùng lệnh sau để gỡ cài đặt một phiên bản Python cụ thể:
pyenv uninstall 3.9.1
Lệnh này sẽ xóa Python 3.9.1 khỏi hệ thống.

4. Kết hợp với virtualenv
pyenv
hỗ trợ mạnh mẽ cho việc quản lý phiên bản Python, nhưng để quản lý các thư viện phụ thuộc cho từng dự án hiệu quả hơn, việc kết hợp với virtualenv
là rất phổ biến. Phần này sẽ giải thích cách kết hợp pyenv
và virtualenv
cũng như lợi ích của chúng.
virtualenv là gì?
virtualenv
là công cụ tạo môi trường ảo độc lập cho từng dự án Python, giúp cách ly các thư viện và gói cài đặt. Nhờ đó, bạn có thể sử dụng các phiên bản thư viện khác nhau trong mỗi dự án mà không gây xung đột.
Ví dụ, dự án A có thể dùng requests
bản 2.0 trong khi dự án B dùng bản 3.0.
Sự khác biệt giữa pyenv và virtualenv
pyenv
chủ yếu dùng để quản lý phiên bản Python, trong khi virtualenv
giúp quản lý thư viện và gói phụ thuộc trong môi trường ảo.
Khi kết hợp pyenv
và virtualenv
, bạn sẽ có các lợi ích sau:
- Quản lý nhiều phiên bản Python: Dùng
pyenv
để cài và chọn phiên bản Python phù hợp cho từng dự án. - Quản lý thư viện theo dự án: Dùng
virtualenv
để tạo môi trường riêng biệt, tránh xung đột thư viện giữa các dự án.
Cài đặt pyenv-virtualenv
Plugin pyenv-virtualenv
giúp việc quản lý môi trường ảo trở nên đơn giản hơn. Cài đặt như sau:
- Cài đặt plugin
Trên macOS, chạy:
brew install pyenv-virtualenv
Trên Linux, dùng lệnh:
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
- Thiết lập biến môi trường
Sau khi cài xong, thêm dòng sau vào file cấu hình shell:
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile
Tạo môi trường ảo
Dùng pyenv-virtualenv
để tạo môi trường ảo dựa trên phiên bản Python cụ thể. Ví dụ:
pyenv virtualenv 3.8.0 my_project_env
Lệnh này tạo môi trường tên là my_project_env
dựa trên Python 3.8.0.
Chuyển đổi môi trường ảo
Để sử dụng môi trường ảo trong dự án, dùng lệnh sau:
pyenv local my_project_env
Môi trường này sẽ chỉ áp dụng trong thư mục hiện tại.
Xóa môi trường ảo
Nếu không còn cần môi trường ảo, bạn có thể xóa nó bằng lệnh:
pyenv uninstall my_project_env
Lợi ích của virtualenv
Khi kết hợp pyenv
và virtualenv
, bạn có thể hoàn toàn tách biệt môi trường của từng dự án. Điều này giúp tránh xung đột thư viện và đảm bảo môi trường phát triển ổn định cho từng dự án.

5. Những lưu ý khi sử dụng pyenv
Sử dụng pyenv
và virtualenv
giúp quản lý phiên bản Python và môi trường phát triển một cách hiệu quả. Tuy nhiên, cũng có một số điểm cần chú ý và lỗi thường gặp. Dưới đây là các vấn đề phổ biến và cách khắc phục khi sử dụng pyenv
.
1. Hạn chế hỗ trợ trên Windows
pyenv
được khuyến nghị sử dụng trên macOS và Linux. Trên Windows, pyenv
không được hỗ trợ chính thức nên bạn có thể gặp hạn chế khi sử dụng. Các lựa chọn cho người dùng Windows gồm:
- Sử dụng Windows Subsystem for Linux (WSL): Cài đặt WSL để tạo môi trường Linux trên Windows, cho phép sử dụng
pyenv
giống như trên hệ điều hành Linux. - Sử dụng Anaconda: Một lựa chọn thay thế
pyenv
cho Windows để quản lý nhiều phiên bản Python và môi trường ảo.
2. Lỗi do thiếu thư viện phụ thuộc
Trên Linux, nếu thiếu các thư viện cần thiết khi cài đặt pyenv
, bạn có thể gặp lỗi. Ví dụ thông báo sau cho biết thiếu thư viện bzip2:
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
Cách khắc phục:
- Cài đặt các thư viện phụ thuộc cần thiết như
libbz2-dev
,libssl-dev
, v.v. bằng lệnh dưới đây:
sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev
3. Xung đột giữa Python hệ thống và pyenv
Khi hệ thống đã cài sẵn Python, có thể xảy ra xung đột với phiên bản được quản lý bằng pyenv
, đặc biệt nếu cấu hình PATH chưa đúng.
Cách khắc phục:
- Kiểm tra file khởi động shell (
.bashrc
,.zshrc
, v.v.) để đảm bảo đã thêm đúng dòng cấu hình chopyenv
, ví dụ:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
- Sau đó, khởi động lại terminal hoặc dùng lệnh
source ~/.bashrc
để áp dụng cấu hình.
4. Lỗi khi cài đặt một số phiên bản Python
Việc cài đặt một số phiên bản cụ thể có thể thất bại nếu thiếu các công cụ hoặc thư viện biên dịch cần thiết.
Cách khắc phục:
- Cài đặt các gói như
build-essential
,libssl-dev
, v.v., sau đó thử lại lệnhpyenv install
.
5. Sai phiên bản khi dùng lệnh pyenv install
Khi dùng pyenv install
, nếu nhập sai phiên bản Python sẽ gây lỗi. Do đó, cần chắc chắn rằng phiên bản đó nằm trong danh sách được hỗ trợ.
Cách khắc phục:
- Trước tiên chạy
pyenv install --list
để kiểm tra danh sách phiên bản có thể cài đặt, sau đó nhập đúng phiên bản cần thiết.
6. Xung đột giữa các môi trường ảo
Nếu bạn sử dụng nhiều môi trường ảo chia sẻ cùng một phiên bản Python, có thể xảy ra xung đột về phiên bản thư viện giữa các môi trường.
Cách khắc phục:
- Tạo môi trường ảo riêng biệt cho từng dự án bằng
virtualenv
hoặcpyenv-virtualenv
để cách ly hoàn toàn các thư viện phụ thuộc. Ngay cả khi dùng chung một phiên bản Python, mỗi môi trường ảo nên tách biệt.
6. Tổng kết và bước tiếp theo
pyenv
là một công cụ mạnh mẽ và hữu ích trong việc quản lý phiên bản Python, đặc biệt khi bạn phải làm việc với nhiều dự án có yêu cầu phiên bản khác nhau. Việc sử dụng pyenv
giúp chuyển đổi phiên bản dễ dàng và xây dựng môi trường phát triển linh hoạt. Kết hợp với virtualenv
, bạn có thể dễ dàng kiểm soát các thư viện phụ thuộc và tránh xung đột giữa các dự án.
Tóm tắt lợi ích của pyenv
- Quản lý phiên bản dễ dàng: Dễ dàng chuyển đổi giữa nhiều phiên bản Python ở cấp hệ thống hoặc dự án.
- Kết hợp môi trường ảo: Sử dụng
pyenv-virtualenv
hoặcvirtualenv
để tách biệt môi trường và thư viện giữa các dự án. - Khả năng xử lý lỗi tốt: Biết cách khắc phục các lỗi phổ biến như thiếu thư viện, sai cấu hình PATH hay xung đột môi trường.
Bước tiếp theo
- Nâng cao hiệu quả phát triển với pyenv: Sau khi nắm được thao tác cơ bản với
pyenv
, bạn có thể kết hợp thêm các công cụ nhưpipenv
hoặcpoetry
để tự động hóa và đơn giản hóa việc quản lý phụ thuộc. - Thích nghi với các môi trường khác: Nếu bạn dùng Windows, hãy cân nhắc sử dụng WSL hoặc Anaconda như giải pháp thay thế cho
pyenv
. - Áp dụng vào dự án thực tế: Hãy thử sử dụng
pyenv
trong một dự án thực tế – dù là dự án cũ hay mới – để cảm nhận sự tiện lợi trong việc thiết lập và duy trì môi trường phát triển.
目次 1 1. はじめに1.1 Pythonバージョン管理の重要性1.2 Ubuntuとpyenvの組み合わせの利点2 …