python / 3.7.2rc1 / all / using-cmdline.html

1. 命令行和环境

CPython 解释器会在命令行和环境中扫描各种设置。

CPython 实现细节: 其他实现的命令行方案可能有所不同。有关更多资源,请参见Alternate Implementations

1.1. 命令行

调用 Python 时,您可以指定以下任何选项:

python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]

当然,最常见的用例是对脚本的简单调用:

python myscript.py

1.1.1. 界面选项

解释器接口类似于 UNIX shell 的接口,但是提供了一些其他的调用方法:

  • 在将标准 Importing 连接到 tty 设备的情况下调用时,它会提示 Importing 命令并执行命令,直到 EOF(文件结束符,您可以在 UNIX 上使用 Ctrl-D 或在 Windows 上使用 Ctrl-Z 生成,然后再 Importing)读。

  • 当使用文件名参数或以文件作为标准 Importing 调用时,它将读取并执行该文件中的脚本。

  • 当使用目录名称参数调用时,它将从该目录读取并执行一个适当命名的脚本。

  • 当用-c command调用时,它将执行以* command *形式给出的 Python 语句。 * command *可能包含多个用换行符分隔的语句。领先的空格在 Python 语句中非常重要!

  • -m module-name调用时,给定的模块位于 Python 模块路径上并作为脚本执行。

在非交互模式下,将在执行整个 Importing 之前对其进行解析。

接口选项终止解释器使用的选项列表,所有连续参数都以sys.argv结尾–请注意,第一个元素下标零(sys.argv[0])是反映程序源的字符串。

  • -c <command>
    • 在* command *中执行 Python 代码。 * command *可以是一个或多个用换行符分隔的语句,与常规模块代码一样,前导空格很大。

如果指定了此选项,则sys.argv的第一个元素将是"-c",并且当前目录将被添加到sys.path的开头(允许将该目录中的模块作为顶级模块导入)。

用参数command引发auditing event cpython.run_command

  • -m <module-name>
    • sys.path中搜索命名的模块,并以main模块的身份执行其内容。

由于参数是* module *名称,因此您不能给文件 extensions(.py)。模块名称应为有效的绝对 Python 模块名称,但是实现可能并不总是强制执行此操作(例如,它可能允许您使用包含连字符的名称)。

包名称(包括名称空间包)也是允许的。当提供软件包名称而不是常规模块时,解释器将执行<pkg>.__main__作为主模块。这种行为故意类似于处理作为脚本参数传递给解释器的目录和 zipfile。

Note

该选项不能与用 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

用参数module-name引发auditing event cpython.run_module

See also

PEP 338 –将模块作为脚本执行

在版本 3.1 中更改:提供程序包名称以运行__main__子模块。

在版本 3.4 中更改:还支持名称空间包

  • -

    • 从标准 Importing(sys.stdin)读取命令。如果标准 Importing 为端子,则表示-i

如果指定了此选项,则sys.argv的第一个元素将是"-",并且当前目录将被添加到sys.path的开头。

引发不带参数的auditing event cpython.run_stdin

  • <script>

    • 执行* script *中包含的 Python 代码,该代码必须是指向 Python 文件,包含__main__.py文件的目录或包含__main__.py文件的 zip 文件的文件系统路径(绝对或相对)。

如果指定了此选项,则sys.argv的第一个元素将是在命令行中指定的脚本名称。

如果脚本名称直接指向 Python 文件,则包含该文件的目录将添加到sys.path的开头,并且该文件将作为main模块执行。

如果脚本名称引用目录或 zipfile,则将脚本名称添加到sys.path的开头,并将该位置的__main__.py文件作为main模块执行。

-I选项可用于在隔离模式下运行脚本,其中sys.path既不包含脚本的目录也不包含用户的 site-packages 目录。所有 PYTHON*环境变量也将被忽略。

用参数filename引发auditing event cpython.run_file

See also

