python基础:python命令行选项
一 前言
安装完python后,通过python关键字我们就可以执行python文件
如下
python xxx.py
上面是很常见的在命令行执行py的方式,但其实python关键字后面还可以加上许多可选选项如
python -c xxxxx
python -m xxxxx
二 python关键字后的可选选项
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
-c
执行 -c后面 command 中的 Python 代码,如
执行该选项时,会把执行python命名时所处的目录加到sys.path的开头,上面的话就是路径D:
sys.argv 的首个元素为 "-c"
-m
-m 后面可以跟模块名也可以跟包名,该选项会把执行python命名时所处的目录加到sys.path的开头
sys.argv 的首个元素将为模块文件的完整路径
如
参数是模块名时,模块名不要包含文件后缀.py,python在 sys.path 中搜索指定模块,并作为__main__模块来执行其中的内容,如下
执行
如上,后面是模块名时,和不用-m加上后缀的效果是一样的,用 -m加上后缀虽然也能执行但是给出了警告
logger默认会在日志级别后输出模块名,通过输出可以看到,虽然我们有自己的模块名,但python把我们的模块作为__main__模块执行,所以我们经常会看见 if name == "main"的形式
参数是包名时,python会把包里面的__main__模块 作为主模块执行,如下
MyPkg包里面有3个模块
执行
如上,init.py和__main__.py都被执行了
一些标准模块或者第三方模块也支持用-m选项来执行如
python -m pip install xxxx
python -m pytest -s -v test_xx.py
其实上面不用前面的python -m 也是可以的如
pip install xxxx
pytest -s -v test_xx.py
不同的是,加上python -m后会,python会把执行命令时所处的目录加入到sys.path中
另外,像鄙人的电脑安装了多个版本的python而没有使用相关的多版本管理工具时 使用python -m 可以执行用哪一个python版本来运行命令
如,电脑上还安装了一个python3.8的版本,设置环境变量后,我把python.exe的的名字作了更改,因为执行python xxx时,这里python其实对应的就是python.exe,有多个版本的python时,就会有多个python.exe,所以要不他们区分开来,如下
现在我可以用python3.8版本来执行python
这里我的3.8版本没有安装代码里面需要的日志库loguru
在3.8版本安装一下后再执行
如果我这里用python -m xxxxx,我这里指的就是用另一个版本的python来执行了
script
script可以是py文件、包含 main.py 文件的目录、包含 main.py 文件的 zip 文件,他们应该是绝对的或相对的文件路径
如常见的 python xxx.py python xxx/xxx/xxxx.py
如果是Python 文件,则把该文件所在目录加入 sys.path 的开头,并且把该文件当作 main 模块来执行。
如果是向目录或 zip 文件,则把脚本名加入 sys.path 的开头,并把该位置中的 main.py 文件当作 main 模块来执行
此选项,sys.argv 的第一个元素就是命令行中python命令后的所指的的路径
执行
args
args就是我们放在命令后面的向代码文件输入的自定义参数,如
执行
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南