Hướng dẫn python venv
Nội dung Show
1.Giới thiệu Virtual Environment trong PythonVirtual Environment trong python là môi trường ảo. Cũng giống như máy ảo (Virtual Machine), Virtual Environment thiết lập một môi trường ảo, cho phép bạn thoải mái thực hiện cài đặt rồi xóa, cài đặt các phiên bản khác nhau với các packages của Python mà không sợ làm ảnh hưởng đến những dự án đang có sẵn. 2. Cài đặt và sử dụng Virtual environmentCó hai công cụ chính được sử dụng để tạo môi trường ảo: Trong bài viết này chúng ta sẽ sử dụng virtualenv. 2.1 Cài đặt virtualenvĐể cài đặt virtualenv chúng ta sử dụng lệnh sau: 2.2 Tạo môi trường ảoTiếp đến chúng ta sử dụng lệnh Trong đó python_env là tên đường dẫn chứa Virtual Environment cho dự án của bạn. 2.3 Khởi động môi trường ảoLệnh: Sau khi khởi động thành công, phía đầu của đường dẫn bạn sẽ thấy tên của môi trường ảo đặt trong dấu (python_env) 2.4 Tắt môi trường ảoĐể thoát khởi môi trường ảo hiện tại, bạn thực hiện lệnh
2.5 Xuất các package đã cài đặtBạn khởi động môi trường ảo cần xuất file và thực hiện lệnh:
2.6 Nhập các packageTương tự như xuất, bạn tiến hành khởi động môi trường ảo cần nhập và thực hiện lệnh:
Như vậy chúng ta đã hoàn tất quá trình khởi tạo và sử dụng Virtual Environment trong Python. Chúc các bạn thành công. _________________________________________________________________________________ P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/ Là một lập trình viên chuyên nghiệp Python, việc sử dụng thành thạo môi trường lập trình "ảo" gần như là bắt buộc. Môi trường "ảo" trong Python được thiết lập như thế nào? Có những cách thiết lập ra làm sao ? Tại sao phải sử dụng virtual environments? Bài viết dưới đây sẽ đưa ra các luận điểm và đề mục cũng như cách giải thích đơn giản giúp các bạn có thể nhanh chóng tiếp cận với virtual environments. Ghi chú: Tôi xin phép viết tắt VE thay cho từ Virtual
environment và tạm dừng dịch nghĩa từ khóa trên sang tiếng Việt là môi trường "ảo" để có thể giữ nguyên ý nghĩa của từ khóa. 1. Giới thiệu Virtual environment (VE) trong PythonLà một lập trình viên Python, bạn không thể chỉ làm mãi một dự án với
một số library/module/framework được cài đặt thẳng vào thư viện gốc được. Bạn phải luôn sẵn sàng với việc đầu tuần code Flask-API trên nền tảng Python 3.6.x; giữa tuần thì sửa một web-application của Django trên nền tảng Python 3.7.x; cuối tuần bạn lại thấy Python 3.9.0 vừa mới release, bạn muốn test một số feature mới được công bố; à, còn chưa kể dự án Odoo10 đang nhận maintain và chạy trên nền tảng Python2.7 nữa chứ. Sớm nắm bắt được nhu cầu của các lập trình viên, "ông chú Python" - Mr Guido và các cộng sự đã cho ra đời một công cụ "chất" để hỗ trợ các lập trình viên được khám phá thoải mái với Python là Virtual environment. Virtual Environment dịch nôm na là môi trường ảo. Cũng giống như máy ảo (Virtual Machine), Virtual Environment thiết lập một môi trường ảo, cho phép bạn thoải mái thực hiện "vọc" (cài đặt rồi xóa, cài đặt các phiên bản khác nhau) lung tung với các packages của Python mà không sợ làm ảnh hưởng đến những dự án đang có sẵn. Lợi ích của việc sử dụng VE.Trên máy tính của tôi đang cài song song 3 phiên bản của Python là Python 2.7, 3.6, 3.8, 3.9. Do đặc thù của mỗi dự án lại sử dụng các package khác nhau nên mỗi dự án tôi sẽ tạo cho nó một VE. Tại mỗi VE, tôi thoải mái cài đặt các thư viện cần dùng mà không phải lo nghĩ đến việc cài thư viện này sẽ làm ảnh hưởng đến việc khởi chạy các dự án khác vì mỗi VE là một môi trường ảo hoàn toàn độc lập. Ví dụ minh họa: Ngoài lợi ích trên, VE còn cung cấp chức năng cho phép export chính xác các package đang sử dụng trong VE (chính xác đến tận version bao nhiêu), file cấu hình môi trường này thường được đặt tên là requirements.txt). 2. Cách xây dựng và sử dụng VE.Theo thời gian và nhu cầu công việc, Python cung cấp nhiều cách thức để thực hiện tạo ra các VE, dưới đây, tôi sẽ giới thiệu với các bạn một số cách mà thường được các lập trình viên dùng nhiều. 2.1. Sử dụng công cụ virtualenvVirtualenv gần như là một công cụ thường gặp nhất với các lập trình viên Python khi muốn thiết lập một VE (https://virtualenv.pypa.io/en/latest/) Kết quả sẽ như dưới đây:
Sau khi cài đặt, thực hiện kiểm tra version của virtualenv
Sau khi install thư viện, thực hiện di chuyển đến vị trí muốn đặt VE. Tại vị trí này, chúng ta thực hiện cài đặt VE, bằng câu lệnh:
Như vậy là chúng ta đã khởi tạo được VE cho dự án hr_api dự kiến sẽ sử dụng django2. Chúng ta cùng xem bên trong thư mục VE có chứa những gì nhé.
Bên trong thư mục VE có chứa 2 thư mục con Lib và Scripts, kèm 1 file config cho môi trường.
Thư mục Lib có chứa thư mục site-packages, như vậy đây sẽ là nơi chứa các package mà chúng ta sẽ cài đặt vào VE.
Hiện tại thì thư mục này trên VE đồng bộ với thư mục site-packages của Python3.8 trên máy của tôi (do tôi
thường cài đặt package vào từng VE riêng biệt), nếu lỡ máy của bạn đã cài một số package sẵn rồi, bạn không muốn các VE sẽ kéo các package đó vào thì khi thực hiện khởi tạo VE, bạn thêm tham số Ví dụ: Tiếp tục khám phá xem thư mục Scripts có gì nhé.
Khởi chạy VE:
Sau khi thực hiện active thành công thì phía trên đầu của đường dẫn sẽ có tên của VE ở trong dấu (hr_api_django2_env)
Phần này các bạn cần lưu ý: Nếu không có tham số =2.2.0 phía sau thì hệ thống sẽ tự động tìm thư viện release mới nhất trên pypi (The Python Package Index), tại thời điểm này thì Django mới nhất là phiên bản 3.1.2 (tháng 10/2020).
Sau khi cài đặt xong, chúng ta kiểm tra xem VE của chúng ta đã được cài đặt thành công gói django2.2.0 chưa bằng câu lệnh pip -- freeze (hoặc pip freeze):
Với kết quả hiển thị như trên thì VE của chúng ta đã có phiên bản Django2.2 Export thư viện Để thực hiện export các package trong VE ra và để mang đến
import trong các VE khác, chúng ta sẽ sử dụng syntax:
File requirements.txt sẽ được tạo ra tại thư mục hiện tại mà chúng ta đang đứng. Mở file requirements.txt, chúng ta sẽ có nội dung: Import các package vào VE Giờ chúng ta sẽ xóa package Django2.2 sau đó thực hiện import lại vào VE bằng lệnh
Như này là đã xóa thành công thư viện Django2.2 trong VE.
Khi thực hiện cài đặt các package từ file requirements.txt, nếu các package đã có trong VE, thì pip sẽ bỏ qua như ví dụ trên với package pytz==2020.1, sqlparse==0.4.1. Ngắt khởi chạy VE. Để ngắt VE, chúng ta thực hiện đứng từ một thư mục nào đó, gọi vào file Scripts\deactivate.bat
Do đã thoát khỏi VE nên dòng thông tin (hr_api_django2_env) ở đầu thư mục cũng biến mất. Trước đây, tôi
cũng thường xuyên sử dụng virtualenv do từ thời Python2.7 công cụ này gần như là mạnh nhất để xây dựng các VE. Nhược điểm của nó là phải cài đặt thêm gói package virtualenv, nếu máy tính của bạn có chứa nhiều phiên bản Python và bạn liên tục phải switch qua lại giữa các project thuộc các phiên bản khác nhau thì dùng virtualenv không phải là phương án tối ưu. Lý do:
Để tạo một VE, đứng từ thư mục chứa python.exe, gọi đến thư viện virtualenv với tham số -m và thông tin đường dẫn tuyệt đối và tên của VE muốn tạo
Phía bên thư mục chứa VE:
2.2. Sử dụng công cụ venvNắm được nhược điểm của việc sử dụng
package Khởi tạo VE Với bản Python mặc định trên máy tính, chỉ cần gọi lệnh python -m venv path_to_VE
Với bản Python khác với bản mặc định, các làm tương tự như dùng thư viện virtualenv, chỉ khác là bạn sẽ không cần cài đặt package trước khi sử dụng.
Sau câu lệnh tạo ra môi trường, không có phản hồi gì có nghĩ là đã tạo thành công nhé. Tại thư mục chứa VE:
3. Một số lưu ý.Phía trên tôi đã giới thiệu với các bạn các thông tin về VE và 2 phương pháp khởi tạo môi trường ảo. Phần tiếp theo đây, tôi sẽ giới thiệu với các bạn một số thông tin bổ sung cần lưu ý. 3.1. Lệnh khởi tạo và ngắt VE trên Linux/MacOS.Trên Windows, các bạn sẽ gọi vào file activate.bat/deactivate.bat để khởi chạy và ngắt VE. Trên Lunix/MacOS, để do thư viện và môi trường khác nên việc cài đặt VE, khởi chạy VE dùng lệnh source bin/activate. Ví dụ: Tôi sử dụng Ubuntu-WSL trên máy của tôi để demo nhé.
Để ngắt khỏi VE:
Chỉ khác nhau về việc khởi chạy và ngắt VE, các action khác như export/import thì trên Windows và Linux/MacOS như nhau. 3.2. Sử dụng IDE Pycharm để khởi tạo VE.Nếu bạn thường xuyên sử dụng Pycharm như một IDE chuyên dụng cho việc code các dự án Python, để bắt đầu mỗi dự án chúng ta đều phải khởi tạo VE trước. 3.3. Không add/commit/push môi trường lên git.Lưu ý cuối cùng tôi muốn trao đổi với các bạn là đừng bao giờ thực hiện đưa VE lên git/svn vì dung lượng của nó hơi bị ... nặng. Mặc dù trong thư mục VE đã có sẵn file .gitignore nhưng chúng ta vẫn cần lưu ý vấn đề này nhé. Kết:Trên đây, tôi đã giới thiệu với các bạn lợi ích và cách sử dụng virtual environments trong lập trình Python chuyên nghiệp. Để đảm bảo tính đầy đủ của bài viết nên bài viết khá dài, hy vọng các bạn nhớ thực hiện setup các VE cho mỗi project để mỗi lần chúng ta "vọc vạch" các thư viện/package mới không làm ảnh hưởng đến những gì đang hoạt động ổn đinh. |