1. 命令行與環境?
CPython 解析器會掃描命令行與環境用于獲取各種設置信息。
CPython implementation detail: 其他實現的命令行方案可能有所不同。 更多相關資源請參閱 其他實現。
1.1. 命令行?
對 Python 發起調用時,你可以指定以下的任意選項:
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
當然最常見的用例就是簡單地啟動執行一個腳本:
python myscript.py
1.1.1. 接口選項?
解釋器接口類似于 UNIX shell,但提供了一些額外的發起調用方法:
當調用時附帶連接到某個 tty 設備的標準輸入時,它會提示輸入命令并執行它們,直到讀入一個 EOF(文件結束字符,其產生方式是在 UNIX 中按 Ctrl-D 或在 Windows 中按 Ctrl-Z, Enter。)
當調用時附帶一個文件名參數或以一個文件作為標準輸入時,它會從該文件讀取并執行腳本程序。
當調用時附帶一個目錄名參數時,它會從該目錄讀取并執行具有適當名稱的腳本程序。
當調用時附帶
-c command時,它會執行 command 所給出的 Python 語句。 在這里 command 可以包含以換行符分隔的多條語句。 請注意前導空格在 Python 語句中是有重要作用的!當調用時附帶
-m module-name時,會在 Python 模塊路徑中查找指定的模塊,并將其作為腳本程序執行。
在非交互模式下,會對全部輸入先解析再執行。
一個接口選項會終結解釋器所讀入的選項列表,后續的所有參數將被放入 sys.argv -- 請注意其中首個元素即第零項 (sys.argv[0]) 會是一個表示程序源的字符串。
-
-c<command>? 執行 command 中的 Python 代碼。 command 可以為一條或以換行符分隔的多條語句,其中前導空格像在普通模塊代碼中一樣具有作用。
如果給出此選項,
sys.argv的首個元素將為"-c"并且當前目錄將被加入sys.path的開頭(以允許該目錄中的模塊作為最高層級模塊被導入)。
-
-m<module-name>? 在
sys.path中搜索指定名稱的模塊并將其內容作為__main__模塊來執行。由于該參數為 module 名稱,你不應給出文件擴展名 (
.py)。 模塊名稱應為絕對有效的 Python 模塊名稱,但具體實現可能并不總是強制要求這一點(例如它可能允許你使用包含連字符的名稱)。包名稱(包括命名空間包)也允許使用。 當所提供的是包名稱而非普通模塊名稱時,解釋器將把
<pkg>.__main__作為主模塊來執行。 此行為特意被設計為與作為腳本參數傳遞給解釋器的目錄和 zip 文件的處理方式類似。注解
此選項不適用于內置模塊和以 C 編寫的擴展模塊,因為它們并沒有對應的 Python 模塊文件。 但是它仍然適用于預編譯的模塊,即使沒有可用的初始源文件。
如果給出此選項,
sys.argv的首個元素將為模塊文件的完整路徑 (在定位模塊文件期間,首個元素將設為"-m")。 與-c選項一樣,當前目錄將被加入sys.path的開頭。-I選項可用來在隔離模式下運行腳本,此模式中sys.path既不包含當前目錄也不包含用戶的 site-packages 目錄。 所有PYTHON*環境變量也會被忽略。許多標準庫模塊都包含作為腳本執行時會被發起調用的代碼。 其中的一個例子是
timeit模塊:python -m timeit -s 'setup here' 'benchmarked code here' python -m timeit -h # for details
在 3.1 版更改: 提供包名稱來運行
__main__子模塊。在 3.4 版更改: 同樣支持命名空間包
-
<script> 執行 script 中的 Python 代碼,該參數應為一個(絕對或相對)文件系統路徑,指向某個 Python 文件、包含
__main__.py文件的目錄,或包含__main__.py文件的 zip 文件。如果給出此選項,
sys.argv的首個元素將為在命令行中指定的腳本名稱。如果腳本名稱直接指向一個 Python 文件,則包含該文件的目錄將被加入
sys.path的開頭,并且該文件會被作為__main__模塊來執行。如果腳本名稱指向一個目錄或 zip 文件,則腳本名稱將被加入
sys.path的開頭,并且該位置中的__main__.py文件會被作為__main__模塊來執行。-I選項可用來在隔離模式下運行腳本,此模式中sys.path既不包含腳本所在目錄也不包含用戶的 site-packages 目錄。 所有PYTHON*環境變量也會被忽略。參見
runpy.run_path()Python 代碼可以直接使用的等效功能
如果沒有給出接口選項,則使用 -i,sys.argv[0] 將為空字符串 (""),并且當前目錄會被加入 sys.path 的開頭。 此外,tab 補全和歷史編輯會自動啟用,如果你的系統平臺支持此功能的話 (參見 Readline(類庫) 配置)。
參見
在 3.4 版更改: 自動啟用 tab 補全和歷史編輯。
1.1.2. 通用選項?
1.1.3. 其他選項?
-
-B? 如果給出此選項,Python 將不會試圖在導入源模塊時寫入
.pyc文件。 另請參閱PYTHONDONTWRITEBYTECODE。
-
--check-hash-based-pycsdefault|always|never? 控制基于哈希值的
.pyc文件的驗證行為。 參見 已緩存字節碼的失效。 當設為default時,已選定和未選定的基于哈希值的字節碼緩存文件將根據其默認語義進行驗證。 當設為always時,所有基于哈希值的.pyc文件,不論是已選定還是未選定的都將根據其對應的源文件進行驗證。 當設為never時,基于哈希值的.pyc文件將不會根據其對應的源文件進行驗證。基于時間戳的
.pyc文件的語義不會受此選項影響。
-
-d? 開啟解析器調試輸出(限專家使用,依賴于編譯選項)。 另請參閱
PYTHONDEBUG。
-
-E? 忽略所有
PYTHON*環境變量,例如可能已設置的PYTHONPATH和PYTHONHOME。
-
-i? 當有腳本被作為首個參數傳入或使用了
-c選項時,在執行腳本或命令之后進入交互模式,即使是在sys.stdin并不是一個終端的時候。PYTHONSTARTUP文件不會被讀取。這一選項的用處是在腳本引發異常時檢查全局變量或者棧跟蹤。 另請參閱
PYTHONINSPECT。
-
-I? 在隔離模式下運行 Python。 這將同時應用 -E 和 -s。 在隔離模式下
sys.path既不包含腳本所在目錄也不包含用戶的 site-packages 目錄。 所有PYTHON*環境變量也會被忽略。 還可以施加更進一步的限制以防止用戶注入惡意代碼。3.4 新版功能.
-
-O? 移除 assert 語句以及任何以
__debug__的值作為條件的代碼。 通過在.pyc擴展名之前添加.opt-1來擴充已編譯文件 (bytecode) 的文件名 (參見 PEP 488)。 另請參閱PYTHONOPTIMIZE。在 3.5 版更改: 依據 PEP 488 修改
.pyc文件名。
-
-OO? 在啟用
-O的同時丟棄文檔字符串。 通過在.pyc擴展名之前添加.opt-2來擴展已編譯文件 (bytecode) 的文件名 (參見 PEP 488)。在 3.5 版更改: 依據 PEP 488 修改
.pyc文件名。
-
-q? 即使在交互模式下也不顯示版權和版本信息。
3.2 新版功能.
-
-R? 開啟哈希隨機化。 此選項權
PYTHONHASHSEED環境變量設置為0時起作用,因為哈希隨機化是默認啟用的。在先前的 Python 版本中,此選項會開啟哈希隨機化,這樣 str, bytes 和 datetime 的
__hash__()值將會使用一個不可預測的隨機值來“加鹽”。 雖然它們在單個 Python 進程中會保持不變,但在重復發起的 Python 調用之間則是不可預測的。哈希隨機化旨在針對由精心選擇的輸入引起的拒絕服務攻擊提供防護,這種輸入利用了構造 dict 在最壞情況下的性能即 O(n^2) 復雜度。 詳情請參閱 http://www.ocert.org/advisories/ocert-2011-003.html。
PYTHONHASHSEED允許你為哈希種子密碼設置一個固定值。在 3.7 版更改: 此選項不會再被忽略。
3.2.3 新版功能.
-
-s? 不要將
用戶 site-packages 目錄添加到sys.path。參見
PEP 370 -- 分用戶的 site-packages 目錄
-
-S? 禁用
site的導入及其所附帶的基于站點對sys.path的操作。 如果site會在稍后被顯式地導入也會禁用這些操作 (如果你希望觸發它們則應調用site.main())。
-
-u? 強制 stdout 和 stderr 流不使用緩沖。 此選項對 stdin 流無影響。
另請參閱
PYTHONUNBUFFERED。在 3.7 版更改: stdout 和 stderr 流在文本層現在不使用緩沖。
-
-v? 每當一個模塊被初始化時打印一條信息,顯示其加載位置(文件名或內置模塊)。 當重復給出時 (
-vv),為搜索模塊時所檢查的每個文件都打印一條消息。 此外還提供退出時有關模塊清理的信息A。 另請參閱PYTHONVERBOSE。
-
-Warg? 警告控制。 Python 的警告機制在默認情況下會向
sys.stderr打印警告消息。 典型的警告消息具有如下形式:file:line: category: message
默認情況下,每個警告都對于其發生所在的每個源行都會打印一次。 此選項可控制警告打印的頻繁程度。
可以給出多個
-W選項;當某個警告能與多個選項匹配時,將執行最后一個匹配選項的操作。 無效的-W選項將被忽略(但是,在發出第一個警告時會打印有關無效選項的警告消息)。警告也可以使用
PYTHONWARNINGS環境變量以及使用warnings模塊在 Python 程序內部進行控制。最簡單的設置是將某個特定操作無條件地應用于進程所發出所有警告 (即使是在默認情況下會忽略的那些警告):
-Wdefault # Warn once per call location -Werror # Convert to exceptions -Walways # Warn every time -Wmodule # Warn once per calling module -Wonce # Warn once per Python process -Wignore # Never warn
操作名稱可以根據需要進行縮寫 (例如
-Wi,-Wd,-Wa,-We),解釋器將會把它們解析為適當的操作名稱。
-
-x? 跳過源中第一行,以允許使用非 Unix 形式的
#!cmd。 這適用于 DOS 專屬的破解操作。
-
-X? 保留用于各種具體實現專屬的選項。 CPython 目前定義了下列可用的值:
-X faulthandler啟用faulthandler;-X showrefcount當程序結束或在交互解釋器中的每條語句之后輸出總引用計數和已使用內存塊計數。 此選項僅在調試版本中有效。-X tracemalloc使用tracemalloc模塊啟動對 Python 內存分配的跟蹤。 默認情況下,只有最近的幀會保存在跟蹤的回溯信息中。 使用-X tracemalloc=NFRAME以啟動限定回溯 NFRAME 幀的跟蹤。 請參閱tracemalloc.start()了解詳情。-X showalloccount當程序結束時輸出每種類型的已分配對象的總數。 此選項僅當 Python 在定義了COUNT_ALLOCS后構建時才會生效。-X importtime顯示每次導入耗費的時間。 它會顯示模塊名稱,累計時間(包括嵌套的導入)和自身時間(排除嵌套的導入)。 請注意它的輸出在多線程應用程序中可能會出錯。 典型用法如python3 -X importtime -c 'import asyncio'。 另請參閱PYTHONPROFILEIMPORTTIME。-X dev: 啟用 CPython 的“開發模式”,引入額外的運行時檢測,這些檢測因開銷過大而無法默認啟用。 如果代碼是正確的則它不會比默認輸出更詳細:新增警告只會在發現問題時才會發出。 開發模式的作用效果:添加
default警告過濾器,即-Wdefault。在內存分配器上安裝調試鉤子:參見
PyMem_SetupDebugHooks()C 函數。啟用
faulthandler模塊以在發生崩潰時轉儲 Python 回溯信息。啟用 asyncio 調試模式。
將
sys.flags的dev_mode屬性設為True。
-X utf8為操作系統接口啟用 UTF-8 模式,覆蓋默認的區域感知模式。-X utf8=0顯式地禁用 UTF-8 模式(即使在它應當被自動激活的時候)。 請參閱PYTHONUTF8了解詳情。
它還允許傳入任意值并通過
sys._xoptions字典來提取這些值。在 3.2 版更改: 增加了
-X選項。3.3 新版功能:
-X faulthandler選項。3.4 新版功能:
-X showrefcount與-X tracemalloc選項。3.6 新版功能:
-X showalloccount選項。3.7 新版功能:
-X importtime,-X dev與-X utf8選項。
1.2. 環境變量?
這些環境變量會影響 Python 的行為,它們是在命令行開關之前被處理的,但 -E 或 -I 除外。 根據約定,當存在沖突時命令行開關會覆蓋環境變量的設置。
-
PYTHONHOME? 更改標準 Python 庫的位置。 默認情況下庫是在
prefix/lib/pythonversion和exec_prefix/lib/pythonversion中搜索,其中prefix和exec_prefix是由安裝位置確定的目錄,默認都位于/usr/local。當
PYTHONHOME被設為單個目錄時,它的值會同時替代prefix和exec_prefix。 要為兩者指定不同的值,請將PYTHONHOME設為prefix:exec_prefix。
-
PYTHONPATH? 增加模塊文件默認搜索路徑。 所用格式與終端的
PATH相同:一個或多個由os.pathsep分隔的目錄路徑名稱(例如 Unix 上用冒號而在 Windows 上用分號)。 默認忽略不存在的目錄。除了普通目錄之外,單個
PYTHONPATH條目可以引用包含純Python模塊的zip文件(源代碼或編譯形式)。無法從zip文件導入擴展模塊。默認索引路徑依賴于安裝路徑,但通常都是以
prefix/lib/pythonversion開始 (參見上文中的PYTHONHOME)。 它 總是 會被添加到PYTHONPATH。有一個附加目錄將被插入到索引路徑的
PYTHONPATH之前,正如上文中 接口選項 所描述的。 搜索路徑可以在 Python 程序內作為變量sys.path來進行操作。
-
PYTHONSTARTUP? 這如果是一個可讀文件的名稱,該文件中的 Python 命令會在交互模式的首個提示符顯示之前被執行。 該文件會在與交互式命令執行所在的同一命名空間中被執行,因此其中所定義或導入的對象可以在交互式會話中無限制地使用。 你還可以在這個文件中修改提示符
sys.ps1和sys.ps2以及鉤子sys.__interactivehook__。
-
PYTHONBREAKPOINT? 此變量如果被設定,它會使用加點號的路徑標記一個可調用對象。 包含該可調用對象的模塊將被導入,隨后該可調用對象將由
sys.breakpointhook()的默認實現來運行,后者自身將由內置的breakpoint()來調用。 如果未設定,或設定為空字符串,則它相當于值 "pdb.set_trace"。 將此變量設為字符串 "0" 會導致sys.breakpointhook()的默認實現不做任何事而直接返回。3.7 新版功能.
-
PYTHONINSPECT? 此變量如果被設為一個非空字符串,它就相當于指定
-i選項。此變量也可由 Python 代碼使用
os.environ來修改以在程序終結時強制檢查模式。
-
PYTHONHASHSEED? 如果此變量未設置或設為
random,將使用一個隨機值作為 str, bytes 和 datetime 對象哈希運算的種子。如果
PYTHONHASHSEED被設為一個整數值,它將被作為固定的種子數用來生成哈希隨機化所涵蓋的類型的 hash() 結果。它的目的是允許可復現的哈希運算,例如用于解釋器本身的自我檢測,或允許一組 python 進程共享哈希值。
該整數必須為一個 [0,4294967295] 范圍內的十進制數。 指定數值 0 將禁用哈希隨機化。
3.2.3 新版功能.
-
PYTHONIOENCODING? 如果此變量在運行解釋器之前被設置,它會覆蓋通過
encodingname:errorhandler語法設置的 stdin/stdout/stderr 所用編碼。encodingname和:errorhandler部分都是可選項,與在str.encode()中的含義相同。對于 stderr,
:errorhandler部分會被忽略;處理程序將總是為'backslashreplace'。在 3.4 版更改: “encodingname” 部分現在是可選的。
在 3.6 版更改: 在 Windows 上,對于交互式控制臺緩沖區會忽略此變量所指定的編碼,除非還指定了
PYTHONLEGACYWINDOWSSTDIO。 通過標準流重定向的文件和管道則不受其影響。
-
PYTHONNOUSERSITE? 如果設置了此變量,Python 將不會把
用戶 site-packages 目錄添加到sys.path。參見
PEP 370 -- 分用戶的 site-packages 目錄
-
PYTHONUSERBASE? 定義
用戶基準目錄,它會在執行python setup.py install --user時被用來計算用戶 site-packages 目錄的路徑以及 Distutils 安裝路徑。參見
PEP 370 -- 分用戶的 site-packages 目錄
-
PYTHONEXECUTABLE? 如果設置了此環境變量,則
sys.argv[0]將被設為此變量的值而不是通過 C 運行時所獲得的值。 僅在 Mac OS X 上起作用。
-
PYTHONWARNINGS? 此變量等價于
-W選項。 如果被設為一個以逗號分隔的字符串,它就相當于多次指定-W,列表中后出現的過濾器優先級會高于列表中先出現的。最簡單的設置是將某個特定操作無條件地應用于進程所發出所有警告 (即使是在默認情況下會忽略的那些警告):
PYTHONWARNINGS=default # Warn once per call location PYTHONWARNINGS=error # Convert to exceptions PYTHONWARNINGS=always # Warn every time PYTHONWARNINGS=module # Warn once per calling module PYTHONWARNINGS=once # Warn once per Python process PYTHONWARNINGS=ignore # Never warn
-
PYTHONFAULTHANDLER? 如果此環境變量被設為一個非空字符串,
faulthandler.enable()會在啟動時被調用:為SIGSEGV,SIGFPE,SIGABRT,SIGBUS和SIGILL等信號安裝一個處理句柄以轉儲 Python 回溯信息。 此變量等價于-Xfaulthandler選項。3.3 新版功能.
-
PYTHONTRACEMALLOC? 如果此環境變量被設為一個非空字符串,則會使用
tracemalloc模塊啟動對 Python 內存分配的跟蹤。 該變量的值是保存于跟蹤的回溯信息中的最大幀數。 例如,PYTHONTRACEMALLOC=1只保存最近的幀。 請參閱tracemalloc.start()了解詳情。3.4 新版功能.
-
PYTHONPROFILEIMPORTTIME? 如果此變量被設為一個非空字符串,Python 將顯示每次導入花費了多長時間。 此變量完全等價于在命令行為設置
-X importtime。3.7 新版功能.
-
PYTHONMALLOC? 設置 Python 內存分配器和/或安裝調試鉤子。
設置 Python 所使用的內存分配器族群:
default: 使用 默認內存分配器。malloc: 對所有域 (PYMEM_DOMAIN_RAW,PYMEM_DOMAIN_MEM,PYMEM_DOMAIN_OBJ) 使用 C 庫的malloc()函數。pymalloc: 對PYMEM_DOMAIN_MEM和PYMEM_DOMAIN_OBJ域使用 pymalloc 分配器 而對PYMEM_DOMAIN_RAW域使用malloc()函數。
安裝調試鉤子:
debug: 在 默認內存分配器 之上安裝調試鉤子。malloc_debug: 與malloc相同但還會安裝調試鉤子。pymalloc_debug: 與pymalloc相同但還會安裝調試鉤子。
請參閱 默認內存分配器 以及
PyMem_SetupDebugHooks()函數(在 Python 內存分配器之上安裝調試鉤子)。在 3.7 版更改: 增加了
"default"分配器。3.6 新版功能.
-
PYTHONMALLOCSTATS? 如果設為一個非空字符串,Python 將在每次創建新的 pymalloc 對象區域以及在關閉時打印 pymalloc 內存分配器 的統計信息。
如果
PYTHONMALLOC環境變量被用來強制開啟 C 庫的malloc()分配器,或者如果 Python 的配置不支持pymalloc,則此變量將被忽略。在 3.6 版更改: 此變量現在也可以被用于在發布模式下編譯的 Python。 如果它被設置為一個空字符串則將沒有任何效果。
-
PYTHONLEGACYWINDOWSFSENCODING? 如果設為一個非空字符串,則默認的文件系統編碼和錯誤模式將分別恢復為它們在 3.6 版之前的值 'mbcs' 和 'replace'。 否則會使用新的默認值 'utf-8' 和 'surrogatepass'。
這也可以在運行時通過
sys._enablelegacywindowsfsencoding()來啟用。可用性: Windows。
3.6 新版功能: 有關更多詳細信息,請參閱 PEP 529。
-
PYTHONLEGACYWINDOWSSTDIO? 如果設為一個非空字符串,則不使用新的控制臺讀取器和寫入器。 這意味著 Unicode 字符將根據活動控制臺的代碼頁進行編碼,而不是使用 utf-8。
如果標準流被重定向(到文件或管道)而不是指向控制臺緩沖區則該變量會被忽略。
可用性: Windows。
3.6 新版功能.
-
PYTHONCOERCECLOCALE? 如果值設為
0,將導致主 Python 命令行應用跳過將傳統的基于 ASCII 的 C 與 POSIX 區域設置強制轉換為更強大的基于 UTF-8 的替代方案。如果此變量 未被 設置(或被設為
0以外的值),則覆蓋環境變量的LC_ALL區域選項也不會被設置,并且報告給LC_CTYPE類別的當前區域選項或者為默認的C區域,或者為顯式指明的基于 ASCII 的POSIX區域,然后 Python CLI 將在加載解釋器運行時之前嘗試為LC_CTYPE類別按指定的順序配置下列區域選項:C.UTF-8C.utf8UTF-8
如果成功設置了以上區域類別中的一個,則初始化 Python 運行時之前也將在當前進程環境中相應地設置
LC_CTYPE環境變量。 這會確保除了解釋器本身和運行于同一進程中的其他可感知區域選項的組件 (例如 GNUreadline庫) 之外,還能在子進程 (無論這些進程是否在運行 Python 解釋器) 以及在查詢環境而非當前 C 區域的操作 (例如 Python 自己的locale.getdefaultlocale()) 中看到更新的設置。(顯式地或通過上述的隱式區域強制轉換) 配置其中一個區域選項將自動為
sys.stdin和sys.stdout啟用surrogateescape錯誤處理句柄 (sys.stderr會繼續使用backslashreplace如同在任何其他區域選項中一樣)。 這種流處理行為可以按通常方式使用PYTHONIOENCODING來覆蓋。出于調試目的,如果激活了區域強制轉換,或者如果當 Python 運行時被初始化時某個 應該 觸發強制轉換的區域選項仍處于激活狀態則設置
PYTHONCOERCECLOCALE=warn將導致 Python 在stderr上發出警告消息。還要注意,即使在區域轉換轉換被禁用,或者在其無法找到合適的目標區域時,默認
PYTHONUTF8仍將在傳統的基于 ASCII 的區域中被激活。 必須同時禁用這兩項特性以強制解釋器使用ASCII而不是UTF-8作為系統接口。可用性: *nix。
3.7 新版功能: 請參閱 PEP 538 了解詳情。
-
PYTHONUTF8? 如果設為
1,則會啟用解釋器的 UTF-8 模式,將UTF-8用作系統接口的文本編碼,無論當前區域選項如何設置。這意味著:
sys.getfilesystemencoding()將返回'UTF-8'(本地編碼會被忽略)。locale.getpreferredencoding()將返回'UTF-8'(本地編碼會被忽略,并且該函數的do_setlocale參數不起作用)。sys.stdin,sys.stdout和sys.stderr都將 UTF-8 用作它們的文本編碼,并且為sys.stdin和sys.stdout啟用surrogateescape錯誤處理句柄 (sys.stderr會繼續使用backslashreplace如同在默認的局部感知模式下一樣)
作為低層級 API 發生改變的結果,其他高層級 API 也會表現出不同的默認行為:
命令行參數,環境變量和文件名會使用 UTF-8 編碼來解碼為文本。
os.fsdecode()和os.fsencode()會使用 UTF-8 編碼。open(),io.open()和codecs.open()默認會使用 UTF-8 編碼。 但是,它們默認仍將使用嚴格錯誤處理句柄,因此試圖在文本模式下打開二進制文件將可能引發異常,而不是生成無意義的數據。
請注意 UTF-8 模式下的標準流設置可以被
PYTHONIOENCODING所覆蓋(在默認的區域感知模式下也同樣如此)。如果設置為“0”,則解釋器以其默認的區域識別模式運行。
設置任何其他非空字符串會在解釋器初始化期間導致錯誤。
如果根本未設置此環境變量,則解釋器默認使用當前區域設置,除非 當前區域被標識為基于 ASCII 的舊式區域設置(如
PYTHONCOERCECLOCALE所述),并且區域強制轉換被禁用或失敗。 在此類舊式區域設置中,解釋器將默認啟用 UTF-8 模式,除非顯式地指定不這樣做。也可以使用
-Xutf8選項。3.7 新版功能: 有關更多詳細信息,請參閱 PEP 540 。
