Tiền đề bài viết

Khi các bạn tìm hiểu về Python, ở mức độ cơ bản (kiểu dữ liệu cơ bản, các toán tử, cấu trúc điều khiển...vv) sẽ không có gì đáng nói. Tuy nhiên, khi tiến xa hơn một bước nữa vào lĩnh vực mà bạn quan tâm (IoT, Web, AI...vv) các bạn sẽ cần sử dụng thêm các thư viện, framework. Lúc này, sẽ có rất nhiều vấn đề mới phát sinh như:

  • Các bạn tìm được một cuốn sách, một bài hướng dẫn trên internet, làm theo, nhưng mã nguồn của các bạn không hoạt động, do sai phiên bản.
  • Các bạn không thể cài được thư viện, do các gói phụ thuộc đã tồn tại và đang sai phiên bản.
  • Compiler thông báo một hàm hoặc một tham số nào đó trong mã nguồn của bạn không hợp lệ.
  • ...

Những vấn đề phát sinh đó từ đâu ra? Các bạn có thể hình dung một cách đơn giản, khi cài một thư viện A, hệ thống sẽ cài thêm những thư viện mà thư viện A phụ thuộc và tươn tự với B. Tất nhiên, các thư viện của Python cũng được quản lý bằng phiên bản và phụ thuộc vào phiên bản của ngôn ngữ Python. Do đó, trong quá trình tìm hiểu, làm việc, lượng thư viện các bạn cài trở nên nhiều dần theo thời gian, kéo theo đó là các lỗi phát sinh do xung đột (conflict) phiên bản của một số thư viện.

0_7ezJOtYUkI5zyqWU

Vậy! để hoàn toàn quản lý được môi trường phát triển, trước hết chúng ta cần hiểu một số khái niệm.

Một số khái niệm

PIP

Python Package Installer - là một công cụ hỗ trợ cài đặt các gói (thư viện, framework) Python (Tương tự với yum, dnf trên một số linux distros của Redhat hay npm, yarn của Node.js ...vv)

Nếu bạn sử dụng Python 2 >=2.7.9 hoặc Python 3 >=3.4 thì pip sẽ được mặc định cài chung với Python. Nếu máy của bạn đã có sẵn Python và không được cài sẵn pip, bạn có thể cài đặt bằng cách mở terminal (Command Prompt-cmd trên Windows) và thực hiện các lệnh sau

# tải file cài đặt về và lưu dưới tên get-pip.py
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

# thực thi file cài đặt
python get-pip.py

Bạn có thể tra cứu chi tiết hơn cách cài đặt pip tại đây.

Lưu ý: bạn có thể kiểm tra pip đã được cài đặt hay chưa bằng cách đơn giản: Mở terminal và gõ thử một trong 2 lệnh sau, nếu có thông tin phản hồi, nghĩa là pip đã được cài đặt, ngược lại, bạn cần cài đặt pip theo hướng dẫn bên trên

Screen Shot 2019-11-21 at 10.10.49

Ngoài pip ra còn có một số công cụ khác hỗ trợ việc cài đặt và quản lý phiên bản các gói trong Python:

Virtual Environment

Như vấn đề đã nêu ở đầu bài viết, để tránh trường hợp chồng chéo các gói và xung đột phiên bản giữa các thư viện, người ta đã xây dựng ra khái niệm môi trường ảo (Virtual Environment - venv). Trong khái niệm này, người ta sẽ clone toàn bộ môi trường phát triển gốc của ngôn ngữ ra một khu vực riêng và chỉ load môi trường này lên trong một (hoặc một số) dự án cụ thể.

Phương pháp này rất hiệu quả và được cộng đồng phát triển Python khuyến khích sử dụng.

Cũng tương tự như công cụ quản lý phần mềm, để quản lý môi trường ảo, chúng ta có rất nhiều lựa chọn như:

  • venv được tích hợp sẵn trong Python (từ phiên bản 3.3 trở về sau)
  • pyenv-virtualenv 
  • conda
  • pipenv

Hoàn thiện môi trường phát triển.

Trong phần này, mình sẽ hướng dẫn các bạn cài đặt môi trường ảo, sử dụng pip để cài đặt một số thư viện, qua đó giới thiệu Jupyter Notebook - một công cụ tuyệt vời, giúp các bạn có thể học Python một cách dễ dàng hơn nữa.

Bước 1: Các bạn cần tạo 1 folder, nơi các bạn sẽ chứa tất cả mã nguồn các bạn thực hiện trong quá trình làm việc. Mở terminal và di chuyển vào trong folder vừa tạo

s1

Bước 2: Khởi tạo môi trường ảo. Để chỉ tiết hơn, mình sẽ cung cấp cho các bạn thông số về phiên bản Python và pip trên máy của mình

