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 代码,如
image

执行该选项时,会把执行python命名时所处的目录加到sys.path的开头,上面的话就是路径D:
sys.argv 的首个元素为 "-c"

-m

-m 后面可以跟模块名也可以跟包名,该选项会把执行python命名时所处的目录加到sys.path的开头
sys.argv 的首个元素将为模块文件的完整路径

image

image

参数是模块名时,模块名不要包含文件后缀.py,python在 sys.path 中搜索指定模块,并作为__main__模块来执行其中的内容,如下
image
执行
image

如上,后面是模块名时,和不用-m加上后缀的效果是一样的,用 -m加上后缀虽然也能执行但是给出了警告
logger默认会在日志级别后输出模块名,通过输出可以看到,虽然我们有自己的模块名,但python把我们的模块作为__main__模块执行,所以我们经常会看见 if name == "main"的形式

参数是包名时,python会把包里面的__main__模块 作为主模块执行,如下
MyPkg包里面有3个模块
image

image

image

image

执行
image
如上,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,所以要不他们区分开来,如下
image
现在我可以用python3.8版本来执行python
image

这里我的3.8版本没有安装代码里面需要的日志库loguru

在3.8版本安装一下后再执行
image

如果我这里用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命令后的所指的的路径
image

执行
image

args

args就是我们放在命令后面的向代码文件输入的自定义参数,如
image
执行
image

posted @   工作手记  阅读(295)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示