Python解释器本身支持的命令行参数
python --help用于查看Python解释器本身支持的命令行参数。注意,它与python main.py --help不同:前者查看Python运行环境的参数,后者通常查看脚本通过argparse定义的参数。
1. 查看帮助信息
python --help
常见输出如下(不同Python版本可能略有差异):
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments:
-b : issue warnings about str(bytes_instance)
-B : don't write .pyc files on import
-c cmd : program passed in as string
-d : debug output from parser
-E : ignore environment variables
-h : print this help message and exit
-i : inspect interactively after running script
-I : isolated mode
-m mod : run library module as a script
-O : remove assert and __debug__-dependent statements
-OO : discard docstrings in addition to -O
-q : don't print version and copyright messages
-s : don't add user site directory to sys.path
-S : don't imply 'import site' on initialization
-u : unbuffered binary stdout and stderr
-v : verbose (trace import statements)
-V : print Python version number and exit
-W arg : warning control
-X opt : set implementation-specific option
--help : print this help message and exit
--version : print Python version number and exit
2. 常用参数详解
运行Python代码
| 参数 | 作用 | 示例 |
|---|---|---|
-c |
直接执行字符串形式的Python代码 | python -c "print(1+2)" |
-m |
将模块作为脚本运行 | python -m http.server 8000 |
- |
从标准输入读取Python代码 | python - |
-i |
脚本运行结束后进入交互式解释器 | python -i main.py |
-c和-m的区别:
# 直接执行一段代码
python -c "import sys; print(sys.version)"
# 运行标准库模块
python -m http.server 8000
# 运行指定文件
python main.py
调试与开发
| 参数 | 作用 | 示例 |
|---|---|---|
-v |
显示模块导入的详细信息 | python -v main.py |
-O |
启用优化模式,移除assert语句 |
python -O main.py |
-OO |
在-O基础上移除文档字符串 |
python -OO main.py |
-X dev |
启用开发模式,提供额外的运行时检查和警告 | python -X dev main.py |
-X tracemalloc |
跟踪Python内存分配 | python -X tracemalloc main.py |
注意:-O会影响assert的执行,因此不应将assert用作必须始终执行的业务校验。
环境与输出控制
| 参数 | 作用 | 示例 |
|---|---|---|
-E |
忽略PYTHON*环境变量 |
python -E main.py |
-I |
启用隔离模式,减少环境变量和用户配置对运行的影响 | python -I main.py |
-s |
不将用户级site-packages目录加入模块搜索路径 |
python -s main.py |
-S |
不自动导入site模块 |
python -S main.py |
-B |
不写入.pyc字节码缓存文件 |
python -B main.py |
-u |
让标准输出和标准错误流不进行缓冲 | python -u main.py |
-q |
启动交互式解释器时不显示版本和版权提示 | python -q |
例如,在Docker容器或日志实时输出场景中,经常使用:
python -u main.py
这样print()等标准输出内容通常能更及时地被日志系统读取。
版本与警告
| 参数 | 作用 | 示例 |
|---|---|---|
-V或--version |
查看Python版本 | python --version |
-W |
配置警告过滤规则 | python -W ignore main.py |
-b |
对部分bytes与字符串之间的可疑比较或操作发出警告 |
python -b main.py |
3. 最重要的命令结构
python [解释器参数] 脚本文件 [脚本参数]
例如:
python -u -O train.py --lr 0.001 --epochs 20
这里包含两类参数:
- 解释器参数:
-u、-O,由Python解释器处理。 - 脚本参数:
--lr 0.001、--epochs 20,由train.py中的参数解析逻辑处理。
python -u main.py --name Alice
其中-u控制解释器的输出缓冲行为,而--name Alice由argparse解析。