Chào bạn! Nếu bạn đang bắt đầu hành trình phát triển phần mềm với Python, đặc biệt trên Ubuntu, thì việc sở hữu một môi trường làm việc chuyên nghiệp, gọn gàng là cực kỳ quan trọng. Nó không chỉ giúp bạn làm việc hiệu quả hơn mà còn tránh được nhiều rắc rối về quản lý thư viện hay phiên bản Python sau này.
Khi mới chuyển từ CentOS sang Ubuntu, mình đã mất cả tuần loay hoay làm quen với hệ thống quản lý gói. `apt` rất mạnh mẽ, nhưng việc cài đặt và quản lý nhiều phiên bản Python cùng các thư viện sao cho không bị “đụng độ” giữa các dự án khác nhau thực sự là một cơn đau đầu.
Mình nhớ có lần cài nhầm thư viện cho dự án A, thế là dự án B đang chạy ngon lành tự nhiên… lỗi, chỉ vì chúng dùng chung một môi trường Python hệ thống. Chính những trải nghiệm đó đã giúp mình nhận ra tầm quan trọng của một môi trường phát triển được cô lập và quản lý chặt chẽ.
Trong bài viết này, mình sẽ hướng dẫn bạn thiết lập một bộ công cụ “chuẩn chỉnh”. Bộ ba này gồm VS Code làm IDE, Poetry để quản lý gói thư viện và môi trường ảo, cùng Jupyter cho những ai làm việc với dữ liệu hoặc cần môi trường tương tác. Mình tin đây sẽ là bộ công cụ giúp bạn nâng tầm công việc phát triển Python của mình.
Khái niệm cốt lõi: Tại sao cần VS Code, Poetry và Jupyter?
Trước khi bắt tay vào thực hành, chúng ta cùng khám phá lý do tại sao bộ ba này lại là lựa chọn lý tưởng cho một môi trường phát triển Python chuyên nghiệp.
VS Code: Trái tim của mọi dự án
Visual Studio Code (VS Code) không chỉ là một trình soạn thảo mã nguồn đơn thuần. Nhờ kho tiện ích mở rộng khổng lồ, VS Code dễ dàng trở thành một IDE (Integrated Development Environment) mạnh mẽ.
Nó hỗ trợ gần như mọi ngôn ngữ lập trình, đặc biệt xuất sắc với Python. VS Code cung cấp trình gỡ lỗi (debugger) tích hợp, terminal ngay trong cửa sổ làm việc, khả năng tự động hoàn thành mã, kiểm tra cú pháp (linting) cùng nhiều tính năng hữu ích khác. Với Python, các extension như Python và Pylance mang lại trải nghiệm phát triển mượt mà, chuyên nghiệp.
Poetry: Giải pháp cho “địa ngục phụ thuộc” (Dependency Hell)
Bạn đã từng gặp tình huống một dự án cần thư viện X phiên bản 1.0, nhưng dự án khác lại yêu cầu X phiên bản 2.0 chưa? Đó chính là “địa ngục phụ thuộc” (Dependency Hell). Trước đây, chúng ta thường dùng pip và venv để tạo môi trường ảo.
Tuy nhiên, Poetry còn vượt trội hơn hẳn. Poetry không chỉ tạo môi trường ảo mà còn quản lý toàn bộ vòng đời của dự án Python. Nó giúp khai báo các gói phụ thuộc một cách tường minh, cài đặt, đóng gói và xuất bản thư viện. Điều này đảm bảo tính nhất quán và khả năng tái tạo của môi trường, giúp bạn dễ dàng chia sẻ dự án với đồng nghiệp mà không lo lỗi vặt.
Jupyter: Sân chơi tương tác cho dữ liệu và ý tưởng
Jupyter Notebook (hoặc JupyterLab) là công cụ không thể thiếu cho nhà khoa học dữ liệu, kỹ sư máy học, hoặc bất kỳ ai muốn thử nghiệm code nhanh chóng và trực quan. Nó cho phép bạn kết hợp code, văn bản mô tả (markdown), công thức toán học và biểu đồ trong cùng một tài liệu tương tác duy nhất. Với Jupyter, bạn có thể chạy từng khối code, xem kết quả ngay lập tức, và dễ dàng trình bày ý tưởng của mình. Việc tích hợp Jupyter vào VS Code càng làm cho trải nghiệm này trở nên liền mạch hơn.
Thực hành chi tiết: Xây dựng môi trường của bạn
Giờ là lúc bắt tay vào việc. Mình sẽ hướng dẫn bạn từng bước thiết lập môi trường hoàn chỉnh.
1. Chuẩn bị hệ thống Ubuntu
Đầu tiên, hãy đảm bảo hệ thống Ubuntu của bạn được cập nhật và có đủ các công cụ cần thiết.
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Những gói này rất cần thiết để biên dịch Python từ mã nguồn, một bước quan trọng nếu bạn muốn quản lý nhiều phiên bản Python khác nhau.
2. Cài đặt và quản lý phiên bản Python với pyenv
Mặc dù Ubuntu đã có sẵn Python, việc quản lý nhiều phiên bản Python cho các dự án khác nhau sẽ hiệu quả hơn với `pyenv`. Đây là công cụ mình thường dùng để tránh các xung đột phiên bản.
Cài đặt pyenv:
curl https://pyenv.run | bash
Sau khi chạy lệnh, bạn cần thêm các dòng sau vào file cấu hình shell (thường là `~/.bashrc` hoặc `~/.zshrc`). Hãy mở file bằng `nano` hoặc `vim`:
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Lưu file và sau đó tải lại cấu hình shell:
source ~/.bashrc
Cài đặt một phiên bản Python cụ thể:
Ví dụ, để cài đặt Python 3.10.12:
pyenv install 3.10.12
pyenv global 3.10.12
Lệnh `pyenv global` sẽ đặt phiên bản này làm mặc định cho toàn hệ thống (trong ngữ cảnh `pyenv`). Để kiểm tra:
python --version
Nó sẽ hiển thị `Python 3.10.12`.
3. Cài đặt VS Code
Cách đơn giản nhất để cài VS Code trên Ubuntu là dùng Snap:
sudo snap install --classic code
Sau khi cài đặt, bạn có thể mở VS Code từ menu ứng dụng hoặc gõ `code` trong terminal.
Cài đặt Extensions cần thiết:
Trong VS Code, bạn hãy vào mục Extensions (biểu tượng khối vuông ở thanh bên trái) và tìm cài đặt các extension sau:
- Python (Microsoft): Cung cấp hỗ trợ Python cơ bản.
- Pylance (Microsoft): Hỗ trợ ngôn ngữ mạnh mẽ (autocompletion, type checking).
- Jupyter (Microsoft): Hỗ trợ Jupyter Notebooks và JupyterLab.
4. Cài đặt Poetry
Poetry có script cài đặt riêng, rất tiện lợi:
curl -sSL https://install.python-poetry.org | python3 -
Sau khi cài đặt, bạn cần thêm Poetry vào biến môi trường PATH. Thông thường, script sẽ gợi ý đường dẫn. Bạn chỉ cần thêm nó vào `~/.bashrc` (hoặc `~/.zshrc`) tương tự như với `pyenv`:
export PATH="$HOME/.local/bin:$PATH"
Sau đó, `source ~/.bashrc` để cập nhật PATH. Kiểm tra phiên bản Poetry:
poetry --version
Một cài đặt quan trọng mình rất khuyến nghị là cấu hình Poetry để tạo môi trường ảo ngay trong thư mục dự án. Điều này sẽ giúp bạn dễ dàng quản lý và di chuyển dự án hơn:
poetry config virtualenvs.in-project true
5. Thiết lập dự án Python với Poetry và VS Code
Bây giờ, hãy cùng tạo một dự án mới và sử dụng Poetry để quản lý nó.
mkdir my_python_project
cd my_python_project
poetry init
`poetry init` sẽ hỏi bạn một vài thông tin về dự án (tên, phiên bản, tác giả, mô tả, license…). Bạn có thể nhấn Enter để chấp nhận các giá trị mặc định hoặc điền thông tin của riêng mình. Sau bước này, Poetry sẽ tạo ra file `pyproject.toml`.
Thêm một gói thư viện vào dự án, ví dụ `requests`:
poetry add requests
Poetry sẽ tự động tạo một môi trường ảo (trong thư mục .venv nếu bạn đã cấu hình virtualenvs.in-project true). Sau đó, nó sẽ cài đặt requests cùng các phụ thuộc, đồng thời cập nhật file pyproject.toml và poetry.lock.
Mở dự án này trong VS Code:
code .
Trong VS Code, bạn cần chọn đúng interpreter Python của môi trường ảo do Poetry tạo ra. Để làm điều này, nhấn Ctrl+Shift+P (hoặc Cmd+Shift+P trên macOS) để mở bảng lệnh. Gõ “Python: Select Interpreter”, sau đó chọn đường dẫn đến file python trong thư mục .venv của dự án (ví dụ: ./.venv/bin/python).
Tạo một file main.py và thử nghiệm:
# main.py
import requests
def fetch_data(url):
try:
response = requests.get(url)
response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
return response.json()
except requests.exceptions.RequestException as e:
print(f"Lỗi khi lấy dữ liệu từ {url}: {e}")
return None
if __name__ == "__main__":
api_url = "https://jsonplaceholder.typicode.com/todos/1"
data = fetch_data(api_url)
if data:
print("Dữ liệu đã lấy thành công:")
print(data)
else:
print("Không thể lấy dữ liệu.")
Chạy file này từ terminal tích hợp trong VS Code (hoặc dùng poetry run python main.py):
poetry run python main.py
Bạn sẽ thấy kết quả từ API được in ra.
6. Sử dụng Jupyter Notebook với Poetry và VS Code
Để sử dụng Jupyter trong môi trường Poetry, bạn cần cài đặt gói jupyter vào đó:
poetry add jupyter
Sau khi cài đặt, hãy tạo một file mới trong VS Code với tên notebook.ipynb. VS Code sẽ tự động nhận diện và mở nó như một Jupyter Notebook. Đảm bảo bạn đã chọn đúng kernel là môi trường Poetry của dự án (thường hiển thị ở góc trên bên phải của Notebook).
Thử thêm một vài cell code:
# Cell 1
import pandas as pd
import numpy as np
data = {
'A': np.random.rand(5),
'B': np.random.randint(1, 10, 5)
}
df = pd.DataFrame(data)
print(df)
# Cell 2
# Vẽ biểu đồ đơn giản
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 4))
plt.plot(df['A'], label='Cột A')
plt.plot(df['B'], label='Cột B')
plt.title('Dữ liệu mẫu')
plt.xlabel('Chỉ số')
plt.ylabel('Giá trị')
plt.legend()
plt.grid(True)
plt.show()
Chạy từng cell một và xem kết quả trực tiếp trong Notebook.
Kết luận
Thiết lập một môi trường phát triển Python chuyên nghiệp trên Ubuntu với VS Code, Poetry và Jupyter không chỉ là một lựa chọn. Đó còn là một khoản đầu tư xứng đáng cho năng suất và sự ổn định của dự án. Với VS Code, bạn sở hữu một IDE mạnh mẽ. Poetry giúp bạn giải quyết triệt để vấn đề quản lý gói và môi trường ảo. Còn Jupyter, nó là công cụ tuyệt vời để thử nghiệm, phân tích và trình bày dữ liệu.
Mình tin rằng với cấu hình này, bạn sẽ tập trung hoàn toàn vào việc viết code và giải quyết vấn đề, thay vì phải đau đầu với những rắc rối về môi trường. Hãy thử ngay và cảm nhận sự khác biệt mà nó mang lại cho quy trình làm việc của bạn!