➜  py-beginning python3 --version
Python 3.7.2
➜  py-beginning pip3 --version
pip 19.0.3 from /Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/site-packages/pip (python 3.7)

Mình sẽ sử dụng gói venv được tích hợp sẵn trong Python để tạo môi trường ảo với cú pháp

# Tạo môi trường ảo từ gói venv được tích hợp sẵn, lưu trong thư mục venv (py-beginning/venv)
python3 -m venv venv

Lúc này, trong thư mục py-beginning sẽ được tạo một số thực mục và file như sau:

Screen Shot 2019-11-21 at 11.10.21

Bước 3: Kích hoạt môi trường và kiểm tra

Screen Shot 2019-11-21 at 11.12.31

Ban đầu, mình sẽ check lại phiên bản của Python, kết quả trả về là 2.7.16 (phiên bản mặc định của hệ điều hành)

Để kích hoạt môi trường ảo vừa tạo, mình sẽ sử dụng cú pháp source venv/bin/activate (ở môi trường Windows bạn cần kích hoạt file venv\Scripts\activate.bat). Sau khi kích hoạt, bạn sẽ thấy môi trường được load lên (venv) ở giao diện terminal.

Kiểm tra lại phiên bản của Python, bạn thấy đã có sự thay đổi.

Lưu ý: Để thoát khỏi môi trường ảo, bạn có thể tắt terminal hiện tại (hoặc Text editor/IDE) đang kích hoạt môi trường. Hoặc sử dụng lệnh (hoặc script đối với Windows) deactivate

Bước 4: Cập nhập pip

pip cũng sẽ được cài đặt theo Python ở môi trường ảo, tuy nhiên, nó thường bị lỗi thời một xíu, do đó chúng ta cần cập nhật nó trước khi sử dụng với câu lệnh: pip install --upgrade pip

Bây giờ, tất cả các thư viện bạn cài đặt sẽ được lưu trong thư mục py-beginning/venv/. Các bạn có thể làm tương tự với các dự án khác nhau, sử dụng các công cụ quản lý để kiểm soát phiên bản của từng gói theo yêu cầu mà không sợ chồng chéo và xung đột.

Jupyter Notebook

Jupyter Notebook là một phần mềm mã nguồn (một ứng dụng web) mở được phát hành bởi Project Jupyter. Nó cho phép bạn viết code trực tiếp, ghi chú (sử dụng markdown), với output rõ ràng rành mạch, kết hợp với các thư viện của Python, bạn sẽ dễ dàng học và tạo được các tài liệu tuyệt vời. 

Theo cá nhân mình Jupyter Notebook phù hợp hơn để học tập, nghiên cứu hơn là trong các ứng dụng thực tiễn. Nếu bạn đang bắt đầu tìm hiểu, nghiên cứu về Python, thì không nên bỏ qua nó.

Để cài đặt Jupyter Notebook cũng rất đơn giản. Tiếp tục với hướng dẫn trên. Các bạn chỉ cần cài thêm gói jupyterlab bằng cú pháp

pip install jupyterlab

Ở terminal, các bạn sẽ thấy số lượng các gói phụ thuộc được cài thêm là rất nhiều phải không? đó chính là lý do chúng ta cần đến môi trường ảo. 

Sau khi cài xong, để kích hoạt notebook, các bạn sử dụng lệnh

jupyter notebook

Hệ thống sẽ load một số dữ liệu và mở notebook dưới dạng một trang web. 

Screen Shot 2019-11-21 at 11.55.22

Các bạn sẽ thấy, thư mục của chúng ta đã được ánh xạ lên giao diện web. Giao diện của notebook rất đơn giản và dễ sử dụng. Bạn có thể tạo mới một file mã nguồn

Screen Shot 2019-11-21 at 11.56.02

Trong giao diện của file mới được tạo sẽ được chia ra thành các cell (sử dụng menu Insert để thêm mới 1 cell). Các bạn có thể điều chỉnh loại Cell (Markdown hay Code...vv)

Screen Shot 2019-11-21 at 12.02.24

Ở đây mình tạo thử 2 cells, cell đầu là mã markdown để ghi chú, cell thứ 2 là code. Sau khi hoàn thành, mình chọn menu Cell -> Run All để thực thi tất cả các cells. Kết quả của mình nhận được sẽ là

Screen Shot 2019-11-21 at 12.02.58

Như các bạn thấy, phần mã markdown đã được biên dịch thành văn bản thuần. Phần code đã được thực thi và hiển thị kết quả bên dưới. 

 

Như vậy, qua bài viết này, các bạn đã nắm các khái niệm về môi trường ảo và trình quản lý các gói và phiên bản. Biết cách cài đặt môi trường cho từng dự án tránh gây xung đột. Chúc các bạn cài đặt thành công và để tìm hiểu Python tốt hơn, các bạn đừng quên Jupyter Notebook nhé.

Các bài viết liên quan: