Khóa học

Với các nhà phát triển, việc cấu hình đúng máy trạm giúp quá trình phát triển thuận lợi hơn. Điều đó bao gồm cài đặt và cấu hình các công cụ tốt nhất, cùng với việc thiết lập những tiện ích giúp nhà phát triển phát huy tối đa trong quá trình tạo ra phần mềm. Các nhà khoa học dữ liệu cũng không ngoại lệ, nên việc có một cấu hình đúng đắn trở nên quan trọng để tạo ra những sản phẩm phần mềm độc đáo, từ công cụ trực quan hóa đến các quy trình thu nhận dữ liệu. Trong hướng dẫn này, bạn sẽ được giải thích các kiến thức cơ bản để thiết lập máy tính cho Khoa học dữ liệu, nhưng hướng dẫn này cũng hữu ích cho bất kỳ ai quan tâm phát triển phần mềm bằng ngôn ngữ Python. Cùng bắt đầu nhé!
Phạm vi
Python khả dụng trên nhiều hệ điều hành. Hướng dẫn này sẽ trình bày một số đoạn minh họa chạy trên hệ điều hành Linux Ubuntu, nhưng có thể áp dụng rộng rãi cho các hệ thống dựa trên UNIX khác và MAC OS. Với hệ thống MS Windows, cũng có một vài khác biệt nhỏ sẽ được đề cập khi thích hợp.
Python: Mảnh ghép cốt lõi
tl;dr Hãy dùng bản Python3 từ trang web chính thức
Xem trình thông dịch Python là mảnh ghép cốt lõi cho phát triển ứng dụng dựa trên ngôn ngữ này nghe có vẻ hiển nhiên. Nhưng ở bước này, bạn có thể bối rối khi tìm trình thông dịch Python tốt nhất để dùng. Hơn nữa, bạn có thể đã đọc về hai phiên bản khác nhau của ngôn ngữ, vì vậy chọn đúng phiên bản và trình thông dịch là quyết định quan trọng đầu tiên.
Python, Anaconda, Jython, WinPython, IronPython... quá nhiều "rắn" cho một chiếc lồng
Do mức độ phổ biến của ngôn ngữ, có rất nhiều bản hiện thực của trình thông dịch. Một số sẵn sàng để cài đặt trên máy tính của bạn, trong khi một số khác còn ở giai đoạn phát triển sớm và chỉ nên cài cho chính các nhà phát triển của chúng hoặc những lập trình viên ưa mạo hiểm. Wiki chính thức của Python liệt kê một số trình thông dịch hiện có, nêu bật các tính năng cụ thể so với các bản hiện thực khác. Như bạn sẽ thấy trong suốt hướng dẫn này, bản phân phối Python trên trang web chính thức bao gồm mọi thứ bạn cần để bắt đầu phát triển chương trình Python mà không bỏ lỡ tính năng nào so với các bản khác.
Python2 hay Python3? Bạn nên dùng phiên bản nào?
Mặc dù Python 3 đã được phát hành mười năm trước, quá trình chuyển đổi từ Python 2 sang phiên bản mới hơn không hề dễ dàng. Một trong những lý do chính khiến tốc độ tiếp nhận thấp là sự khác biệt về cú pháp làm cho các thư viện hiện có không thể dùng ngay với phiên bản mới nhất. Khi phát triển phần mềm Python, bạn sẽ nhận ra sự phong phú về thư viện cho nhiều mục đích là thế mạnh then chốt của ngôn ngữ này. Trong giai đoạn chuyển tiếp, một số công cụ và thư viện như 2to3 hay six đã được tạo ra để thu hẹp khoảng cách cho các phần mềm sẵn có, giúp việc di trú lên phiên bản mới dễ dàng hơn. Tại thời điểm viết hướng dẫn này, phần lớn thư viện đã sẵn sàng cho phần mềm dùng Python 3, nên quyết định chọn phiên bản nào lúc này khá rõ ràng: Python 3. Hơn nữa, đến năm 2020 vòng đời của Python 2 đã kết thúc. Thậm chí có người còn dự định tổ chức lễ mừng cuộc đời tại sự kiện PyCon 2020, vậy nên đừng ngần ngại tham gia để cảm ơn Python2 vì những gì nó đã làm cho bạn và phần mềm của bạn!
Cài đặt Python trên máy tính của bạn
Trình thông dịch Python có sẵn trên hầu hết hệ điều hành, thậm chí một số còn cung cấp gói cài đặt giúp việc cài đặt dễ dàng. Với Ubuntu, Python2 và Python3 còn được cài sẵn mặc định trên môi trường desktop cùng lúc. Hãy lưu ý thay đổi bí danh python vốn vẫn trỏ về Python phiên bản 2 thay vì 3, hoặc định nghĩa một bí danh trong tệp ~/.bashrc nếu bạn thấy hữu ích. Như đã đề cập, dự kiến trong những năm tới chỉ còn một phiên bản Python được cài đặt. Khuyến nghị lúc này là cài bản Python mới nhất. Nếu máy bạn đã có Python3, hãy kiểm tra phiên bản lớn hơn 3.5. Nếu phiên bản cũ hơn, bạn nên nâng cấp để tận hưởng các tính năng mới nhất của ngôn ngữ.
$ python --version
Python 3.5.2
Với người dùng Windows, cài đặt trình thông dịch Python cũng khá đơn giản. Trang tải xuống chính thức cung cấp trình cài đặt giúp bạn thiết lập chỉ với vài cú nhấp chuột.
Quản lý phụ thuộc dự án với pip

Với phát triển cơ bản, chỉ cần cài trình thông dịch Python là bạn có thể bắt đầu viết mã. Gói phần mềm Python đi kèm trình thông dịch cùng một số tiện ích hỗ trợ quản lý ứng dụng. Một trong số đó là pip, công cụ giúp bạn cài đặt thư viện của bên thứ ba được lưu trữ trên PyPI (Python Package Index) hoặc các kho công khai/riêng khác.
Dự án Python đầu tiên: Jupyter Notebooks
Hãy nghĩ về dự án Khoa học dữ liệu đầu tiên: Một notebook Jupyter dùng để xử lý dữ liệu và trình bày vài trực quan hóa ấn tượng. Thư viện đầu tiên bạn cần để làm việc với notebook sẽ là Jupyter. Cài đặt Jupyter trên máy bạn đơn giản như sau:
$ pip install --user jupyter
Lưu ý tùy chọn --user sẽ cài thư viện chỉ cho người dùng thực thi lệnh. Cài đặt toàn hệ thống có thể thực hiện bằng cách bỏ tùy chọn này nhưng có thể cần quyền đặc biệt để hoàn tất. Ngoài việc cài đặt, lệnh pip cho phép bạn tải thư viện, truy vấn cấu hình hiện tại, nâng cấp và gỡ cài đặt thư viện khi không còn cần nữa. Bảng sau liệt kê một số lệnh hữu ích để quản lý nhu cầu của ứng dụng:
| Lệnh | Mô tả |
|---|---|
pip install <package> |
Cài đặt một gói |
pip install --user <package> |
Cài đặt gói cho một người dùng |
pip install --upgrade <package> |
Cập nhật một gói |
pip uninstall <package> |
Gỡ cài đặt một gói |
pip download <package> |
Tải xuống một gói |
pip freeze |
Liệt kê các gói đã cài |
pip install -r requirements.txt |
Cài các gói liệt kê trong tệp requirements.txt đã cho |
pip show <package> |
Hiển thị thông tin về gói |
Chúng ta sẽ còn quay lại các lệnh trên để quản lý phụ thuộc dự án. Trước mắt, hãy nhớ pip là trình quản lý phụ thuộc cho ứng dụng của bạn. Cuối cùng nhưng không kém phần quan trọng, pip không chỉ cài các thư viện được yêu cầu mà còn cài cả các phụ thuộc của chúng, nên bạn không cần xử lý các quy trình cài đặt phức tạp. pip install là con đường nên đi!
Môi trường ảo: Cô lập cấu hình dự án của bạn

Hãy tưởng tượng trong lúc bạn đang làm dự án notebook, bạn phát hiện một thư viện mới hấp dẫn với những tính năng muốn thử trước khi đưa vào cấu hình dự án. Thư viện này yêu cầu cài phiên bản khác của jupyter notebooks. Lúc này bạn có các lựa chọn sau:
- Cài gói mới nhưng không cài phụ thuộc. Thư viện có thể hoạt động không đúng trừ khi bạn chỉnh sửa mã nguồn của nó.
- Cài gói mới kèm phụ thuộc. Dự án hiện tại sẽ bị ảnh hưởng, buộc bạn phải nâng cấp cấu hình và chỉnh sửa để hoạt động như kỳ vọng.
Các kịch bản trên có thể xảy ra khi làm đồng thời hai dự án. Hãy nghĩ đến tình huống phức tạp hơn khi bạn làm nhiều hơn hai dự án, hoặc có một bộ ứng dụng dựa trên Python phụ thuộc vào thư viện bạn cần cài mà không muốn chỉnh sửa. Đó có thể là cơn đau đầu thực sự. May mắn thay, Python cung cấp cơ chế cô lập cấu hình dự án khỏi các dự án hay ứng dụng khác. Cơ chế này gọi là Môi trường ảo, vốn đã tồn tại từ thời Python 2 cùng với các cách tiếp cận cô lập khác, và đã trở thành gói tích hợp sẵn từ phiên bản 3.6 (bạn nên cài phiên bản này hoặc mới hơn!). Các trình thông dịch Python cũ hơn 3.6 có thể cài thư viện này bằng pip như sau:
$ pip install -U venv
Với những ai dùng Python2 (trừ khi bạn muốn nâng cấp), thư viện có tên virtualenv và có thể cài tương tự.
$ pip install -U virtualenv
Các nhà phát triển dùng Ubuntu có thể tìm thấy virtualenv dưới dạng gói hệ thống và cài bằng apt-get như sau:
$ sudo apt-get install python3-venv
Tạo môi trường ảo mới rất dễ. Từ dòng lệnh, gõ lệnh sau để tạo môi trường ảo trong thư mục new_venv.
$ python -m venv new_venv
Khuyến nghị chạy lệnh trên từ thư mục workspace. Như vậy bạn sẽ có một thư mục tự chứa gồm mã nguồn và môi trường ảo nơi lưu các thư viện mà ứng dụng của bạn cần. Sau khi môi trường ảo được tạo, bạn có thể làm việc ở chế độ cô lập bằng cách nạp script activate trong new_venv/bin/activate.
source new_venv/bin/activate
(new_venv) $ ...
Người dùng Windows cần chạy script activate trong thư mục Scripts.
new_venv/Scripts/activate
(new_venv) $ ...
Lưu ý khi môi trường ảo được nạp, dấu nhắc shell sẽ thay đổi, hiển thị tên môi trường ảo trong ngoặc đơn. Nhìn tổng quan, môi trường ảo gồm các thành phần sau:
- Một trình thông dịch python: Cùng phiên bản với bản dùng để tạo môi trường ảo. Lưu ý nếu bạn không đổi bí danh python, bạn sẽ phải gọi rõ python3 hoặc thậm chí python3.6 nếu cài nhiều bản Python3.
- Trình quản lý gói pip. Trình này sẽ cài mọi thư viện trong thư mục lib/pythonX.Y/site/packages. Trình thông dịch python sẽ dùng thư mục này để giải quyết phụ thuộc.
- Script Kích hoạt/Hủy kích hoạt. Nó giúp nạp môi trường dự án và trả về cấu hình mặc định khi không cần nữa. Khi môi trường ảo đã được nạp thành công, bạn có thể cài thư viện như sau:
$ pip install requests
Lệnh này sẽ cài thư viện requests bên trong môi trường ảo, và có thể được nạp bởi trình thông dịch python trong thư mục bin của môi trường ảo. Lưu ý bạn không cần quyền quản trị để cài thư viện. Bạn có thể kiểm tra bằng lệnh pip show (pip show requests) để xem chi tiết thư viện đã cài. Cuối cùng, khi dừng làm việc với dự án, bạn có thể hủy kích hoạt môi trường ảo bằng lệnh deactivate.
(new_venv) $ deactivate
$
Đơn giản, mạnh mẽ và hữu ích. Môi trường ảo là để giúp bạn! :D
MẸO: Vị trí cài đặt các gói có thể kiểm tra qua biến sys.prefix. Hãy thử chạy trong môi trường đã nạp, và cả trong cấu hình mặc định.
>>> import sys
>>> print(sys.prefix)
Dàn khung dự án: Dễ ợt với Cookiecutter!

Bạn và hầu hết chúng ta bắt đầu phát triển ứng dụng Python với một script đơn giản (có lẽ là Hello World). Nghĩ theo hướng đó, cùng với những khái niệm vừa đề cập, ta sẽ có cấu trúc workspace như sau:
- Một thư mục chứa workspace của chúng ta, bao gồm
- Một thư mục môi trường ảo, và
- Một script đơn giản cho ứng dụng Hello World của bạn.
Mặc dù dự án Python không bắt buộc phải có cấu trúc workspace, bạn nên tổ chức mã nguồn cùng với bộ kiểm thử liên quan và các script hay tệp cấu hình khác để hỗ trợ trọn vẹn vòng đời phát triển. Ở cách tiếp cận đơn giản nhất, một workspace Python có thể như sau:
$ tree -L 1
.
├── requirements.txt ---> Tệp phụ thuộc của dự án
├── src ---> Mã nguồn đặt tại đây
├── tests ---> Mã kiểm thử đặt tại đây
└── venv ---> Tệp môi trường ảo
Chúng ta đã nói về tệp requirements.txt ở phần pip. Tệp này sẽ chứa các phụ thuộc của dự án và có thể lưu lại bằng lệnh pip freeze. Thư mục src và tests chứa logic nghiệp vụ và kiểm thử liên quan. Còn thư mục venv (thường được đặt tên như vậy) lưu cấu hình môi trường ảo.
Tạo dàn khung dự án theo cách dễ dàng: Cookiecutter
Dù cách tiếp cận trên có thể đủ dùng, khi kỹ năng phát triển của bạn tăng lên, bạn có thể muốn làm việc với dàn khung tiến hóa hơn, bao gồm nhiều công cụ giúp quy trình phát triển thuận tiện. Tạo dàn khung Python thủ công có thể tẻ nhạt. Một lựa chọn tốt hơn là giữ một bản sao dự án tham chiếu và thay thế một số nội dung sau khi sao chép để thiết lập dự án mới. Tuy có thể dùng được, cách này dễ sai và có thể dẫn đến tình huống không nhất quán nếu bạn quên thiết lập đúng một số tài nguyên. Các dự án mới có thể dễ dàng được thiết lập bằng công cụ cookiecutter. Công cụ này nhận đầu vào là mẫu dự án, rồi lưu một bản sao sau khi thay thế tên tệp/thư mục và nội dung bằng tập tham số được hỏi người dùng. Công cụ được hiện thực bằng Python và có thể cài như một thư viện pip.
$ pip install -U cookiecutter
Nhớ rằng tùy chọn -U sẽ cài công cụ trong không gian người dùng của bạn. Bạn có thể bỏ qua, nhưng khi đó cần cài với quyền root (hoặc sudo). Công cụ này cũng có sẵn cho người dùng Ubuntu dưới dạng gói có thể cài bằng apt-get
$ sudo apt-get install cookiecutter
Ở mức đơn giản nhất, bạn gọi cookiecutter như sau:
$ cookiecutter <TEMPLATE_LOCATION>
Vị trí mẫu có thể lưu cục bộ hoặc chỉ định bằng URL GIT. Cách sau tiện cho các nhà phát triển và tổ chức muốn duy trì, phát triển các mẫu workspace dự án của mình.
Để hiểu cookiecutter hoạt động thế nào, hãy xem một dự án cookiecutter mẫu. Tệp cốt lõi cho dự án này và mọi dự án cookiecutter khác tên là cookiecutter.json và chứa tập giá trị người dùng cần chỉ định để tạo workspace dự án. Tệp được viết ở định dạng JSON, gồm một từ điển các cặp khóa-giá trị, trong đó giá trị là mặc định nếu người dùng bỏ qua bất kỳ đầu vào nào.
{
"full_name": "Steven Loria",
"email": "sloria1@gmail.com",
"github_username": "sloria",
"project_name": "My Flask App",
"app_name": "myflaskapp",
"project_short_description": "A flasky app.",
"use_pipenv": ["no", "yes"]
}
Từ các giá trị đầu vào, cookiecutter sẽ thay thế trong mẫu những tên tệp và thư mục có chứa dấu ngoặc kép kép {{...}}.
Nếu bạn muốn tạo bộ khung của riêng mình, một ý tưởng hay là bắt đầu với một dự án cookiecutter và đưa vào đó mọi thứ bạn cho là hữu ích khi phát triển ứng dụng. Còn nếu bạn nóng lòng muốn bắt tay vào dự án mới, có rất nhiều dự án cookiecutter sẵn có để khởi tạo ngay. Tìm cookiecutter phù hợp nhu cầu? Hãy thử công cụ tìm kiếm cookiecutter này! Tin vui hơn, công cụ này không chỉ dành cho dàn khung dự án Python, mà còn tổng quát cho các loại dự án khác!
Ghép tất cả lại: Vòng đời phát triển dự án
Sau khi đã giới thiệu các khái niệm về quản lý gói, môi trường ảo và dàn khung dự án, chúng ta có thể ghép lại và giải thích cách bạn có thể thiết lập máy tính để làm việc sau khi theo dõi hướng dẫn này:
- Dùng Python3 làm trình thông dịch viết mã. Tốt hơn nữa nếu bạn dùng Python 3.6.
- Tạo dự án mới, nơi lưu các mô-đun Python và phụ thuộc.
- Tạo dự án mới dễ dàng bằng cookiecutter cùng một mẫu tham chiếu bạn chọn.
- Tạo môi trường ảo mới trong thư mục ứng dụng và kích hoạt khi bạn sẵn sàng viết mã.
- Viết ứng dụng tuyệt nhất đời bạn, và dùng thư viện bên thứ ba nếu cần.
- Đừng quên khai báo phụ thuộc trong tệp requirements.txt bằng lệnh
pip freeze.
- Đừng quên khai báo phụ thuộc trong tệp requirements.txt bằng lệnh
- [Tùy chọn] Đưa dự án lên hệ thống quản lý mã như Git. Nhưng đừng đưa nội dung môi trường ảo lên. Bạn có thể tạo lại bất cứ khi nào cần như hướng dẫn dưới đây.
Khi mã nguồn và tệp phụ thuộc đã được lưu, bạn có thể tái tạo cấu trúc dự án dễ dàng như sau:
- Sao chép mã và tệp phụ thuộc vào một thư mục workspace (người dùng Git có thể clone kho).
- Tạo môi trường ảo mới trong thư mục ứng dụng và kích hoạt để cài phụ thuộc.
- Cài phụ thuộc bằng
pip install -r requirements.txt. - Tiếp tục cải tiến hoặc sửa lỗi cho dự án. Đừng quên ghi nhận phụ thuộc mới vào tệp requirements bằng
pip freeze.
Còn một điều trước khi kết thúc hướng dẫn này. Mặc dù chúng tôi không nhắc đến IDE nào để viết Python, bạn hoàn toàn tự do chọn và tùy chỉnh công cụ phù hợp nhu cầu.
Chúc bạn viết Python vui vẻ!
Nếu bạn muốn học thêm về Python, hãy học khóa miễn phí Giới thiệu Python cho Khoa học dữ liệu của DataCamp.