如果未提供接口选项,则表示-isys.argv[0]是空字符串(""),并且当前目录将添加到sys.path的开头。另外,如果平台上可用,则将自动启用制表符完成和历史记录编辑(请参见Readline configuration)。

在版本 3.4 中更改:自动启用制表符完成和历史记录编辑。

1.1.2. 通用选项

  • -? ``

  • -h ``

  • --help ``

    • 打印所有命令行选项的简短描述。
  • -V ``

  • --version ``

    • 打印 Python 版本号并退出。示例输出可能是:
Python 3.8.0b2+

当给出两次时,打印有关构建的更多信息,例如:

Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00)
[GCC 6.2.0 20161005]

3.6 版的新Function:-VV选项。

1.1.3. 杂项选项

在版本 3.5 中进行了更改:影响bytesint的比较。

  • -B ``

    • 如果给出,Python 将不会try在导入源模块时写入.pyc文件。另请参见 PYTHONDONTWRITEBYTECODE
  • --check-hash-based-pycs default|always|never

    • 控制基于散列的.pyc文件的验证行为。参见缓存的字节码无效。当设置为default时,将根据其默认语义来验证已选中和未选中的基于哈希的字节码缓存文件。当设置为always时,所有基于散列的.pyc文件(无论已选中还是未选中)都将根据其相应的源文件进行验证。设置为never时,不会针对基于散列的.pyc文件对其相应的源文件进行验证。

基于时间戳的.pyc文件的语义不受此选项的影响。

  • -d ``

    • 打开解析器调试输出(仅针对 maven,取决于编译选项)。另请参见 PYTHONDEBUG
  • -E ``

  • -i ``

    • 当将脚本作为第一个参数传递或使用-c选项时,即使sys.stdin似乎不是终端,执行脚本或命令后也要进入交互模式。无法读取 PYTHONSTARTUP文件。

当脚本引发异常时,这对于检查全局变量或堆栈跟踪很有用。另请参见 PYTHONINSPECT

  • -I ``
    • 在隔离模式下运行 Python。这也意味着-E 和-s。在隔离模式下,sys.path既不包含脚本的目录也不包含用户的 site-packages 目录。所有 PYTHON*环境变量也将被忽略。可以施加进一步的限制以防止用户注入恶意代码。

3.4 版的新Function。

  • -O ``
    • 删除 assert 语句和所有以debug为条件的代码。pass在.pycextensions 之前添加.opt-1来扩展已编译(bytecode)文件的文件名(请参见 PEP 488)。另请参见 PYTHONOPTIMIZE

在版本 3.5 中进行了更改:根据 PEP 488修改.pyc文件名。

  • -OO ``
    • 执行-O并丢弃文档字符串。pass在.pycextensions 之前添加.opt-2来扩展已编译(bytecode)文件的文件名(请参见 PEP 488)。

在版本 3.5 中进行了更改:根据 PEP 488修改.pyc文件名。

  • -q ``
    • 即使在交互模式下也不显示版权和版本消息。

3.2 版中的新Function。

  • -R ``
    • 打开哈希随机化。仅当 PYTHONHASHSEED环境变量设置为0时,此选项才有效,因为默认情况下启用了哈希随机化。

在 Python 的早期版本中,此选项启用哈希随机化,以便 str 和 bytes 对象的hash()值被“盐化”,具有不可预测的随机值。尽管它们在单个 Python 进程中保持不变,但在重复调用 Python 之间是不可预测的。

哈希随机化旨在提供保护,防止由于精心选择的 Importing 而导致的拒绝服务,这些 Importing 利用了 dict 结构的最坏情况的性能,即 O(n ^ 2)复杂度。有关详情,请参见http://www.ocert.org/advisories/ocert-2011-003.html

PYTHONHASHSEED允许您为哈希种子机密设置固定值。

在版本 3.7 中更改:该选项不再被忽略。

版本 3.2.3 中的新Function。

