Bỏ qua

Biến môi trường (Environment Variables)

Tip

Nếu bạn đã biết về "biến môi trường" và cách sử dụng chúng, bạn có thể bỏ qua phần này.

Một biến môi trường (còn được gọi là "env var") là một biến mà tồn tại bên ngoài đoạn mã Python, ở trong hệ điều hành, và có thể được đọc bởi đoạn mã Python của bạn (hoặc bởi các chương trình khác).

Các biến môi trường có thể được sử dụng để xử lí các thiết lập của ứng dụng, như một phần của các quá trình cài đặt Python, v.v.

Tạo và Sử dụng các Biến Môi Trường

Bạn có thể tạo và sử dụng các biến môi trường trong shell (terminal), mà không cần sử dụng Python:

// Bạn có thể tạo một biến môi trường MY_NAME với
$ export MY_NAME="Wade Wilson"

// Sau đó bạn có thể sử dụng nó với các chương trình khác, như
$ echo "Hello $MY_NAME"

Hello Wade Wilson
// Tạo một biến môi trường MY_NAME
$ $Env:MY_NAME = "Wade Wilson"

// Sử dụng nó với các chương trình khác, như là
$ echo "Hello $Env:MY_NAME"

Hello Wade Wilson

Đọc các Biến Môi Trường trong Python

Bạn cũng có thể tạo các biến môi trường bên ngoài đoạn mã Python, trong terminal (hoặc bằng bất kỳ phương pháp nào khác), và sau đó đọc chúng trong Python.

Ví dụ, bạn có một file main.py với:

import os

name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")

Tip

Tham số thứ hai cho os.getenv() là giá trị mặc định để trả về.

Nếu không được cung cấp, nó mặc định là None, ở đây chúng ta cung cấp "World" là giá trị mặc định để sử dụng.

Sau đó bạn có thể gọi chương trình Python:

// Ở đây chúng ta chưa cài đặt biến môi trường
$ python main.py

// Vì chúng ta chưa cài đặt biến môi trường, chúng ta nhận được giá trị mặc định

Hello World from Python

// Nhưng nếu chúng ta tạo một biến môi trường trước đó
$ export MY_NAME="Wade Wilson"

// Và sau đó gọi chương trình lại
$ python main.py

// Bây giờ nó có thể đọc biến môi trường

Hello Wade Wilson from Python
// Ở đây chúng ta chưa cài đặt biến môi trường
$ python main.py

// Vì chúng ta chưa cài đặt biến môi trường, chúng ta nhận được giá trị mặc định

Hello World from Python

// Nhưng nếu chúng ta tạo một biến môi trường trước đó
$ $Env:MY_NAME = "Wade Wilson"

// Và sau đó gọi chương trình lại
$ python main.py

// Bây giờ nó có thể đọc biến môi trường

Hello Wade Wilson from Python

Vì các biến môi trường có thể được tạo bên ngoài đoạn mã Python, nhưng có thể được đọc bởi đoạn mã Python, và không cần được lưu trữ (commit vào git) cùng với các file khác, nên chúng thường được sử dụng để lưu các thiết lập hoặc cấu hình.

Bạn cũng có thể tạo ra một biến môi trường dành riêng cho một lần gọi chương trình, chỉ có thể được sử dụng bởi chương trình đó, và chỉ trong thời gian chạy của chương trình.

Để làm điều này, tạo nó ngay trước chương trình đó, trên cùng một dòng:

// Tạo một biến môi trường MY_NAME cho lần gọi chương trình này
$ MY_NAME="Wade Wilson" python main.py

// Bây giờ nó có thể đọc biến môi trường

Hello Wade Wilson from Python

// Biến môi trường không còn tồn tại sau đó
$ python main.py

Hello World from Python

Tip

Bạn có thể đọc thêm về điều này tại The Twelve-Factor App: Config.

Các Kiểu (Types) và Kiểm tra (Validation)

Các biến môi trường có thể chỉ xử lí chuỗi ký tự, vì chúng nằm bên ngoài đoạn mã Python và phải tương thích với các chương trình khác và phần còn lại của hệ thống (và thậm chí với các hệ điều hành khác, như Linux, Windows, macOS).

