1. Dòng lệnh và môi trường¶
Trình thông dịch CPython quét dòng lệnh và môi trường để tìm các cài đặt khác nhau.
Sơ đồ dòng lệnh của các triển khai khác có thể khác nhau. Xem Triển khai thay thế để biết thêm tài nguyên.
1.1. Dòng lệnh¶
Khi gọi Python, bạn có thể chỉ định bất kỳ tùy chọn nào sau đây:
python [-bBdEhiIOPqRsSuvVWx?] [-c lệnh | -m module-name | script | - ] [args]
Tất nhiên, trường hợp sử dụng phổ biến nhất là một lệnh gọi đơn giản của một tập lệnh
python myscript.py
1.1.1. Tùy chọn giao diện¶
Giao diện trình thông dịch tương tự như giao diện của UNIX shell, nhưng cung cấp một số phương thức gọi bổ sung:
Khi được gọi với đầu vào tiêu chuẩn được kết nối với thiết bị tty, nó sẽ nhắc lệnh và thực thi chúng cho đến khi đọc được EOF (ký tự cuối tệp, bạn có thể tạo lệnh đó bằng Ctrl-D trên UNIX hoặc Ctrl-Z, Enter trên Windows). Để biết thêm về chế độ tương tác, hãy xem Chế độ tương tác.
Khi được gọi với đối số tên tệp hoặc với tệp làm đầu vào tiêu chuẩn, nó sẽ đọc và thực thi tập lệnh từ tệp đó.
Khi được gọi với đối số tên thư mục, nó sẽ đọc và thực thi một tập lệnh có tên thích hợp từ thư mục đó.
Khi được gọi bằng
-c command, nó sẽ thực thi (các) câu lệnh Python được cung cấp dưới dạng command. Ở đây command có thể chứa nhiều câu lệnh được phân tách bằng dòng mới. Khoảng trắng ở đầu rất quan trọng trong câu lệnh Python!Khi được gọi bằng
-m module-name, mô-đun đã cho nằm trên đường dẫn mô-đun Python và được thực thi dưới dạng tập lệnh.
Ở chế độ không tương tác, toàn bộ dữ liệu đầu vào được phân tích cú pháp trước khi nó được thực thi.
Tùy chọn giao diện chấm dứt danh sách các tùy chọn được trình thông dịch sử dụng, tất cả các đối số liên tiếp sẽ kết thúc bằng sys.argv -- lưu ý rằng phần tử đầu tiên, chỉ số dưới 0 (sys.argv[0]), là một chuỗi phản ánh nguồn của chương trình.
- -c <command>¶
Thực thi mã Python trong command. command có thể là một hoặc nhiều câu lệnh được phân tách bằng dòng mới, với khoảng trắng ở đầu đáng kể như trong mã mô-đun thông thường.
Nếu tùy chọn này được cung cấp, phần tử đầu tiên của
sys.argvsẽ là"-c"và thư mục hiện tại sẽ được thêm vào đầusys.path(cho phép các mô-đun trong thư mục đó được nhập dưới dạng mô-đun cấp cao nhất).Tăng một auditing event
cpython.run_commandvới đối sốcommand.Thay đổi trong phiên bản 3.14: command được tự động thụt lề trước khi thực thi.
- -m <module-name>¶
Tìm kiếm
sys.pathcho mô-đun được đặt tên và thực thi nội dung của nó dưới dạng mô-đun__main__.Vì đối số là tên module nên bạn không được cung cấp phần mở rộng tệp (
.py). Tên mô-đun phải là tên mô-đun Python tuyệt đối hợp lệ, nhưng việc triển khai có thể không phải lúc nào cũng thực thi điều này (ví dụ: nó có thể cho phép bạn sử dụng tên có dấu gạch nối).Tên gói (bao gồm cả gói không gian tên) cũng được cho phép. Khi tên gói được cung cấp thay vì mô-đun thông thường, trình thông dịch sẽ thực thi
<pkg>.__main__làm mô-đun chính. Hành vi này có chủ ý tương tự như việc xử lý các thư mục và tệp zip được chuyển tới trình thông dịch dưới dạng đối số tập lệnh.Ghi chú
Tùy chọn này không thể được sử dụng với các mô-đun tích hợp và mô-đun mở rộng được viết bằng C, vì chúng không có tệp mô-đun Python. Tuy nhiên, nó vẫn có thể được sử dụng cho các mô-đun được biên dịch trước, ngay cả khi không có sẵn tệp nguồn gốc.
Nếu tùy chọn này được cung cấp, phần tử đầu tiên của
sys.argvsẽ là đường dẫn đầy đủ đến tệp mô-đun (trong khi tệp mô-đun đang được định vị, phần tử đầu tiên sẽ được đặt thành"-m"). Giống như tùy chọn-c, thư mục hiện tại sẽ được thêm vào đầusys.path.Tùy chọn
-Icó thể được sử dụng để chạy tập lệnh ở chế độ biệt lập trong đósys.pathkhông chứa thư mục hiện tại cũng như thư mục gói trang web của người dùng. Tất cả các biến môi trườngPYTHON*cũng bị bỏ qua.Nhiều mô-đun thư viện tiêu chuẩn chứa mã được gọi khi thực thi chúng dưới dạng tập lệnh. Một ví dụ là mô-đun
timeit:python -m timeit -s "setup here" "mã điểm chuẩn ở đây" chi tiết python -m timeit -h # for
Tăng một auditing event
cpython.run_modulevới đối sốmodule-name.Xem thêm
runpy.run_module()Chức năng tương đương có sẵn trực tiếp cho mã Python
PEP 338 -- Thực thi các mô-đun dưới dạng tập lệnh
Thay đổi trong phiên bản 3.1: Cung cấp tên gói để chạy mô-đun con
__main__.Thay đổi trong phiên bản 3.4: gói không gian tên cũng được hỗ trợ
- -
Đọc lệnh từ đầu vào tiêu chuẩn (
sys.stdin). Nếu đầu vào tiêu chuẩn là một thiết bị đầu cuối,-iđược ngụ ý.Nếu tùy chọn này được đưa ra, phần tử đầu tiên của
sys.argvsẽ là"-"và thư mục hiện tại sẽ được thêm vào đầusys.path.Tăng auditing event
cpython.run_stdinmà không có đối số.
- <script>
Thực thi mã Python có trong script, mã này phải là đường dẫn hệ thống tệp (tuyệt đối hoặc tương đối) tham chiếu đến tệp Python, thư mục chứa tệp
__main__.pyhoặc tệp zip chứa tệp__main__.py.Nếu tùy chọn này được đưa ra, phần tử đầu tiên của
sys.argvsẽ là tên tập lệnh như được đưa ra trên dòng lệnh.Nếu tên tập lệnh đề cập trực tiếp đến tệp Python, thư mục chứa tệp đó sẽ được thêm vào đầu
sys.pathvà tệp sẽ được thực thi dưới dạng mô-đun__main__.Nếu tên tập lệnh đề cập đến một thư mục hoặc tệp zip, thì tên tập lệnh sẽ được thêm vào đầu
sys.pathvà tệp__main__.pyở vị trí đó được thực thi dưới dạng mô-đun__main__.Tùy chọn
-Icó thể được sử dụng để chạy tập lệnh ở chế độ biệt lập trong đósys.pathkhông chứa thư mục của tập lệnh cũng như thư mục gói trang web của người dùng. Tất cả các biến môi trườngPYTHON*cũng bị bỏ qua.Tăng một auditing event
cpython.run_filevới đối sốfilename.Xem thêm
runpy.run_path()Chức năng tương đương có sẵn trực tiếp cho mã Python
Nếu không có tùy chọn giao diện nào được đưa ra, -i được ngụ ý, sys.argv[0] là một chuỗi trống ("") và thư mục hiện tại sẽ được thêm vào đầu sys.path. Ngoài ra, tính năng hoàn thành tab và chỉnh sửa lịch sử sẽ tự động được bật, nếu có trên nền tảng của bạn (xem Cấu hình đường đọc).
Xem thêm
Thay đổi trong phiên bản 3.4: Tự động cho phép hoàn thành tab và chỉnh sửa lịch sử.
1.1.2. Tùy chọn chung¶
- -?¶
- -h¶
- --help¶
In một mô tả ngắn gọn về tất cả các tùy chọn dòng lệnh và các biến môi trường tương ứng rồi thoát.
- --help-env¶
In mô tả ngắn về các biến môi trường dành riêng cho Python và thoát.
Added in version 3.11.
- --help-xoptions¶
In mô tả về các tùy chọn
-Xdành riêng cho việc triển khai và thoát.Added in version 3.11.
- --help-all¶
In thông tin sử dụng đầy đủ và thoát.
Added in version 3.11.
1.1.3. Tùy chọn khác¶
- -b¶
Đưa ra cảnh báo khi chuyển đổi
byteshoặcbytearraysangstrmà không chỉ định mã hóa hoặc so sánhbyteshoặcbytearrayvớistrhoặcbytesvớiint. Phát sinh lỗi khi tùy chọn được đưa ra hai lần (-bb).
- -B¶
Nếu được, Python sẽ không cố ghi các tệp
.pyckhi nhập mô-đun nguồn. Xem thêmPYTHONDONTWRITEBYTECODE.
- --check-hash-based-pycs default|always|never¶
Kiểm soát hành vi xác thực của các tệp
.pycdựa trên hàm băm. Xem Vô hiệu hóa mã byte được lưu trong bộ nhớ đệm. Khi được đặt thànhdefault, các tệp bộ đệm mã byte dựa trên hàm băm được chọn và không được chọn sẽ được xác thực theo ngữ nghĩa mặc định của chúng. Khi được đặt thànhalways, tất cả các tệp.pycdựa trên hàm băm, dù được chọn hay không được chọn, đều được xác thực dựa trên tệp nguồn tương ứng của chúng. Khi được đặt thànhnever, các tệp.pycdựa trên hàm băm không được xác thực dựa trên các tệp nguồn tương ứng của chúng.Ngữ nghĩa của các tệp
.pycdựa trên dấu thời gian không bị ảnh hưởng bởi tùy chọn này.
- -d¶
Bật đầu ra gỡ lỗi của trình phân tích cú pháp (chỉ dành cho chuyên gia). Xem thêm biến môi trường
PYTHONDEBUG.Tùy chọn này yêu cầu debug build of Python, nếu không nó sẽ bị bỏ qua.
- -E¶
Bỏ qua tất cả các biến môi trường
PYTHON*, ví dụ:PYTHONPATHvàPYTHONHOME, điều đó có thể được đặt.
- -i¶
Vào chế độ tương tác sau khi thực hiện.
Sử dụng tùy chọn
-isẽ vào chế độ tương tác trong bất kỳ trường hợp nào sau đây:Khi một tập lệnh được truyền làm đối số đầu tiên
Khi tùy chọn
-cđược sử dụngKhi tùy chọn
-mđược sử dụng
Chế độ tương tác sẽ bắt đầu ngay cả khi
sys.stdindường như không phải là thiết bị đầu cuối. TệpPYTHONSTARTUPkhông được đọc.Điều này có thể hữu ích khi kiểm tra các biến toàn cục hoặc theo dõi ngăn xếp khi tập lệnh đưa ra một ngoại lệ. Xem thêm
PYTHONINSPECT.
- -I¶
Chạy Python ở chế độ biệt lập. Điều này cũng ngụ ý các tùy chọn
-E,-Pvà-s.Ở chế độ biệt lập,
sys.pathkhông chứa thư mục của tập lệnh cũng như thư mục gói trang web của người dùng. Tất cả các biến môi trườngPYTHON*cũng bị bỏ qua. Các hạn chế khác có thể được áp dụng để ngăn người dùng tiêm mã độc.Added in version 3.4.
- -O¶
Xóa các câu lệnh khẳng định và bất kỳ mã nào có điều kiện dựa trên giá trị
__debug__. Tăng tên tệp cho các tệp đã biên dịch (bytecode) bằng cách thêm.opt-1trước phần mở rộng.pyc(xem PEP 488). Xem thêmPYTHONOPTIMIZE.Thay đổi trong phiên bản 3.5: Sửa đổi tên tệp
.pyctheo PEP 488.
- -OO¶
Thực hiện
-Ovà loại bỏ các chuỗi tài liệu. Tăng tên tệp cho các tệp đã biên dịch (bytecode) bằng cách thêm.opt-2trước phần mở rộng.pyc(xem PEP 488).Thay đổi trong phiên bản 3.5: Sửa đổi tên tệp
.pyctheo PEP 488.
- -P¶
Đừng thêm trước một đường dẫn có thể không an toàn tới
sys.path:Dòng lệnh
python -m module: Không thêm vào thư mục làm việc hiện tại.Dòng lệnh
python script.py: Không thêm vào trước thư mục của tập lệnh. Nếu đó là liên kết tượng trưng, hãy giải quyết các liên kết tượng trưng.Dòng lệnh
python -c codevàpython(REPL): Không thêm vào trước một chuỗi trống, nghĩa là thư mục làm việc hiện tại.
Xem thêm biến môi trường
PYTHONSAFEPATHvà các tùy chọn-Evà-I(bị cô lập).Added in version 3.11.
- -q¶
Không hiển thị thông báo bản quyền và phiên bản ngay cả trong chế độ tương tác.
Added in version 3.2.
- -R¶
Bật ngẫu nhiên hàm băm. Tùy chọn này chỉ có hiệu lực nếu biến môi trường
PYTHONHASHSEEDđược đặt thành bất kỳ thứ gì khác ngoàirandom, vì tính năng ngẫu nhiên băm được bật theo mặc định.Trên các phiên bản trước của Python, tùy chọn này bật tính năng ngẫu nhiên hóa hàm băm, do đó các giá trị
__hash__()của các đối tượng str và bytes được "ướp muối" bằng một giá trị ngẫu nhiên không thể đoán trước. Mặc dù chúng không đổi trong một quy trình Python riêng lẻ, nhưng chúng không thể dự đoán được giữa các lần gọi Python lặp đi lặp lại.Việc ngẫu nhiên hóa hàm băm nhằm mục đích cung cấp khả năng bảo vệ chống lại việc từ chối dịch vụ do các đầu vào được lựa chọn cẩn thận nhằm khai thác hiệu suất trong trường hợp xấu nhất của cấu trúc dict, độ phức tạp O(n2). Xem https://ocert.org/advisories/ocert-2011-003.html để biết chi tiết.
PYTHONHASHSEEDcho phép bạn đặt giá trị cố định cho bí mật hạt băm.Added in version 3.2.3.
Thay đổi trong phiên bản 3.7: Tùy chọn không còn bị bỏ qua.
- -s¶
Đừng thêm
user site-packages directoryvàosys.path.Xem thêm
PYTHONNOUSERSITE.Xem thêm
PEP 370 -- Thư mục gói trang web cho mỗi người dùng
- -S¶
Vô hiệu hóa việc nhập mô-đun
sitevà các thao tác phụ thuộc vào trang web củasys.pathmà nó đòi hỏi. Đồng thời tắt các thao tác này nếusiteđược nhập rõ ràng sau này (gọisite.main()nếu bạn muốn chúng được kích hoạt).
- -u¶
Buộc các luồng stdout và stderr không được đệm. Tùy chọn này không có tác dụng đối với luồng stdin.
Xem thêm
PYTHONUNBUFFERED.Thay đổi trong phiên bản 3.7: Lớp văn bản của luồng stdout và stderr hiện không có bộ đệm.
- -v¶
In thông báo mỗi khi mô-đun được khởi tạo, hiển thị vị trí (tên tệp hoặc mô-đun tích hợp) mà nó được tải. Khi được cung cấp hai lần (
-vv), hãy in thông báo cho mỗi tệp được kiểm tra khi tìm kiếm mô-đun. Cũng cung cấp thông tin về việc dọn dẹp mô-đun khi thoát.Thay đổi trong phiên bản 3.10: Mô-đun
sitebáo cáo các đường dẫn dành riêng cho trang web và các tệp.pthđang được xử lý.Xem thêm
PYTHONVERBOSE.
- -W arg¶
Kiểm soát cảnh báo. Theo mặc định, máy cảnh báo của Python sẽ in các thông báo cảnh báo tới
sys.stderr.Các cài đặt đơn giản nhất áp dụng một hành động cụ thể vô điều kiện cho tất cả các cảnh báo được phát ra bởi một quy trình (ngay cả những cảnh báo bị bỏ qua theo mặc định):
-Mặc định # Warn một lần cho mỗi vị trí cuộc gọi -Lỗi # Convert đến các trường hợp ngoại lệ -Luôn luôn # Warn mỗi lần -Tường # Same như -Walways -Wmodule # Warn một lần cho mỗi mô-đun gọi điện -Wonce # Warn một lần cho mỗi quy trình Python -Wignore # Never cảnh báo
Tên hành động có thể được viết tắt theo ý muốn và trình thông dịch sẽ phân giải chúng thành tên hành động thích hợp. Ví dụ:
-Wigiống với-Wignore.Hình thức đầy đủ của đối số là:
hành động:tin nhắn:danh mục:mô-đun:lineno
Các trường trống khớp với tất cả các giá trị; các trường trống ở cuối có thể được bỏ qua. Ví dụ:
-W ignore::DeprecationWarningbỏ qua tất cả cảnh báo DeprecationWarning.Trường action như đã giải thích ở trên nhưng chỉ áp dụng cho những cảnh báo khớp với các trường còn lại.
Trường message phải khớp với toàn bộ thông báo cảnh báo; trận đấu này không phân biệt chữ hoa chữ thường.
Trường category khớp với danh mục cảnh báo (ví dụ:
DeprecationWarning). Đây phải là tên lớp; kiểm tra sự trùng khớp xem danh mục cảnh báo thực tế của thông báo có phải là lớp con của danh mục cảnh báo đã chỉ định hay không.Trường module khớp với tên mô-đun (đủ điều kiện); trận đấu này phân biệt chữ hoa chữ thường.
Trường lineno khớp với số dòng, trong đó số 0 khớp với tất cả các số dòng và do đó tương đương với số dòng bị bỏ qua.
Có thể đưa ra nhiều tùy chọn
-W; khi một cảnh báo khớp với nhiều tùy chọn, hành động cho tùy chọn khớp cuối cùng sẽ được thực hiện. Các tùy chọn-Wkhông hợp lệ sẽ bị bỏ qua (tuy nhiên, một thông báo cảnh báo sẽ được in về các tùy chọn không hợp lệ khi cảnh báo đầu tiên được đưa ra).Cảnh báo cũng có thể được kiểm soát bằng biến môi trường
PYTHONWARNINGSvà từ bên trong chương trình Python bằng mô-đunwarnings. Ví dụ: hàmwarnings.filterwarnings()có thể được sử dụng để sử dụng biểu thức chính quy trên thông báo cảnh báo.Xem Bộ lọc cảnh báo và Mô tả bộ lọc cảnh báo để biết thêm chi tiết.
- -x¶
Bỏ qua dòng đầu tiên của nguồn, cho phép sử dụng các dạng
#!cmdkhông phải Unix. Điều này chỉ dành cho một bản hack cụ thể DOS.
- -X¶
Dành riêng cho các tùy chọn triển khai cụ thể khác nhau. CPython hiện xác định các giá trị có thể sau:
-X faulthandlerđể bậtfaulthandler. Xem thêmPYTHONFAULTHANDLER.Added in version 3.3.
-X showrefcountđể xuất tổng số tham chiếu và số khối bộ nhớ đã sử dụng khi chương trình kết thúc hoặc sau mỗi câu lệnh trong trình thông dịch tương tác. Điều này chỉ hoạt động trên debug builds.Added in version 3.4.
-X tracemallocđể bắt đầu theo dõi phân bổ bộ nhớ Python bằng mô-đuntracemalloc. Theo mặc định, chỉ khung gần đây nhất được lưu trữ trong dấu vết của dấu vết. Sử dụng-X tracemalloc=NFRAMEđể bắt đầu theo dõi với giới hạn truy ngược là khung NFRAME. Xemtracemalloc.start()vàPYTHONTRACEMALLOCđể biết thêm thông tin.Added in version 3.4.
-X int_max_str_digitscấu hình integer string conversion length limitation. Xem thêmPYTHONINTMAXSTRDIGITS.Added in version 3.11.
-X importtimeđể hiển thị mỗi lần nhập mất bao lâu. Nó hiển thị tên mô-đun, thời gian tích lũy (bao gồm cả các lần nhập lồng nhau) và thời gian của chính nó (không bao gồm các lần nhập lồng nhau). Lưu ý rằng đầu ra của nó có thể bị hỏng trong ứng dụng đa luồng. Cách sử dụng điển hình làpython -X importtime -c 'import asyncio'.-X importtime=2cho phép đầu ra bổ sung cho biết khi nào mô-đun nhập đã được tải. Trong những trường hợp như vậy, chuỗicachedsẽ được in ở cả hai cột thời gian.Xem thêm
PYTHONPROFILEIMPORTTIME.Added in version 3.7.
Thay đổi trong phiên bản 3.14: Đã thêm
-X importtime=2để theo dõi quá trình nhập mô-đun đã tải và các giá trị dành riêng khác ngoài1và2để sử dụng trong tương lai.-X dev: bật Python Development Mode, giới thiệu các kiểm tra thời gian chạy bổ sung quá tốn kém để bật theo mặc định. Xem thêmPYTHONDEVMODE.Added in version 3.7.
-X utf8kích hoạt Python UTF-8 Mode.-X utf8=0vô hiệu hóa Python UTF-8 Mode một cách rõ ràng (ngay cả khi nó sẽ tự động kích hoạt). Xem thêmPYTHONUTF8.Added in version 3.7.
-X pycache_prefix=PATHcho phép ghi các tệp.pycvào một cây song song bắt nguồn từ thư mục đã cho thay vì vào cây mã. Xem thêmPYTHONPYCACHEPREFIX.Added in version 3.8.
-X warn_default_encodingphát hànhEncodingWarningkhi mã hóa mặc định dành riêng cho miền địa phương được sử dụng để mở tệp. Xem thêmPYTHONWARNDEFAULTENCODING.Added in version 3.10.
-X no_debug_rangesvô hiệu hóa việc đưa các bảng ánh xạ thông tin vị trí bổ sung (dòng cuối, độ lệch cột bắt đầu và độ lệch cột cuối) vào mọi lệnh trong đối tượng mã. Điều này hữu ích khi muốn có các đối tượng mã nhỏ hơn và tệp pyc cũng như loại bỏ các chỉ báo vị trí trực quan bổ sung khi trình thông dịch hiển thị dấu vết. Xem thêmPYTHONNODEBUGRANGES.Added in version 3.11.
-X frozen_modulesxác định xem các mô-đun bị đóng băng có bị máy móc nhập khẩu bỏ qua hay không. Giá trịoncó nghĩa là chúng được nhập vàoffcó nghĩa là chúng bị bỏ qua. Mặc định làonnếu đây là Python đã được cài đặt (trường hợp bình thường). Nếu nó đang được phát triển (chạy từ cây nguồn) thì mặc định làoff. Lưu ý rằng các mô-đun cố địnhimportlib_bootstrapvàimportlib_bootstrap_externalluôn được sử dụng, ngay cả khi cờ này được đặt thànhoff. Xem thêmPYTHON_FROZEN_MODULES.Added in version 3.11.
-X perfcho phép hỗ trợ trình lược tảperfcủa Linux. Khi tùy chọn này được cung cấp, trình lược tảperfsẽ có thể báo cáo các cuộc gọi Python. Tùy chọn này chỉ khả dụng trên một số nền tảng và sẽ không có tác dụng gì nếu không được hỗ trợ trên hệ thống hiện tại. Giá trị mặc định là "tắt". Xem thêmPYTHONPERFSUPPORTvà Hỗ trợ Python cho trình lược tả Linux perf.Added in version 3.12.
-X perf_jitcho phép hỗ trợ trình lược tảperfcủa Linux với sự hỗ trợ DWARF. Khi tùy chọn này được cung cấp, trình lược tảperfsẽ có thể báo cáo các cuộc gọi Python bằng thông tin DWARF. Tùy chọn này chỉ khả dụng trên một số nền tảng và sẽ không có tác dụng gì nếu không được hỗ trợ trên hệ thống hiện tại. Giá trị mặc định là "tắt". Xem thêmPYTHON_PERF_JIT_SUPPORTvà Hỗ trợ Python cho trình lược tả Linux perf.Added in version 3.13.
-X disable_remote_debugtắt hỗ trợ gỡ lỗi từ xa như được mô tả trong PEP 768. Điều này bao gồm cả chức năng lên lịch thực thi mã trong quy trình khác và chức năng nhận mã để thực thi trong quy trình hiện tại.Tùy chọn này chỉ khả dụng trên một số nền tảng và sẽ không có tác dụng gì nếu không được hỗ trợ trên hệ thống hiện tại. Xem thêm
PYTHON_DISABLE_REMOTE_DEBUGvà PEP 768.Added in version 3.14.
-X cpu_count=nghi đèos.cpu_count(),os.process_cpu_count()vàmultiprocessing.cpu_count(). n phải lớn hơn hoặc bằng 1. Tùy chọn này có thể hữu ích cho những người dùng cần giới hạn tài nguyên CPU của hệ thống vùng chứa. Xem thêmPYTHON_CPU_COUNT. Nếu n làdefaultthì không có gì bị ghi đè.Added in version 3.13.
-X presite=package.modulechỉ định một mô-đun cần được nhập trước khi mô-đunsiteđược thực thi và trước khi mô-đun__main__tồn tại. Do đó, mô-đun đã nhập không phải là__main__. Điều này có thể được sử dụng để thực thi mã sớm trong quá trình khởi tạo Python. Python cần phải là built in debug mode để tùy chọn này tồn tại. Xem thêmPYTHON_PRESITE.Added in version 3.13.
-X gil=0,1buộc GIL bị tắt hoặc bật tương ứng. Cài đặt thành0chỉ khả dụng trong các bản dựng được định cấu hình bằng--disable-gil. Xem thêmPYTHON_GILvà CPython có luồng miễn phí.Added in version 3.13.
-X thread_inherit_context=0,1khiếnThread, theo mặc định, sử dụng bản sao ngữ cảnh của người gọiThread.start()khi bắt đầu. Nếu không, các chủ đề sẽ bắt đầu với một ngữ cảnh trống. Nếu không được đặt, giá trị của tùy chọn này sẽ mặc định là1trên các bản dựng có luồng tự do và0nếu không. Xem thêmPYTHON_THREAD_INHERIT_CONTEXT.Added in version 3.14.
-X context_aware_warnings=0,1khiến trình quản lý bối cảnhwarnings.catch_warningssử dụngContextVarđể lưu trữ trạng thái bộ lọc cảnh báo. Nếu không được đặt, giá trị của tùy chọn này sẽ mặc định là1trên các bản dựng có luồng tự do và0nếu không. Xem thêmPYTHON_CONTEXT_AWARE_WARNINGS.Added in version 3.14.
-X tlbc=0,1bật (1, mặc định) hoặc vô hiệu hóa (0) mã byte cục bộ của luồng trong các bản dựng được định cấu hình bằng--disable-gil. Khi bị tắt, điều này cũng vô hiệu hóa trình thông dịch chuyên dụng. Xem thêmPYTHON_TLBC.Added in version 3.14.
Nó cũng cho phép truyền các giá trị tùy ý và truy xuất chúng thông qua từ điển
sys._xoptions.Added in version 3.2.
Thay đổi trong phiên bản 3.9: Đã xóa tùy chọn
-X showalloccount.Thay đổi trong phiên bản 3.10: Đã xóa tùy chọn
-X oldparser.
Removed in version 3.14: -J không còn được dành riêng cho Jython sử dụng nữa và hiện không có ý nghĩa đặc biệt nào.
1.1.4. Kiểm soát màu sắc¶
Trình thông dịch Python được định cấu hình theo mặc định để sử dụng màu sắc để đánh dấu đầu ra trong một số trường hợp nhất định, chẳng hạn như khi hiển thị dấu vết. Hành vi này có thể được kiểm soát bằng cách đặt các biến môi trường khác nhau.
Đặt biến môi trường TERM thành dumb sẽ tắt màu.
Nếu biến môi trường FORCE_COLOR được đặt thì màu sẽ được bật bất kể giá trị của TERM. Điều này hữu ích trên các hệ thống CI không có thiết bị đầu cuối nhưng vẫn có thể hiển thị các chuỗi thoát ANSI.
Nếu biến môi trường NO_COLOR được đặt, Python sẽ tắt tất cả màu ở đầu ra. Điều này được ưu tiên hơn FORCE_COLOR.
Tất cả các biến môi trường này cũng được các công cụ khác sử dụng để kiểm soát đầu ra màu. Để chỉ kiểm soát đầu ra màu trong trình thông dịch Python, có thể sử dụng biến môi trường PYTHON_COLORS. Biến này được ưu tiên hơn NO_COLOR, do đó biến này được ưu tiên hơn FORCE_COLOR.
1.2. Biến môi trường¶
Các biến môi trường này ảnh hưởng đến hành vi của Python, chúng được xử lý trước khi chuyển đổi dòng lệnh khác với -E hoặc -I. Theo thông lệ, các chuyển đổi dòng lệnh sẽ ghi đè các biến môi trường khi có xung đột.
- PYTHONHOME¶
Thay đổi vị trí của thư viện Python tiêu chuẩn. Theo mặc định, các thư viện được tìm kiếm trong
prefix/lib/pythonversionvàexec_prefix/lib/pythonversion, trong đóprefixvàexec_prefixlà các thư mục phụ thuộc vào cài đặt, cả hai đều được đặt mặc định là/usr/local.Khi
PYTHONHOMEđược đặt thành một thư mục duy nhất, giá trị của nó sẽ thay thế cảprefixvàexec_prefix. Để chỉ định các giá trị khác nhau cho những giá trị này, hãy đặtPYTHONHOMEthànhprefix:exec_prefix.
- PYTHONPATH¶
Tăng cường đường dẫn tìm kiếm mặc định cho các tập tin mô-đun. Định dạng này giống với
PATHcủa shell: một hoặc nhiều tên đường dẫn thư mục được phân tách bằngos.pathsep(ví dụ: dấu hai chấm trên Unix hoặc dấu chấm phẩy trên Windows). Các thư mục không tồn tại sẽ được âm thầm bỏ qua.Ngoài các thư mục thông thường, các mục
PYTHONPATHriêng lẻ có thể đề cập đến các tệp zip chứa các mô-đun Python thuần túy (ở dạng nguồn hoặc dạng được biên dịch). Không thể nhập mô-đun mở rộng từ tệp zip.Đường dẫn tìm kiếm mặc định phụ thuộc vào cài đặt nhưng thường bắt đầu bằng
prefix/lib/pythonversion(xemPYTHONHOMEở trên). Đó là always được thêm vàoPYTHONPATH.Một thư mục bổ sung sẽ được chèn vào đường dẫn tìm kiếm phía trước
PYTHONPATHnhư được mô tả ở trên trong Tùy chọn giao diện. Đường dẫn tìm kiếm có thể được thao tác từ bên trong chương trình Python dưới dạng biếnsys.path.
- PYTHONSAFEPATH¶
Nếu điều này được đặt thành một chuỗi không trống, đừng thêm đường dẫn có thể không an toàn tới
sys.path: xem tùy chọn-Pđể biết chi tiết.Added in version 3.11.
- PYTHONPLATLIBDIR¶
Nếu giá trị này được đặt thành một chuỗi không trống, nó sẽ ghi đè giá trị
sys.platlibdir.Added in version 3.9.
- PYTHONSTARTUP¶
Nếu đây là tên của một tệp có thể đọc được thì các lệnh Python trong tệp đó sẽ được thực thi trước khi dấu nhắc đầu tiên được hiển thị ở chế độ tương tác. Tệp được thực thi trong cùng một không gian tên nơi các lệnh tương tác được thực thi để các đối tượng được xác định hoặc nhập vào đó có thể được sử dụng mà không cần thẩm định trong phiên tương tác. Bạn cũng có thể thay đổi lời nhắc
sys.ps1vàsys.ps2cũng như hooksys.__interactivehook__trong tệp này.Tăng một auditing event
cpython.run_startupvới tên tệp làm đối số khi được gọi khi khởi động.
- PYTHONOPTIMIZE¶
Nếu điều này được đặt thành một chuỗi không trống thì nó tương đương với việc chỉ định tùy chọn
-O. Nếu được đặt thành số nguyên, nó tương đương với việc chỉ định-Onhiều lần.
- PYTHONBREAKPOINT¶
Nếu điều này được đặt, nó sẽ đặt tên cho một cuộc gọi có thể sử dụng ký hiệu đường chấm. Mô-đun chứa khả năng gọi sẽ được nhập và sau đó khả năng gọi sẽ được chạy bằng cách triển khai mặc định của
sys.breakpointhook()mà chính nó được gọi bởibreakpoint()tích hợp. Nếu không được đặt hoặc được đặt thành chuỗi trống, nó tương đương với giá trị "pdb.set_trace". Việc đặt giá trị này thành chuỗi "0" sẽ khiến việc triển khai mặc định củasys.breakpointhook()không làm gì khác ngoài việc quay lại ngay lập tức.Added in version 3.7.
- PYTHONDEBUG¶
Nếu điều này được đặt thành một chuỗi không trống thì nó tương đương với việc chỉ định tùy chọn
-d. Nếu được đặt thành số nguyên, nó tương đương với việc chỉ định-dnhiều lần.Biến môi trường này yêu cầu debug build of Python, nếu không nó sẽ bị bỏ qua.
- PYTHONINSPECT¶
Nếu điều này được đặt thành một chuỗi không trống thì nó tương đương với việc chỉ định tùy chọn
-i.Biến này cũng có thể được sửa đổi bằng mã Python bằng cách sử dụng
os.environđể buộc chế độ kiểm tra khi chấm dứt chương trình.Tăng auditing event
cpython.run_stdinmà không có đối số.Thay đổi trong phiên bản 3.12.5: (cũng 3.11.10, 3.10.15, 3.9.20 và 3.8.20) Phát ra các sự kiện kiểm tra.
Thay đổi trong phiên bản 3.13: Sử dụng PyREPL nếu có thể, trong trường hợp đó
PYTHONSTARTUPcũng được thực thi. Phát ra các sự kiện kiểm tra.
- PYTHONUNBUFFERED¶
Nếu điều này được đặt thành một chuỗi không trống thì nó tương đương với việc chỉ định tùy chọn
-u.
- PYTHONVERBOSE¶
Nếu điều này được đặt thành một chuỗi không trống thì nó tương đương với việc chỉ định tùy chọn
-v. Nếu được đặt thành số nguyên, nó tương đương với việc chỉ định-vnhiều lần.
- PYTHONCASEOK¶
Nếu điều này được đặt, Python sẽ bỏ qua chữ hoa chữ thường trong câu lệnh
import. Điều này chỉ hoạt động trên Windows và macOS.
- PYTHONDONTWRITEBYTECODE¶
Nếu điều này được đặt thành một chuỗi không trống, Python sẽ không cố ghi các tệp
.pyckhi nhập mô-đun nguồn. Điều này tương đương với việc chỉ định tùy chọn-B.
- PYTHONPYCACHEPREFIX¶
Nếu điều này được đặt, Python sẽ ghi các tệp
.pycvào cây thư mục nhân bản tại đường dẫn này, thay vì trong các thư mục__pycache__trong cây nguồn. Điều này tương đương với việc chỉ định tùy chọn-Xpycache_prefix=PATH.Added in version 3.8.
- PYTHONHASHSEED¶
Nếu biến này không được đặt hoặc được đặt thành
random, một giá trị ngẫu nhiên sẽ được sử dụng để tạo giá trị băm của các đối tượng str và byte.Nếu
PYTHONHASHSEEDđược đặt thành một giá trị số nguyên, nó sẽ được sử dụng làm hạt giống cố định để tạo hàm băm() của các loại được bao phủ bởi ngẫu nhiên hàm băm.Mục đích của nó là cho phép băm lặp lại, chẳng hạn như để tự kiểm tra cho chính trình thông dịch hoặc cho phép một cụm quy trình python chia sẻ các giá trị băm.
Số nguyên phải là số thập phân trong phạm vi [0,4294967295]. Việc chỉ định giá trị 0 sẽ vô hiệu hóa ngẫu nhiên hàm băm.
Added in version 3.2.3.
- PYTHONINTMAXSTRDIGITS¶
Nếu biến này được đặt thành số nguyên, nó sẽ được sử dụng để định cấu hình integer string conversion length limitation chung của trình thông dịch.
Added in version 3.11.
- PYTHONIOENCODING¶
Nếu cài đặt này được đặt trước khi chạy trình thông dịch, nó sẽ ghi đè mã hóa được sử dụng cho stdin/stdout/stderr, theo cú pháp
encodingname:errorhandler. Cả hai phầnencodingnamevà:errorhandlerđều là tùy chọn và có cùng ý nghĩa như trongstr.encode().Đối với stderr, phần
:errorhandlerbị bỏ qua; trình xử lý sẽ luôn là'backslashreplace'.Thay đổi trong phiên bản 3.4: Phần
encodingnamehiện là tùy chọn.Thay đổi trong phiên bản 3.6: Trên Windows, mã hóa được chỉ định bởi biến này sẽ bị bỏ qua đối với bộ đệm của bảng điều khiển tương tác trừ khi
PYTHONLEGACYWINDOWSSTDIOcũng được chỉ định. Các tập tin và đường ống được chuyển hướng qua các luồng tiêu chuẩn không bị ảnh hưởng.
- PYTHONNOUSERSITE¶
Nếu điều này được đặt, Python sẽ không thêm
user site-packages directoryvàosys.path.Xem thêm
PEP 370 -- Thư mục gói trang web cho mỗi người dùng
- PYTHONUSERBASE¶
Xác định
user base directory, được sử dụng để tính toán đường đi củauser site-packages directoryvà installation paths chopython -m pip install --user.Xem thêm
PEP 370 -- Thư mục gói trang web cho mỗi người dùng
- PYTHONEXECUTABLE¶
Nếu biến môi trường này được đặt,
sys.argv[0]sẽ được đặt thành giá trị của nó thay vì giá trị có được trong thời gian chạy C. Chỉ hoạt động trên macOS.
- PYTHONWARNINGS¶
Điều này tương đương với tùy chọn
-W. Nếu được đặt thành một chuỗi được phân tách bằng dấu phẩy, thì nó tương đương với việc chỉ định-Wnhiều lần, với các bộ lọc ở sau trong danh sách sẽ được ưu tiên hơn các bộ lọc trước đó trong danh sách.Các cài đặt đơn giản nhất áp dụng một hành động cụ thể vô điều kiện cho tất cả các cảnh báo được phát ra bởi một quy trình (ngay cả những cảnh báo bị bỏ qua theo mặc định):
PYTHONWARNINGS=# Warn mặc định một lần cho mỗi vị trí cuộc gọi PYTHONWARNINGS=lỗi # Convert đối với các trường hợp ngoại lệ PYTHONWARNINGS=luôn luôn # Warn mọi lúc PYTHONWARNINGS=tất cả # Same như PYTHONWARNINGS=luôn luôn PYTHONWARNINGS=mô-đun # Warn một lần cho mỗi mô-đun gọi PYTHONWARNINGS=một lần # Warn một lần cho mỗi quy trình Python PYTHONWARNINGS=bỏ qua # Never cảnh báo
Xem Bộ lọc cảnh báo và Mô tả bộ lọc cảnh báo để biết thêm chi tiết.
- PYTHONFAULTHANDLER¶
Nếu biến môi trường này được đặt thành một chuỗi không trống,
faulthandler.enable()sẽ được gọi khi khởi động: cài đặt trình xử lý cho các tín hiệuSIGSEGV,SIGFPE,SIGABRT,SIGBUSvàSIGILLđể kết xuất truy nguyên Python. Điều này tương đương với tùy chọn-Xfaulthandler.Added in version 3.3.
- PYTHONTRACEMALLOC¶
Nếu biến môi trường này được đặt thành một chuỗi không trống, hãy bắt đầu theo dõi việc phân bổ bộ nhớ Python bằng mô-đun
tracemalloc. Giá trị của biến là số lượng khung hình tối đa được lưu trữ trong dấu vết của dấu vết. Ví dụ:PYTHONTRACEMALLOC=1chỉ lưu trữ khung hình gần đây nhất. Xem chức năngtracemalloc.start()để biết thêm thông tin. Điều này tương đương với việc đặt tùy chọn-Xtracemalloc.Added in version 3.4.
- PYTHONPROFILEIMPORTTIME¶
Nếu biến môi trường này được đặt thành
1, Python sẽ hiển thị mỗi lần nhập mất bao lâu. Nếu được đặt thành2, Python sẽ bao gồm đầu ra cho các mô-đun đã nhập đã được tải. Điều này tương đương với việc đặt tùy chọn-Ximporttime.Added in version 3.7.
Thay đổi trong phiên bản 3.14: Đã thêm
PYTHONPROFILEIMPORTTIME=2để theo dõi quá trình nhập mô-đun đã tải.
- PYTHONASYNCIODEBUG¶
Nếu biến môi trường này được đặt thành một chuỗi không trống, hãy bật debug mode của mô-đun
asyncio.Added in version 3.4.
- PYTHONMALLOC¶
Đặt bộ cấp phát bộ nhớ Python và/hoặc cài đặt các móc gỡ lỗi.
Đặt họ cấp phát bộ nhớ được Python sử dụng:
default: sử dụng default memory allocators.malloc: sử dụng chức năngmalloc()của thư viện C cho tất cả các miền (PYMEM_DOMAIN_RAW,PYMEM_DOMAIN_MEM,PYMEM_DOMAIN_OBJ).pymalloc: sử dụng pymalloc allocator cho miềnPYMEM_DOMAIN_MEMvàPYMEM_DOMAIN_OBJvà sử dụng hàmmalloc()cho miềnPYMEM_DOMAIN_RAW.mimalloc: sử dụng mimalloc allocator cho miềnPYMEM_DOMAIN_MEMvàPYMEM_DOMAIN_OBJvà sử dụng hàmmalloc()cho miềnPYMEM_DOMAIN_RAW.
Cài đặt debug hooks:
debug: cài đặt móc gỡ lỗi lên trên default memory allocators.malloc_debug: giống nhưmallocnhưng cũng cài đặt các hook gỡ lỗi.pymalloc_debug: giống nhưpymallocnhưng cũng cài đặt các hook gỡ lỗi.mimalloc_debug: giống nhưmimallocnhưng cũng cài đặt các hook gỡ lỗi.
Ghi chú
Trong bản dựng free-threaded, các giá trị
malloc,malloc_debug,pymallocvàpymalloc_debugkhông được hỗ trợ. Chỉ chấp nhậndefault,debug,mimallocvàmimalloc_debug.Added in version 3.6.
Thay đổi trong phiên bản 3.7: Đã thêm bộ cấp phát
"default".
- PYTHONMALLOCSTATS¶
Nếu được đặt thành một chuỗi không trống, Python sẽ in số liệu thống kê của pymalloc memory allocator hoặc mimalloc memory allocator (bất kỳ cái nào đang được sử dụng) mỗi khi một trường đối tượng mới được tạo và khi tắt máy.
Biến này bị bỏ qua nếu biến môi trường
PYTHONMALLOCđược sử dụng để buộc bộ cấp phátmalloc()của thư viện C hoặc nếu Python được định cấu hình mà không hỗ trợ cảpymallocvàmimalloc.Thay đổi trong phiên bản 3.6: Biến này hiện cũng có thể được sử dụng trên Python được biên dịch ở chế độ phát hành. Bây giờ nó không có hiệu lực nếu được đặt thành một chuỗi trống.
- PYTHONLEGACYWINDOWSFSENCODING¶
Nếu được đặt thành một chuỗi không trống, chế độ filesystem encoding and error handler mặc định sẽ trở lại các giá trị trước 3,6 lần lượt là 'mbcs' và 'replace'. Mặt khác, các giá trị mặc định mới 'utf-8' và 'surrogatepass' sẽ được sử dụng.
Điều này cũng có thể được kích hoạt khi chạy với
sys._enablelegacywindowsfsencoding().sẵn có: Windows.
Added in version 3.6: Xem PEP 529 để biết thêm chi tiết.
- PYTHONLEGACYWINDOWSSTDIO¶
Nếu được đặt thành một chuỗi không trống, thì không sử dụng trình đọc và ghi bảng điều khiển mới. Điều này có nghĩa là các ký tự Unicode sẽ được mã hóa theo trang mã bảng điều khiển đang hoạt động, thay vì sử dụng utf-8.
Biến này bị bỏ qua nếu các luồng tiêu chuẩn được chuyển hướng (tới tệp hoặc đường dẫn) thay vì đề cập đến bộ đệm của bảng điều khiển.
sẵn có: Windows.
Added in version 3.6.
- PYTHONCOERCECLOCALE¶
Nếu được đặt thành giá trị
0, sẽ khiến ứng dụng dòng lệnh Python chính bỏ qua việc ép buộc các ngôn ngữ C và POSIX dựa trên ASCII kế thừa sang một giải pháp thay thế dựa trên UTF-8 có khả năng cao hơn.Nếu biến này được đặt not (hoặc được đặt thành giá trị khác
0), biến môi trường ghi đè ngôn ngữLC_ALLcũng không được đặt và ngôn ngữ hiện tại được báo cáo cho danh mụcLC_CTYPElà ngôn ngữCmặc định hoặc nếu không thì ngôn ngữPOSIXdựa trên ASCII rõ ràng, thì CLI của Python sẽ cố gắng định cấu hình các ngôn ngữ sau choLC_CTYPEtheo thứ tự được liệt kê trước khi tải thời gian chạy trình thông dịch:C.UTF-8C.utf8UTF-8
Nếu việc đặt một trong các danh mục ngôn ngữ này thành công thì biến môi trường
LC_CTYPEcũng sẽ được đặt tương ứng trong môi trường quy trình hiện tại trước khi thời gian chạy Python được khởi tạo. Điều này đảm bảo rằng ngoài việc được nhìn thấy bởi cả trình thông dịch và các thành phần nhận biết ngôn ngữ khác đang chạy trong cùng một quy trình (chẳng hạn như thư viện GNUreadline), cài đặt cập nhật còn được nhìn thấy trong các quy trình con (bất kể các quy trình đó có đang chạy trình thông dịch Python hay không), cũng như trong các hoạt động truy vấn môi trường thay vì ngôn ngữ C hiện tại (chẳng hạn nhưlocale.getdefaultlocale()của Python).Việc định cấu hình một trong các ngôn ngữ này (rõ ràng hoặc thông qua ép buộc ngôn ngữ ngầm ở trên) sẽ tự động kích hoạt
surrogateescapeerror handler chosys.stdinvàsys.stdout(sys.stderrtiếp tục sử dụngbackslashreplacenhư ở bất kỳ ngôn ngữ nào khác). Hành vi xử lý luồng này có thể được ghi đè bằngPYTHONIOENCODINGnhư bình thường.Vì mục đích gỡ lỗi, việc đặt
PYTHONCOERCECLOCALE=warnsẽ khiến Python phát ra các thông báo cảnh báo trênstderrnếu cưỡng chế ngôn ngữ kích hoạt hoặc nếu một ngôn ngữ mà would đã kích hoạt cưỡng chế vẫn hoạt động khi thời gian chạy Python được khởi chạy.Cũng lưu ý rằng ngay cả khi tính năng ép buộc ngôn ngữ bị vô hiệu hóa hoặc khi không tìm được ngôn ngữ đích phù hợp,
PYTHONUTF8vẫn sẽ kích hoạt theo mặc định ở các ngôn ngữ dựa trên ASCII cũ. Cả hai tính năng này phải được tắt để buộc trình thông dịch sử dụngASCIIthay vìUTF-8cho giao diện hệ thống.sẵn có: Unix.
Added in version 3.7: Xem PEP 538 để biết thêm chi tiết.
- PYTHONDEVMODE¶
Nếu biến môi trường này được đặt thành một chuỗi không trống, hãy bật Python Development Mode, đưa ra các kiểm tra thời gian chạy bổ sung quá đắt để được bật theo mặc định. Điều này tương đương với việc đặt tùy chọn
-Xdev.Added in version 3.7.
- PYTHONUTF8¶
Nếu được đặt thành
1, hãy bật Python UTF-8 Mode.Nếu được đặt thành
0, hãy tắt Python UTF-8 Mode.Việc đặt bất kỳ chuỗi không trống nào khác sẽ gây ra lỗi trong quá trình khởi tạo trình thông dịch.
Added in version 3.7.
- PYTHONWARNDEFAULTENCODING¶
Nếu biến môi trường này được đặt thành một chuỗi không trống, hãy phát hành
EncodingWarningkhi sử dụng mã hóa mặc định dành riêng cho ngôn ngữ.Xem Cảnh báo mã hóa chọn tham gia để biết chi tiết.
Added in version 3.10.
- PYTHONNODEBUGRANGES¶
Nếu biến này được đặt, nó sẽ vô hiệu hóa việc đưa các bảng ánh xạ thông tin vị trí bổ sung (dòng cuối, độ lệch cột bắt đầu và độ lệch cột cuối) vào mọi lệnh trong đối tượng mã. Điều này hữu ích khi muốn có các đối tượng mã nhỏ hơn và tệp pyc cũng như loại bỏ các chỉ báo vị trí trực quan bổ sung khi trình thông dịch hiển thị dấu vết.
Added in version 3.11.
- PYTHONPERFSUPPORT¶
Nếu biến này được đặt thành giá trị khác 0, thì biến này sẽ bật hỗ trợ cho trình lược tả
perfcủa Linux để biến này có thể được phát hiện bởi các lệnh gọi Python.Nếu được đặt thành
0, hãy tắt hỗ trợ trình biên dịchperfcủa Linux.Xem thêm tùy chọn dòng lệnh
-X perfvà Hỗ trợ Python cho trình lược tả Linux perf.Added in version 3.12.
- PYTHON_PERF_JIT_SUPPORT¶
Nếu biến này được đặt thành giá trị khác 0, thì biến này sẽ bật hỗ trợ cho trình lược tả
perfcủa Linux để biến này có thể được phát hiện bằng cách sử dụng thông tin DWARF.Nếu được đặt thành
0, hãy tắt hỗ trợ trình biên dịchperfcủa Linux.Xem thêm tùy chọn dòng lệnh
-X perf_jitvà Hỗ trợ Python cho trình lược tả Linux perf.Added in version 3.13.
- PYTHON_DISABLE_REMOTE_DEBUG¶
Nếu biến này được đặt thành một chuỗi không trống, nó sẽ tắt tính năng gỡ lỗi từ xa được mô tả trong PEP 768. Điều này bao gồm cả chức năng lên lịch thực thi mã trong quy trình khác và chức năng nhận mã để thực thi trong quy trình hiện tại.
Xem thêm tùy chọn dòng lệnh
-X disable_remote_debug.Added in version 3.14.
- PYTHON_CPU_COUNT¶
Nếu biến này được đặt thành số nguyên dương, nó sẽ ghi đè các giá trị trả về của
os.cpu_count()vàos.process_cpu_count().Xem thêm tùy chọn dòng lệnh
-X cpu_count.Added in version 3.13.
- PYTHON_FROZEN_MODULES¶
Nếu biến này được đặt thành
onhoặcoff, nó sẽ xác định xem các mô-đun bị đóng băng có bị máy móc nhập khẩu bỏ qua hay không. Giá trịoncó nghĩa là chúng được nhập vàoffcó nghĩa là chúng bị bỏ qua. Giá trị mặc định làoncho các bản dựng không gỡ lỗi (trường hợp bình thường) vàoffcho các bản dựng gỡ lỗi. Lưu ý rằng các mô-đun cố địnhimportlib_bootstrapvàimportlib_bootstrap_externalluôn được sử dụng, ngay cả khi cờ này được đặt thànhoff.Xem thêm tùy chọn dòng lệnh
-X frozen_modules.Added in version 3.13.
- PYTHON_COLORS¶
Nếu biến này được đặt thành
1, trình thông dịch sẽ tô màu các loại đầu ra khác nhau. Đặt nó thành0sẽ tắt hành vi này. Xem thêm Kiểm soát màu sắc.Added in version 3.13.
- PYTHON_BASIC_REPL¶
Nếu biến này được đặt thành bất kỳ giá trị nào, trình thông dịch sẽ không cố tải REPL dựa trên Python yêu cầu
readlinevà thay vào đó sẽ sử dụng REPL dựa trên trình phân tích cú pháp truyền thống.Added in version 3.13.
- PYTHON_HISTORY¶
Biến môi trường này có thể được sử dụng để đặt vị trí của tệp
.python_history(theo mặc định, nó là.python_historytrong thư mục chính của người dùng).Added in version 3.13.
- PYTHON_GIL¶
Nếu biến này được đặt thành
1, khóa trình thông dịch chung (GIL) sẽ bị buộc bật. Đặt nó thành0sẽ tắt GIL (cần cấu hình Python với tùy chọn xây dựng--disable-gil).Xem thêm tùy chọn dòng lệnh
-X gil, được ưu tiên hơn biến này và CPython có luồng miễn phí.Added in version 3.13.
- PYTHON_THREAD_INHERIT_CONTEXT¶
Nếu biến này được đặt thành
1thì theo mặc định,Threadsẽ sử dụng bản sao ngữ cảnh của người gọiThread.start()khi bắt đầu. Nếu không, các chủ đề mới sẽ bắt đầu với một ngữ cảnh trống. Nếu không được đặt, biến này sẽ mặc định là1trên các bản dựng có luồng tự do và0nếu không. Xem thêm-X thread_inherit_context.Added in version 3.14.
- PYTHON_CONTEXT_AWARE_WARNINGS¶
Nếu được đặt thành
1thì trình quản lý bối cảnhwarnings.catch_warningssẽ sử dụngContextVarđể lưu trữ trạng thái bộ lọc cảnh báo. Nếu không được đặt, biến này sẽ mặc định là1trên các bản dựng có luồng tự do và0nếu không. Xem-X context_aware_warnings.Added in version 3.14.
- PYTHON_JIT¶
Trên các bản dựng có sẵn tính năng biên dịch đúng lúc thử nghiệm, biến này có thể buộc JIT bị tắt (
0) hoặc bật (1) khi khởi động trình thông dịch.Added in version 3.13.
- PYTHON_TLBC¶
Nếu được đặt thành
1sẽ bật mã byte cục bộ của luồng. Nếu được đặt thành0, mã byte cục bộ của luồng và trình thông dịch chuyên biệt sẽ bị tắt. Chỉ áp dụng cho các bản dựng được định cấu hình bằng--disable-gil.Xem thêm tùy chọn dòng lệnh
-X tlbc.Added in version 3.14.
1.2.1. Biến chế độ gỡ lỗi¶
- PYTHONDUMPREFS¶
Nếu được đặt, Python sẽ kết xuất các đối tượng và số lượng tham chiếu vẫn còn tồn tại sau khi tắt trình thông dịch.
Cần cấu hình Python với tùy chọn xây dựng
--with-trace-refs.
- PYTHONDUMPREFSFILE¶
Nếu được đặt, Python sẽ kết xuất các đối tượng và số lượng tham chiếu vẫn còn tồn tại sau khi tắt trình thông dịch vào một tệp theo đường dẫn được cung cấp làm giá trị cho biến môi trường này.
Cần cấu hình Python với tùy chọn xây dựng
--with-trace-refs.Added in version 3.11.
- PYTHON_PRESITE¶
Nếu biến này được đặt thành một mô-đun, thì mô-đun đó sẽ được nhập sớm trong vòng đời của trình thông dịch, trước khi mô-đun
siteđược thực thi và trước khi mô-đun__main__được tạo. Do đó, mô-đun đã nhập không được coi là__main__.Điều này có thể được sử dụng để thực thi mã sớm trong quá trình khởi tạo Python.
Để nhập mô-đun con, hãy sử dụng
package.modulelàm giá trị, giống như trong câu lệnh nhập.Xem thêm tùy chọn dòng lệnh
-X presite, tùy chọn này được ưu tiên hơn biến này.Cần cấu hình Python với tùy chọn xây dựng
--with-pydebug.Added in version 3.13.