See also

PEP 370 –每个用户的站点软件包目录

  • -S ``

    • 禁止导入模块site及其需要的与站点相关的sys.path操作。如果稍后显式导入site,也请禁用这些操作(如果希望触发它们,请调用site.main())。
  • -u ``

    • 强制取消对 stdout 和 stderr 流的缓冲。此选项对 stdin 流无效。

另请参见 PYTHONUNBUFFERED

在版本 3.7 中进行了更改:现在,stdout 和 stderr 流的文本层已取消缓冲。

  • -v ``
    • 每次模块初始化时打印一条消息,显示加载该模块的位置(文件名或内置模块)。当给出两次(-vv)时,为搜索模块时检查的每个文件打印一条消息。还提供有关退出时模块清理的信息。另请参见 PYTHONVERBOSE
  • -W arg
    • 警告控制。默认情况下,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 特定的 hack。
  • -X ``

    • 保留用于各种特定于实现的选项。 CPython 当前定义了以下可能的值:
  • -X faulthandler启用faulthandler;

  • -X showrefcount用于在程序完成时或在交互式解释器中的每个语句之后输出总引用计数和已用存储块的数量。这仅适用于调试版本。

  • -X tracemalloc开始使用tracemalloc模块跟踪 Python 内存分配。默认情况下,仅最新帧存储在跟踪的回溯中。使用-X tracemalloc=NFRAME以* NFRAME *帧的 traceback 限制开始跟踪。有关更多信息,请参见tracemalloc.start()

  • -X showalloccount在程序结束时输出每种类型分配的对象总数。这仅在使用COUNT_ALLOCS定义的 Python 构建时有效。

  • -X importtime以显示每次导入需要多长时间。它显示模块名称,累积时间(包括嵌套的导入)和自身时间(不包括嵌套的导入)。请注意,其输出在多线程应用程序中可能会损坏。典型用法是python3 -X importtime -c 'import asyncio'。另请参见 PYTHONPROFILEIMPORTTIME

  • -X dev:启用 CPython 的“开发模式”,引入了其他运行时检查,这些检查过于昂贵,因此默认情况下无法启用。如果代码正确,则它的详细程度不应超过默认值:仅在检测到问题时才发出新警告。开发人员模式的效果:

  • 添加default警告过滤器,作为-W default

  • -X utf8为 os 接口启用 UTF-8 模式,从而覆盖默认的区域设置感知模式。 -X utf8=0明确禁用 UTF-8 模式(即使它原本会自动激活)。有关更多详细信息,请参见 PYTHONUTF8

  • -X pycache_prefix=PATH允许将.pyc文件写入到以给定目录为根的并行树中,而不是代码树中。另请参见 PYTHONPYCACHEPREFIX

它还允许传递任意值,并passsys._xoptions字典检索它们。

在版本 3.2 中更改:添加了-X选项。

版本 3.3 中的新Function:-X faulthandler选项。

3.4 版的新Function:-X showrefcount-X tracemalloc选项。

3.6 版的新Function:-X showalloccount选项。

3.7 版的新Function:-X importtime-X dev-X utf8选项。

3.8 版的新Function:-X pycache_prefix选项。 -X dev选项现在将close()异常记录在io.IOBase析构函数中。

1.1.4. 您不应该使用的选项

  • -J ``

1.2. 环境变量

这些环境变量会影响 Python 的行为,它们会在-E 或-I 以外的命令行开关之前进行处理。通常,命令行开关会在存在冲突的情况下覆盖环境变量。

  • PYTHONHOME
    • 更改标准 Python 库的位置。默认情况下,将在prefix/lib/pythonversionexec_prefix/lib/pythonversion中搜索库,其中prefixexec_prefix是与安装有关的目录,都默认为/usr/local

PYTHONHOME设置为单个目录时,其值将替换prefixexec_prefix。要为此指定不同的值,请将 PYTHONHOME设置为prefix:exec_prefix

  • PYTHONPATH
    • 扩展模块文件的默认搜索路径。格式与 Shell 的 PATH相同:一个或多个用os.pathsep分隔的目录路径名(例如 Unix 上的冒号或 Windows 上的分号)。不存在的目录将被静默忽略。

除普通目录外,单独的 PYTHONPATH条目可能引用包含纯 Python 模块(源或编译形式)的 zipfile。无法从 zip 文件导入扩展模块。

默认搜索路径取决于安装,但通常以prefix/lib/pythonversion开头(请参见上面的 PYTHONHOME)。总是将它附加到 PYTHONPATH

如上面Interface options所述,将在 PYTHONPATH前面的搜索路径中插入一个附加目录。搜索路径可以在 Python 程序中作为变量sys.path进行操作。

  • PYTHONSTARTUP
    • 如果这是可读文件的名称,则在以交互方式显示第一个提示之前,将执行该文件中的 Python 命令。在与执行交互命令相同的名称空间中执行文件,以便在其中定义或导入的对象可以在交互会话中使用而无需限定。您还可以在此文件中更改提示sys.ps1sys.ps2以及钩子sys.interactivehook

在启动时调用,以文件名作为参数引发auditing event cpython.run_startup

  • PYTHONOPTIMIZE

    • 如果将其设置为非空字符串,则等效于指定-O选项。如果设置为整数,则等效于多次指定-O
  • PYTHONBREAKPOINT

    • 如果设置了此选项,它将使用点路径符号命名可调用对象。包含可调用对象的模块将被导入,然后可调用对象将由默认实现sys.breakpointhook()运行,该默认实现本身由内置breakpoint()调用。如果未设置或设置为空字符串,则等效于值“ pdb.set_trace”。将其设置为字符串“ 0”将导致sys.breakpointhook()的默认实现不执行任何操作,而是立即返回。

3.7 版中的新Function。

  • PYTHONDEBUG

    • 如果将其设置为非空字符串,则等效于指定-d选项。如果设置为整数,则等效于多次指定-d
  • PYTHONINSPECT

    • 如果将其设置为非空字符串,则等效于指定-i选项。

也可以使用os.environpass Python 代码修改此变量,以在程序终止时强制检查模式。

  • PYTHONUNBUFFERED

    • 如果将其设置为非空字符串,则等效于指定-u选项。
  • PYTHONVERBOSE

    • 如果将其设置为非空字符串,则等效于指定-v选项。如果设置为整数,则等效于多次指定-v
  • PYTHONCASEOK

    • 如果设置了该值,Python 将忽略import语句中的大小写。这仅适用于 Windows 和 OSX。
  • PYTHONDONTWRITEBYTECODE

    • 如果将其设置为非空字符串,Python 将不会try在导入源模块时写入.pyc文件。这等效于指定-B选项。
  • PYTHONPYCACHEPREFIX

    • 如果设置了该选项,Python 将在此路径的镜像目录树中而不是在源树的__pycache__目录中写入.pyc个文件。这等效于指定-X pycache_prefix=PATH选项。

3.8 版的新Function。

  • PYTHONHASHSEED
    • 如果未设置此变量或未将其设置为random,则将使用随机值来播种 str 和 bytes 对象的哈希值。

如果 PYTHONHASHSEED设置为整数值,则将其用作固定种子来生成哈希随机化所覆盖类型的 hash()。

其目的是允许可重复的哈希,例如用于解释程序本身的自测,或允许一组 python 进程共享哈希值。

整数必须是[0,4294967295]范围内的十进制数。指定值 0 将禁用哈希随机化。

版本 3.2.3 中的新Function。

  • PYTHONIOENCODING
    • 如果在运行解释器之前设置了此设置,它将覆盖语法encodingname:errorhandler中用于 stdin/stdout/stderr 的编码。 encodingname:errorhandler部分都是可选的,并且与str.encode()中的含义相同。