Điều này có nghĩa là bất kỳ giá trị nào được đọc trong Python từ một biến môi trường sẽ là một str, và bất kỳ hành động chuyển đổi sang kiểu dữ liệu khác hoặc hành động kiểm tra nào cũng phải được thực hiện trong đoạn mã.

Bạn sẽ học thêm về việc sử dụng biến môi trường để xử lí các thiết lập ứng dụng trong Hướng dẫn nâng cao - Các thiết lập và biến môi trường.

Biến môi trường PATH

Có một biến môi trường đặc biệt được gọi là PATH được sử dụng bởi các hệ điều hành (Linux, macOS, Windows) nhằm tìm các chương trình để thực thi.

Giá trị của biến môi trường PATH là một chuỗi dài được tạo bởi các thư mục được phân tách bởi dấu hai chấm : trên Linux và macOS, và bởi dấu chấm phẩy ; trên Windows.

Ví dụ, biến môi trường PATH có thể có dạng như sau:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Điều này có nghĩa là hệ thống sẽ tìm kiếm các chương trình trong các thư mục:

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32

Điều này có nghĩa là hệ thống sẽ tìm kiếm các chương trình trong các thư mục:

  • C:\Program Files\Python312\Scripts
  • C:\Program Files\Python312
  • C:\Windows\System32

Khi bạn gõ một lệnh trong terminal, hệ điều hành tìm kiếm chương trình trong mỗi thư mục được liệt kê trong biến môi trường PATH.

Ví dụ, khi bạn gõ python trong terminal, hệ điều hành tìm kiếm một chương trình được gọi python trong thư mục đầu tiên trong danh sách đó.

Nếu tìm thấy, nó sẽ sử dụng nó. Nếu không tìm thấy, nó sẽ tiếp tục tìm kiếm trong các thư mục khác.

Cài đặt Python và cập nhật biến môi trường PATH

Khi bạn cài đặt Python, bạn có thể được hỏi nếu bạn muốn cập nhật biến môi trường PATH.

Giả sử bạn cài đặt Python vào thư mục /opt/custompython/bin.

Nếu bạn chọn cập nhật biến môi trường PATH, thì cài đặt sẽ thêm /opt/custompython/bin vào biến môi trường PATH.

Nó có thể có dạng như sau:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin

Như vậy, khi bạn gõ python trong terminal, hệ thống sẽ tìm thấy chương trình Python trong /opt/custompython/bin (thư mục cuối) và sử dụng nó.

Giả sử bạn cài đặt Python vào thư mục C:\opt\custompython\bin.

Nếu bạn chọn cập nhật biến môi trường PATH, thì cài đặt sẽ thêm C:\opt\custompython\bin vào biến môi trường PATH.

Nó có thể có dạng như sau:

C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin

Như vậy, khi bạn gõ python trong terminal, hệ thống sẽ tìm thấy chương trình Python trong C:\opt\custompython\bin (thư mục cuối) và sử dụng nó.

Vậy, nếu bạn gõ:

$ python

Hệ thống sẽ tìm kiếm chương trình python trong /opt/custompython/bin và thực thi nó.

Nó tương đương với việc bạn gõ:

$ /opt/custompython/bin/python

Hệ thống sẽ tìm kiếm chương trình python trong C:\opt\custompython\bin\python và thực thi nó.

Nó tương đương với việc bạn gõ:

$ C:\opt\custompython\bin\python

Thông tin này sẽ hữu ích khi bạn học về Môi trường ảo.

Kết luận

Với những thông tin này, bạn có thể hiểu được các biến môi trường là gìcách sử dụng chúng trong Python.

Bạn có thể đọc thêm về chúng tại Wikipedia cho Biến môi trường.

Trong nhiều trường hợp, cách các biến môi trường trở nên hữu ích và có thể áp dụng không thực sự rõ ràng ngay từ đầu, nhưng chúng sẽ liên tục xuất hiện trong rất nhiều tình huống khi bạn phát triển ứng dụng, vì vậy việc hiểu biết về chúng là hữu ích.

Chẳng hạn, bạn sẽ cần những thông tin này khi bạn học về Môi trường ảo.