Python - Virtual Environment

Python Virtual Environment

Môi trường ảo Python tạo ra một cài đặt ảo của Python bên trong thư mục dự án. Người dùng có thể cài đặt và quản lý các gói Python cho mỗi dự án. Điều này cho phép người dùng cài đặt các gói và chỉnh sửa môi trường Python của họ mà không lo lắng về việc làm hỏng các gói đã được cài đặt trong các môi trường khác.

What is Virtual Environment in Python?

Môi trường ảo Python là:

  • Considered as disposable.
  • Used to contain a specific Python interpreter and software libraries and binaries which are needed to support a project.
  • Contained in a directory, conventionally either named venv or .venv in the project directory.
  • Not considered as movable or copyable.

Khi bạn cài đặt phần mềm Python trên máy tính của mình, nó có sẵn để sử dụng từ bất kỳ đâu trong hệ thống tệp. Đây là một cài đặt toàn hệ thống.

Trong quá trình phát triển một ứng dụng bằng Python, có thể cần phải cài đặt một hoặc nhiều thư viện bằng cách sử dụng công cụ pip (ví dụ, pip3 install somelib ). Hơn nữa, một ứng dụng (giả sử là App1) có thể yêu cầu một phiên bản cụ thể của thư viện - chẳng hạn như somelib 1.0 . Đồng thời, một ứng dụng Python khác (chẳng hạn như App2) có thể yêu cầu phiên bản mới hơn của cùng một thư viện, ví dụ somelib 2.0 . Do đó, việc cài đặt một phiên bản mới có thể làm ảnh hưởng đến chức năng của App1 do xung đột giữa hai phiên bản khác nhau của cùng một thư viện.

Xung đột này có thể được tránh bằng cách cung cấp hai môi trường Python tách biệt trên cùng một máy. Những môi trường này được gọi là môi trường ảo. Một môi trường ảo là một cấu trúc thư mục riêng biệt chứa các cài đặt tách biệt có một bản sao cục bộ của trình thông dịch Python, thư viện chuẩn và các mô-đun khác.

Hình dưới đây cho thấy mục đích của việc sử dụng môi trường ảo. Bằng cách sử dụng cài đặt Python toàn cầu, nhiều môi trường ảo được tạo ra, mỗi môi trường có phiên bản khác nhau của cùng một thư viện, nhằm tránh xung đột.

python virtual environment

Creation of Virtual Environments in Python using venv

Chức năng này được hỗ trợ bởi mô-đun venv trong phân phối Python tiêu chuẩn. Sử dụng các lệnh sau để tạo một môi trường ảo mới.

C:\Users\Acer>md\pythonapp
C:\Users\Acer>cd\pythonapp
C:\pythonapp>python -m venv myvenv

Ở đây, myvenv là thư mục trong đó một môi trường ảo Python mới sẽ được tạo với cấu trúc thư mục như sau −

Directory of C:\pythonapp\myvenv
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 <DIR> Include
22-02-2023 09:53 <DIR> Lib
22-02-2023 09:53 77 pyvenv.cfg
22-02-2023 09:53 <DIR> Scripts

Các tiện ích để kích hoạt và hủy kích hoạt môi trường ảo cũng như bản sao cục bộ của trình thông dịch Python sẽ được đặt trong thư mục scripts.

Directory of C:\pythonapp\myvenv\scripts
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 2,063 activate
22-02-2023 09:53 992 activate.bat
22-02-2023 09:53 19,611 Activate.ps1
22-02-2023 09:53 393 deactivate.bat
22-02-2023 09:53 106,349 pip.exe
22-02-2023 09:53 106,349 pip3.10.exe
22-02-2023 09:53 106,349 pip3.exe
22-02-2023 09:53 242,408 python.exe
22-02-2023 09:53 232,688 pythonw.exe

Activating Virtual Environment

Để kích hoạt môi trường ảo mới này, hãy thực hiện activate.bat trong thư mục Scripts.

C:\pythonapp>myvenv\scripts\activate
(myvenv) C:\pythonapp>

Lưu ý tên của môi trường ảo trong dấu ngoặc. Thư mục Scripts chứa một bản sao cục bộ của trình thông dịch Python. Bạn có thể bắt đầu một phiên Python trong môi trường ảo này.

Checking If Python is Running Inside a Virtual Environment?

Để xác nhận xem phiên Python này có trong môi trường ảo hay không, hãy kiểm tra sys.path .

(myvenv) C:\pythonapp>python
Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929
64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\Python310\\python310.zip', 'C:\\Python310\\DLLs',
'C:\\Python310\\lib', 'C:\\Python310', 'C:\\pythonapp\\myvenv',
'C:\\pythonapp\\myvenv\\lib\\site-packages']
>>>

Thư mục scripts của môi trường ảo này cũng chứa các tiện ích pip. Nếu bạn cài đặt một gói từ PyPI, gói đó sẽ chỉ hoạt động trong môi trường ảo hiện tại.

Deactivating Virtual Environment

Để hủy kích hoạt môi trường này, hãy chạy deactivate.bat .