对于 stderr,将忽略:errorhandler部分;处理程序将始终为'backslashreplace'

在版本 3.4 中进行了更改:encodingname部分现在是可选的。

在版本 3.6 中进行了更改:在 Windows 上,除非也指定了 PYTHONLEGACYWINDOWSSTDIO,否则交互式控制台缓冲区将忽略此变量指定的编码。pass标准流重定向的文件和管道不受影响。

See also

PEP 370 –每个用户的站点软件包目录

See also

PEP 370 –每个用户的站点软件包目录

  • PYTHONEXECUTABLE

    • 如果设置了此环境变量,则将sys.argv[0]设置为其值,而不是pass C 运行时获取的值。仅适用于 Mac OSX。
  • 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():为SIGSEGVSIGFPESIGABRTSIGBUSSIGILLsignal 安装处理程序以转储 Python 回溯。这等效于-X faulthandler选项。

版本 3.3 中的新Function。

  • PYTHONTRACEMALLOC
    • 如果此环境变量设置为非空字符串,请开始使用tracemalloc模块跟踪 Python 内存分配。变量的值是在跟踪的回溯中存储的最大帧数。例如,PYTHONTRACEMALLOC=1仅存储最新的帧。有关更多信息,请参见tracemalloc.start()

3.4 版的新Function。

  • PYTHONPROFILEIMPORTTIME
    • 如果此环境变量设置为非空字符串,Python 将显示每次导入需要多长时间。这完全等同于在命令行上设置-X importtime

3.7 版中的新Function。

  • PYTHONASYNCIODEBUG
    • 如果此环境变量设置为非空字符串,请启用asyncio模块的debug mode

3.4 版的新Function。

  • PYTHONMALLOC
    • 设置 Python 内存分配器和/或安装调试钩子。

设置 Python 使用的内存分配器系列:

安装调试钩子:

  • debug:在默认内存分配器顶部安装调试钩子。

  • malloc_debug:与malloc相同,但也安装调试钩子。

  • pymalloc_debug:与pymalloc相同,但也安装调试钩子。

请参见默认内存分配器PyMem_SetupDebugHooks()函数(在 Python 内存分配器上安装调试钩子)。

在 3.7 版中进行了更改:添加了"default"分配器。

3.6 版的新Function。

  • PYTHONMALLOCSTATS
    • 如果设置为非空字符串,则每次创建新的 pymalloc 对象舞台时以及关闭时,Python 都会打印pymalloc 内存分配器的统计信息。

如果使用 PYTHONMALLOC环境变量来强制 C 库的malloc()分配器,或者如果 Python 配置为不支持pymalloc,则忽略此变量。

在版本 3.6 中更改:此变量现在也可以在以发布模式编译的 Python 上使用。如果设置为空字符串,则现在无效。

  • PYTHONLEGACYWINDOWSFSENCODING
    • 如果设置为非空字符串,则默认文件系统编码和错误模式将分别恢复为其 3.6 之前的值“ mbcs”和“ replace”。否则,将使用新的默认值'utf-8'和'surrogatepass'。

也可以在运行时使用sys._enablelegacywindowsfsencoding()启用它。

Availability: Windows.

3.6 版的新Function:有关更多详细信息,请参见 PEP 529

  • PYTHONLEGACYWINDOWSSTDIO
    • 如果设置为非空字符串,则不使用新的控制台读取器和写入器。这意味着 Unicode 字符将根据活动的控制台代码页进行编码,而不是使用 utf-8.

如果将标准流重定向(到文件或管道)而不是引用控制台缓冲区,则忽略此变量。

Availability: Windows.

3.6 版的新Function。

  • PYTHONCOERCECLOCALE
    • 如果设置为值0,将导致主 Python 命令行应用程序跳过将基于 ASCII 的旧 C 和 POSIX 语言环境强制转换为Function更强大的基于 UTF-8 的替代方法。

