Môi trường ảo Python: Sơ lược các thông tin
28/02/2023 01:25
Trong hướng dẫn này, bạn sẽ học cách làm việc với mô-đun của Pythonvenv để tạo và quản lý các môi trường ảo riêng biệt cho các dự án Python của bạn.
Trong hướng dẫn này, bạn sẽ học cách làm việc với mô-đun của Pythonvenv để tạo và quản lý các môi trường ảo riêng biệt cho các dự án Python của bạn. Mỗi môi trường có thể sử dụng các phiên bản phụ thuộc gói và Python khác nhau. Sau khi bạn đã học cách làm việc với môi trường ảo, bạn sẽ biết cách giúp các lập trình viên khác tái tạo thiết lập phát triển của mình và bạn sẽ đảm bảo rằng các dự án của mình không bao giờ gây ra xung đột phụ thuộc lẫn nhau.
Làm thế nào bạn có thể làm việc với môi trường ảo Python?
Nếu bạn chỉ cần thiết lập và chạy một môi trường ảo Python để tiếp tục làm việc với dự án yêu thích của mình, thì phần này là nơi phù hợp với bạn.
Các hướng dẫn trong hướng dẫn này sử dụng mô-đun của Pythonvenv
để tạo môi trường ảo. Mô-đun này là một phần của thư viện chuẩn của Python và đó là cách chính thức được đề xuất để tạo môi trường ảo kể từ Python 3.5.
Đối với việc sử dụng cơ bản, venv
là một lựa chọn tuyệt vời vì nó đã được đóng gói cùng với bản cài đặt Python của bạn. Với ý nghĩ đó, bạn đã sẵn sàng tạo môi trường ảo đầu tiên của mình trong hướng dẫn này.
Tạo ra nó
Bất cứ khi nào bạn đang làm việc trên một dự án Python sử dụng các phần phụ thuộc bên ngoài mà bạn đang cài đặtpip
, tốt nhất là trước tiên bạn nên tạo một môi trường ảo:
kích hoạt nó
Tuyệt vời! Bây giờ dự án của bạn đã có môi trường ảo của riêng mình. Nói chung, trước khi bắt đầu sử dụng, trước tiên bạn sẽ kích hoạt môi trường bằng cách thực thi tập lệnh đi kèm với quá trình cài đặt:
Trước khi bạn chạy lệnh này, hãy đảm bảo rằng bạn đang ở trong thư mục chứa môi trường ảo mà bạn vừa tạo.
Sau khi bạn có thể thấy tên của môi trường ảo của mình—trong trường hợp này (venv)
—trong dấu nhắc lệnh, thì bạn biết rằng môi trường ảo của mình đang hoạt động. Bạn đã hoàn tất và sẵn sàng cài đặt các gói bên ngoài của mình!
Cài đặt gói vào nó
Sau khi tạo và kích hoạt môi trường ảo của bạn, bây giờ bạn có thể cài đặt bất kỳ phụ thuộc bên ngoài nào mà bạn cần cho dự án của mình:
Lệnh này là lệnh mặc định mà bạn nên sử dụng để cài đặt các gói Python bên ngoài với pip
. Vì bạn đã tạo và kích hoạt môi trường ảo lần đầu tiên nên pip
sẽ cài đặt các gói ở một vị trí biệt lập.
Xin chúc mừng, bây giờ bạn có thể cài đặt các gói của mình vào môi trường ảo của mình. Để đạt được điểm này, bạn đã bắt đầu bằng cách tạo một môi trường ảo Python có tên venv
và sau đó kích hoạt nó trong phiên trình bao hiện tại của bạn.
Miễn là bạn không đóng thiết bị đầu cuối của mình, mọi gói Python mà bạn cài đặt sẽ kết thúc trong môi trường biệt lập này thay vì các gói trang web Python toàn cầu của bạn. Điều đó có nghĩa là giờ đây bạn có thể làm việc với dự án Python của mình mà không phải lo lắng về xung đột phụ thuộc.
hủy kích hoạt nó
Sau khi làm việc xong với môi trường ảo này, bạn có thể hủy kích hoạt nó:
Sau khi thực hiện deactivate
lệnh, dấu nhắc lệnh của bạn trở lại bình thường. Thay đổi này có nghĩa là bạn đã thoát khỏi môi trường ảo của mình. Nếu bạn tương tác với Python hoặc pip
bây giờ, bạn sẽ tương tác với môi trường Python được định cấu hình toàn cầu của mình.
Nếu bạn muốn quay lại môi trường ảo mà bạn đã tạo trước đó, bạn cần chạy lại tập lệnh kích hoạt của môi trường ảo đó.
Tại sao bạn cần môi trường ảo?
Gần như tất cả mọi người trong cộng đồng Python đều khuyên bạn nên sử dụng môi trường ảo cho tất cả các dự án của mình. Nhưng tại sao? Nếu bạn muốn tìm hiểu lý do tại sao bạn cần thiết lập môi trường ảo Python ngay từ đầu, thì đây là phần phù hợp với bạn.
Câu trả lời ngắn gọn là Python không giỏi quản lý phụ thuộc. Nếu bạn không cụ thể, thì pip
sẽ đặt tất cả các gói bên ngoài mà bạn cài đặt vào một thư mục có tên site-packages/
trong bản cài đặt Python cơ sở của bạn.
Một số vấn đề có thể xảy ra nếu tất cả các gói bên ngoài của bạn nằm trong cùng một thư mục. Trong phần này, bạn sẽ tìm hiểu thêm về chúng, cũng như các vấn đề khác mà môi trường ảo giảm thiểu.
Tránh ô nhiễm hệ thống
Linux và macOS được cài đặt sẵn một phiên bản Python mà hệ điều hành sử dụng cho các tác vụ nội bộ.
Nếu bạn cài đặt các gói vào Python toàn cầu của hệ điều hành, các gói này sẽ kết hợp với các gói liên quan đến hệ thống. Sự kết hợp này có thể có tác dụng phụ không mong muốn đối với các tác vụ quan trọng đối với hoạt động bình thường của hệ điều hành của bạn.
Ngoài ra, nếu bạn cập nhật hệ điều hành thì các gói bạn đã cài đặt có thể bị ghi đè và bị mất. Bạn không muốn một trong những cơn đau đầu đó xảy ra!
Xung đột phụ thuộc Sidestep
Một trong các dự án của bạn có thể yêu cầu phiên bản thư viện bên ngoài khác với phiên bản khác. Nếu bạn chỉ có một nơi để cài đặt các gói thì bạn không thể làm việc với hai phiên bản khác nhau của cùng một thư viện. Đây là một trong những lý do phổ biến nhất cho khuyến nghị sử dụng môi trường ảo Python.
Để hiểu rõ hơn tại sao điều này lại quan trọng đến vậy, hãy tưởng tượng bạn đang xây dựng trang web Django cho hai khách hàng khác nhau. Một khách hàng cảm thấy thoải mái với ứng dụng web hiện có của họ mà bạn đã tạo ban đầu bằng Django 2.2.26 và khách hàng đó từ chối cập nhật dự án của họ lên phiên bản Django hiện đại. Một khách hàng khác muốn bạn đưa chức năng không đồng bộ vào trang web của họ, tính năng này chỉ khả dụng kể từ Django 4.0.
Nếu bạn cài đặt hai phiên bản khác nhau của cùng một gói vào môi trường Python chung của mình, thì bản cài đặt thứ hai sẽ ghi đè lên bản cài đặt đầu tiên. Vì lý do tương tự, việc có một môi trường ảo duy nhất cho cả hai máy khách cũng sẽ không hoạt động. Bạn không thể có hai phiên bản khác nhau của cùng một gói trong một môi trường Python.
Khóa đặc quyền cài đặt Dodge
Cuối cùng, bạn có thể cần có đặc quyền của quản trị viên trên máy tính để cài đặt các gói vào thư mục gói trang web của máy chủ Python. Trong môi trường làm việc của công ty, rất có thể bạn sẽ không có mức độ truy cập vào máy mà bạn đang làm việc.
Nếu bạn sử dụng môi trường ảo, thì bạn tạo một vị trí cài đặt mới trong phạm vi đặc quyền người dùng của mình, cho phép bạn cài đặt và làm việc với các gói bên ngoài.
Cho dù bạn đang mã hóa như một sở thích trên máy của riêng mình, phát triển trang web cho khách hàng hay làm việc trong môi trường công ty, thì việc sử dụng môi trường ảo sẽ giúp bạn tránh được nhiều phiền muộn về lâu dài.
Môi trường ảo Python là gì?
Tại thời điểm này, bạn chắc chắn rằng mình muốn làm việc với môi trường ảo. Tuyệt, nhưng bạn đang làm việc với cái gì khi sử dụng môi trường ảo? Nếu bạn muốn hiểu môi trường ảo Python là gì, thì đây là phần phù hợp với bạn.
Câu trả lời ngắn gọn là môi trường ảo Python là một cấu trúc thư mục cung cấp cho bạn mọi thứ bạn cần để chạy một môi trường Python nhẹ nhưng tách biệt.
Cài đặt Python biệt lập
Môi trường ảo Python nhằm mục đích cung cấp một môi trường Python nhẹ, tách biệt mà bạn có thể nhanh chóng tạo và sau đó loại bỏ khi không cần nữa. Cấu trúc thư mục mà bạn đã thấy ở trên có thể thực hiện được điều đó bằng cách cung cấp ba phần chính:
- Một bản sao hoặc một liên kết tượng trưng của nhị phân Python
- một
pyvenv.cfg
tập tin - Một thư mục gói trang web
Bạn muốn đạt được một môi trường tách biệt để bất kỳ gói bên ngoài nào bạn cài đặt sẽ không xung đột với các gói trang web toàn cầu. Điều venv
gì làm cho điều này có thể thực hiện được là tái tạo cấu trúc thư mục mà bản cài đặt Python tiêu chuẩn tạo ra.
Cấu trúc này chiếm vị trí của bản sao hoặc liên kết tượng trưng của tệp nhị phân Python và thư mục gói trang web, nơi Python cài đặt các gói bên ngoài.