Giới thiệu về môi trường ảo Python
Nếu là một lập trình viên Python, dù mới bắt đầu hay đã có kinh nghiệm, chắc chắn bạn dã có nghe hoặc sử dụng qua môi trường ảo (virtual environment) Python. Vậy môi trường ảo là gì và tại sao nó đóng một vai trò quan trọng trong việc sử dụng Python? Trong khuôn khổ bài viết này, chúng ta sẽ cùng tìm hiểu.
Môi trường ảo là một thực thể của trình biên dịch Python. Lập trình viên có thể sử dụng môi trường ảo để cài đặt và quản lý các thư viện và các chương trình phụ thuộc trong Python độc lập với nhau. Với môi trường ảo, lập trình viên có thể khởi tạo và quản lý đồng thời nhiều dự án Python khác nhau sử dụng các phiên bản, cáu hình khác nhau của các thư viện Python trên cùng một máy.
Môi trường ảo xuất hiện lần đầu tiên trong phiên bản Python 3.3 với module venv. Đây là một module được cài đặt sẵn trong trình biên dịch Python để khởi tạo và quản lý các môi trường ảo. Trước khi có module này, lập trình viên phải sử dụng các công cụ hỗ trợ từ các nhà phát triển khác như là virtualenv hoặc là pyenv để tạo ra các môi trường ảo.
Tại sao nên sử dụng môi trường ảo?
Sử dụng môi trường ảo đem lại nhiều ích lợi trong quá trình phát triển bằng Python. Sau đây là một số ích lợi mà môi trường ảo mang lại:
- Tách biệt: Môi trường ảo cung cấp một môi trường riêng biệt cho mỗi dự án khác nhau. Điều này đồng nghĩa với việc các thư viện và gói phụ thuộc trong một môi trường ảo sẽ không ảnh hưởng đến các thư viện trong các môi trường khác.
- Nhất quán: Môi trường ảo cho phép lập trình viên tạo ra các môi trường đồng nhất cho các dự án bằng cách chỉ định chính xác phiên bản và cấu hình đòi hỏi.
- Cơ động: Các môi trường ảo có thể được chia xẻ và di chuyển dễ dàng qua các máy tính khác nhau, tạo điều kiện cho các lập trình viên trong cùng dự án có thể làm việc với nhau một cách tốt nhất.
- Bảo mật: Các môi trường ảo cung cấp một mức độ bảo mật nhắt định bằng các tách rời các dự án ra khỏi trình biên dịch Python trong hệ thống. Điều này đồng nghĩa với việc các thư viện và các gói phụ thuộc được cài đặt trong môi trường ảo sẽ không thể sửa đổi môi trường Python của hệ thống.
Cách khởi tạo môi trường ảo
Quá trình khởi tạo môi trường ảo rất đơn giản. Đầu tiên, mở cửa sổ lệnh (command prompt nếu sử dụng Windows hoặc terminal nếu sử dụng Linux hoặc MacOS) và đi đến thư mục (directory) cần tạo môi trường ảo. Tiếp theo, thực hiện lệnh sau đây:
1 |
python -m venv myenv |
Lệnh này sẽ tạo ra một môi trường ảo tên là “myenv” trong thư mục hiện hành. “myenv” có thể được thay thế bằng bất kỳ tên gọi nào khác.
Sau khi hoàn thành lệnh này, bạn sẽ thấy một thư mục con gọi là “myenv” được tạo ra trong thư mục hiện hành. Thư mục này bao gồm trình biên dịch Python cho môi trường ảo, thư viện chuẩn của Python, và các tập tin cần thiết khác.
Ngoài ra, bạn có thể chỉ định phiên bản Python nào sẽ được sử dụng trong môi trường ảo thay vì sử dụng phiên bản Python mặc định từ hệ điều hành với tham số -p như trong ví dụ sau:
1 |
python -m virtualenv -p D:\Python38\python.exe my_second_env |
Tuy nhiên, việc này đòi hỏi bạn phải cài đặt phiên bản Python tương ứng trước đó (Python 3.8 như trong ví dụ trên). Với Windows thì quá trình này tương đối đơn giản, bạn chỉ cần download tập tin cài đặt phiên bản Python cần sử dụng và cài đặt vào một thư mục khác với thư mục đã cài đặt các phiên bản Python trước đó. Quá trình này trên Linux hoặc MacOS có phần phức tạp hơn. Một số phiên bản Linux (như Fedora) có sẵn vài phiên bản Python khác nhau và cho phép bạn cài đặt trực tiếp từ trình quản lý gói (package manager). Ví dụ như trong phiên bản Fedora 38, để cài đặt Python 3.8 (dù đã có phiên bản mặc định là Python 3.11), bạn chỉ cần sử dụng lệnh sau:
1 |
sudo dnf install python38 |
Sau khi thực hiện lệnh này, cả hai phiên bản Python 3.11 và Python 3.8 sẽ cùng hiện diện trong hệ thống và bạn có thể khởi tạo môi trường ảo sử dụng Python 3.8 với đường dẫn vào thư mục chứa Python 3.8 như trong ví dụ trên. Tuy nhiên, với một số bản phân phối Linux khác như Debian hoặc Ubuntu, bạn chỉ có thể cài đặt các phiên bản Python ngoài phiên bản mặc định bằng cài tải mã nguồn về và biên dịch.
Kích hoạt môi trường ảo
Để sử dụng một môi trường ảo, trước hết bạn phải kích hoạt nó. Quá trình này sẽ cập nhật biến môi trường PATH để sử dụng trình biên dịch và các gói Python trong môi trường ảo.
Để kích hoạt môi trường ảo “myenv” đã khởi tạo như trên, nhập lệnh sau:
1 |
source myenv/bin/activate |
Với MacOS hoặc Linux:
1 |
myenv\Scripts\activate.bat |
Sau khi lệnh này hoàn tất, tên của môi trường ảo sẽ xuất hiện trong dấu nhắc của cửa sổ lệnh như sau:
Ngừng kích hoạt môi trường ảo
Để chấm dứt chế độ kích hoạt của môi trường ảo, sử dụng lệnh sau:
1 |
deactivate |
Lệnh này sẽ tắt chế độ kích hoạt của môi trường ảo và trở lại trạng thái bình thường như trước khi kích hoạt. Sau lệnh này, tên của môi trường ảo sẽ không còn xuất hiện trong dấu nhắc của cửa sổ lệnh.
Cài đặt các gói trong môi trường ảo
Sau khi đã kích hoạt môi trường ảo, bạn có thể cài đặt các gói hoặc thư viện khác nhau bằng cách sử dụng chương trình quản lý gói của Python là pip. Khi bạn cài đặt một gói trong môi trường ảo, nó chỉ có hiệu lực trong phạm vi của môi trường ảo đó mà thôi và hoàn toàn không ảnh hưởng đến các môi trường ảo khác và môi trường Python trong toàn hệ thống.
Để cài đặt một gói, sử dụng lệnh sau đây:
1 |
pip install package_name |
Thay thế package_name bằng tên của gói cần cài đặt.
Ví dụ: để cài đặt gói numpy, thực hiện lệnh sau:
1 |
pip install numpy |
Bạn cũng có thể cài đặt một phiên bản cụ thể của gói bằng cách chỉ định số phiên bản như sau:
1 |
pip install package_name==version_number |
Ví dụ: để cài đặt phiên bản 1.24.2 của gói numpy, thực hiện lệnh sau:
1 |
pip install numpy==1.24.2 |
Quá trình cài đặt sẽ diễn ra tương tự như trong hình dưới đây:
Sử dụng các tập tin điều kiện (requirement file)
Các thành viên làm việc chung với nhau trong các dự án lớn có thể gặp khó khăn trong việc cài đặt từng gói và các thành phần phụ thuộc. Điều này sẽ được khắc phục với các file requirements. Về cơ bản, các file requirements là các tập tin văn bản liệt kê tất cả các gói và số phiên bản của chúng được sử dụng trong dự án.
Để tạo ra tập tin requirements cho một dự án, bạn có thể vào thư mục dự án và kích hoạt môi trường ảo, Sau dó thực hiện lệnh dưới đây:
1 |
pip freeze > requirements.txt |
Lệnh này sẽ tạo ra một tập tin tên là “requirements.txt”, trong đó liệt kê tất các gói đã được cài đặt và số phiên bản của chúng. Bạn có thể thêm hoặc bớt các gói trong tập tin này nếu cần thiết.
Để cài đặt các gói trong tập tin requirement, thực hiện lệnh sau đây:
1 |
pip install -r requirements.txt |
Lệnh này sẽ cài đặt tất cả các gói kèm theo các thành phần cần thiết để sử dụng các gói này được liệt kê trong tập tin requirements.txt
Chia xẻ môi trường ảo
Các môi trường ảo có thể được chia xẻ giữa các máy tính khác nhau một cách dễ dàng, và nhờ đó các lập trình viên có thể làm việc chung với nhau thuận lợi hơn. Để chia xẻ một môi trường ảo, trước hết bạn cần tạo ra một tập tin requirements đã được đề cập trong phần trước.
Để tái tạo lại một môi trường ảo trên một máy tính khác, bạn có thể làm theo các bước sau đây:
- Cài đặt cùng một phiên bản Python đã được sử dụng trong máy tính đã tạo ra môi trường ảo.
- Tạo một môi trường ảo có cùng tên gọi như môi trường ảo gốc.
- Kích hoạt môi trường ảo mới.
- Cài đặt các gói trong tập tin requirements vào môi trường ảo mới với lệnh sau:
1 |
pip install -r requirements.txt |
Lệnh này sẽ cài đặt chính xác các gói với cùng phiên bản như trong môi trường gốc.
Xóa bỏ một môi trường ảo
Nếu không cần sử dụng một môi trường ảo nữa, bạn có thể xỏa bỏ nó để tiết kiệm không gian đĩa. Để xóa bỏ môi trường ảo, chỉ cần xỏa thư mục chứa môi trường ảo.
Ví dụ: Để xóa môi trường ảo “myenv” đã được tạo ra như trong các ví dụ trên, thực hiện lệnh sau từ thư mục cha của thư mục myenv:
Với MacOS hoặc Linux:
1 |
rm -r f myenv |
Với Windows:
1 |
rmdir /s myenv |
Cần lưu ý là xỏa bỏ một môi trường ảo cũng đồng thời xóa bỏ tất cả các gói và các thành phần phụ thuộc đã được cài đặt trong môi trường ảo đó.
Giải quyết các rắc rối với môi trường ảo
Trong một số trường hợp, môi trường ảo có thể không hoạt động theo ý muốn, và vì vậy, bạn có thể gặp một vài lỗi. Sau đây là cách giải quyết một số tình huống thường gặp:
- Cần chắc chắn rằng bạn kích hoạt đúng môi trường ảo trước khi cài đặt hoặc sử dụng các gói.
- Bảo đảm rằng phiên bản Python được sử dụng trong môi trường ảo là phiên bản Python đúng với yêu cầu của dự án.
- Nếu gặp thông báo lỗi về quyền hạn (permission) khi cài đặt hoặc sử dụng các gói, cần kiểm tra và bảo đảm rằng bạn có đủ quyền truy nhập vào thư mục chứa môi trường ảo.
- Nếu gặp thông báo lỗi liên quan đến các thành phần phụ thuộc của các gói, tạo ra một môi trường ảo mới và cài đặt từng gói một để xác định lỗi đến từ gói nào.
Kết luận
Môi trường ảo là một công cụ rất mạnh và hữu ích để quản lý các dự án Python và các thành phần phụ thuộc. Nhờ môi trường ảo, bạn có thể tạo ra các môi trường làm việc tách biệt nhau cho các dự án khác nhau. Qua đó, bảo đảm tính nhất quán và khả năng tái tạo. Bài viết này trình bày cách khởi tạo, kích hoạt, cài đặt gói, chia xẻ cũng như xóa bỏ môi trường ảo. Hy vọng rằng nó sẽ giúp bạn quản lý các dự án Python dễ dàng hơn và tránh các xung đột giữa các gói và các phiên bản khác nhau.