如果未设置此变量(或设置为0以外的值),则也不会设置LC_ALL语言环境覆盖环境变量,并且为LC_CTYPE类别报告的当前语言环境是默认的C语言环境,否则明确基于 ASCII 的POSIX语言环境,然后 Python CLI 将try在加载解释器运行时之前按列出的 Sequences 为LC_CTYPE类别配置以下语言环境:

  • C.UTF-8

  • C.utf8

  • UTF-8

如果成功设置了这些语言环境类别之一,那么在初始化 Python 运行时之前,还将在当前进程环境中相应地设置LC_CTYPE环境变量。这样可以确保除了解释器本身和运行在同一进程(例如 GNU readline库)中的其他可识别语言环境的组件都可以看到之外,还可以在子进程中看到更新的设置(无论这些进程是否运行 Python 解释器),以及查询环境而不是查询当前 C 语言环境的操作(例如 Python 自己的locale.getdefaultlocale())。

配置这些语言环境之一(显式或pass上述隐式语言环境强制)自动为和sys.stdout启用surrogateescape error handler(sys.stderr像在其他任何语言环境中一样 continue 使用backslashreplace)。可以照常使用 PYTHONIOENCODING覆盖此流处理行为。

出于调试目的,如果激活了语言环境强制,或者在初始化 Python 运行时时仍会激活的语言环境,设置PYTHONCOERCECLOCALE=warn将导致 Python 在stderr上发出警告消息。

还要注意,即使禁用了区域设置强制,或者找不到合适的目标区域设置, PYTHONUTF8仍将默认在基于 ASCII 的传统区域设置中激活。必须禁用这两个Function,才能强制解释器将ASCII而不是UTF-8用于系统接口。

Availability: *nix.

3.7 版的新Function:有关更多详细信息,请参见 PEP 538

  • PYTHONDEVMODE
    • 如果此环境变量设置为非空字符串,请启用 CPython“开发模式”。请参阅-X dev选项。

3.7 版中的新Function。

  • PYTHONUTF8
    • 如果设置为1,则启用解释器的 UTF-8 模式,其中UTF-8用作系统接口的文本编码,而不管当前的区域设置如何。

这意味着:

Note

由于这些较低级别的 API 的更改,其他较高级别的 API 也表现出不同的默认行为:

Note

  • 命令行参数,环境变量和文件名使用 UTF-8 编码解码为文本。

  • os.fsdecode()os.fsencode()使用 UTF-8 编码。

  • open()io.open()codecs.open()默认使用 UTF-8 编码。但是,它们仍然默认使用严格的错误处理程序,因此try以文本模式打开二进制文件很可能引发异常,而不是产生无意义的数据。

请注意,UTF-8 模式下的标准流设置可以被 PYTHONIOENCODING覆盖(就像它们可以在默认的区域设置感知模式下一样)。

如果设置为0,则解释器以其默认的区域设置感知模式运行。

设置任何其他非空字符串会在解释器初始化期间导致错误。

如果根本没有设置此环境变量,那么解释器默认使用当前的语言环境设置,除非当前语言环境被标识为基于 ASCII 的传统语言环境(如 PYTHONCOERCECLOCALE所述),并且禁用了语言环境强制性或失败。在此类传统语言环境中,除非明确指示不启用,否则解释器将默认启用 UTF-8 模式。

也可以作为-X utf8选项使用。

3.7 版的新Function:有关更多详细信息,请参见 PEP 540

1.2.1. 调试模式变量

设置这些变量仅在 Python 的调试版本中有效。

  • PYTHONTHREADDEBUG
    • 如果设置,Python 将打印线程调试信息。

需要使用--with-pydebug build 选项配置 Python。

  • PYTHONDUMPREFS
    • 如果设置了该选项,Python 将在关闭解释器后转储对象并且引用计数仍然有效。

需要使用--with-trace-refs build 选项配置 Python。