Quản lý thông tin nhạy cảm trong dự án Python với python-dotenv

Trong quá trình phát triển Python, việc lưu trữ thông tin nhạy cảm như mật khẩu, API key hay thông tin tài khoản luôn là vấn đề cần quan tâm. Thư viện python-dotenv cung cấp giải pháp lưu trữ các biến môi trường một cách an toàn và tiện lợi, thay thế cho phương pháp dùng file .ini truyền thống.

Thư viện: python-dotenv trên GitHub

Cách sử dụng cơ bản

  1. Cài đặt thư viện:
pip install python-dotenv
  1. Tạo file .env tại thư mục gốc của dự án:
.
├── .env
├── main.py
  1. Điền thông tin nhạy cảm vào file .env:
# .env
ACCOUNT=ADMIN
PASSWORD=123456
  1. Trong file .py, gọi hàm load_dotenv:
# main.py
import dotenv

dotenv.load_dotenv()
  1. Sau đó có thể truy xuất biến môi trường bằng os.environ hoặc os.getenv:
import os

print(os.environ['ACCOUNT'])
print(os.getenv('PASSWORD'))

# Kết quả:
# ADMIN
# 123456

Tính năng mở rộng

Tham số của load_dotenv

  • dotenv_path: Đường dẫn tới file .env
  • stream: Đối tượng io.StringIO chứa nội dung file, dùng khi dotenv_path là None
  • verbose: Hiển thị cảnh báo khi file .env không tồn tại (mặc định False)
  • override: Ghi đè biến môi trường hệ thống (mặc định False)
  • encoding: Mã hóa khi đọc file

Quy tắc định dạng file

Key có thể không cần dấu nháy, hoặc dùng dấu nháy đơn. Value có thể không cần dấu nháy, hoặc dùng dấu nháy đơn/kép. Khoảng trắng xung quanh dấu = sẽ bị bỏ qua.

Biến không có giá trị

  • Nếu chỉ khai báo key, giá trị mặc định là None
  • Nếu key kèm dấu = nhưng không có value, giá trị là chuỗi rỗng

Tham chiếu biến khác

Cú pháp ${TEN_BIEN} cho phép tham chiếu biến khác:

# .env
VAR1 = hello
VAR2 = world
VAR3 = ${VAR1}, ${VAR2}

Chú thích

Dấu # ở đầu dòng hoặc sau dòng code để thêm chú thích (tương tự Python).

Giá trị nhiều dòng

Có thể viết value nhiều dòng với dấu nháy đơn hoặc kép:

FOO = "first line
second line"

Tương đương với:

FOO = "first line\nsecond line"

Ký tự đặc biệt

Dùng dấu \ để escape:

  • Với dấu nháy đơn: \\, \'
  • Với dấu nháy kép: \\, \', \a, \b, \f, \n, \r, \t, \v

Thẻ: python-dotenv python environment-variables configuration-management Security

Đăng vào ngày 8 tháng 7 lúc 19:19