“python -m 模块名“的理解

引言:

# 脚本方式执行
python run.py

# 模块方式执行
python -m run

个人使用总结:

借助“python -m 模块名”的执行方式,可以简化import导入其他package中文件的步骤:在import导入其他package中文件时,只需要所需要文件的相对路径。

 

(1)"python --help"中的定义
-m mod : run library module as a script (terminates option list)
以脚本方式运行Python模块(把python模块当做script方式执行,python文件=python模块名+".py")

python官网中的示例:

python -m http.server 8000
python -m pydoc -p xxx
python -m pdb xxx.py
python -m timeit "'$'.join(str(n) for n in range(10))"
python -m pip install xxx

(2)作用
把“当前完整模块的所在路径”添加到sys.path,在后续执行命令时,python解析器会自动“所有模块命名空间”中查找所需要的全部模块。
省去查找模块时间和反复import其他模块的麻烦。

(3)执行流程
Python检索sys.path,查找名字为指定名字的模块或者包,并将其内容当成"__main__"模块执行

(4)效果

  • 对于单个py文件,在该py文件所在目录执行"python 文件名.py"和"python -m 文件名.py"的程序结果一致,但返回的sys.path不一致,见下图。

即:python run.py方式,解释器会将run.py文件所在的路径添加到sys.path;而python -m run方式,解释器会将当前执行命令所在路径(.号表示)添加到sys.path。

  • 对于单个py文件,在该py文件所在上级(或者上上级)目录执行时,执行命令中需要写全该py模块的相对路径,但py文件中不用写全引入模块的路径。
  • 对于package,在package中新建一个__main__文件,执行命令"python -m package"相当于指定"python -m package.__main__",效果如下图所示。

补充说明:python文件中常用的import,导入的是模块(不带.py后缀)。

 

python导入模块的搜索先后顺序
(1)内建模块
(2)sys.path列表

  1.     当前程序的根目录(即当前运行python文件的目录)
  2.     PYTHONPATH环境变量设置的目录
  3.     标准库的目录
  4.     任何能够找到的*.pth文件的内容
  5.     第三方扩展的site-package目录

 

python文件如何执行
(1)首次加载运行流程
py纯文件对象(内存) -> PyCodeObject对象(内存) -> pyc文件(磁盘)
(2)存在pyc文件时的运行流程
pyc文件(磁盘) -> PyCodeObject对象(内存)

 

-- over --

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值