Python 模块的定位和执行 (runpy)
命令行选项的 –m 选项搜索给定的模块并将其作为 __main__ 模块执行。此机制由 Python 标准模块中的 runpy 模块内部支持,该模块允许使用 Python 模块命名空间而不是文件系统来定位脚本。
此模块定义了两个函数
run_module()
此函数执行指定模块的代码并返回生成的模块全局字典。
mod_name 参数应该是绝对模块名。如果模块名指的是包而不是普通模块,则导入该包,然后执行该包中的 __main__ 子模块,并返回生成的模块全局字典。
在执行模块代码之前,会在全局字典中设置特殊的全局变量 __name__、__spec__、__file__、__cached__、__loader__ 和 __package__。
如果命名模块是包,则 __name__ 设置为 mod_name + '.__main__',否则设置为 mod_name 参数。
__file__、__cached__、__loader__ 和 __package__ 根据模块规范正常设置。
run_path()
此函数执行给定路径下文件的代码,并返回生成的模块全局字典。提供的路径可以指 Python 源文件、编译后的字节码文件或包含 __main__ 模块的有效 sys.path 条目(例如,包含顶级 __main__.py 文件的 zip 文件)。
在执行模块代码之前,会在全局字典中设置特殊的全局变量 __name__、__spec__、__file__、__cached__、__loader__ 和 __package__。
如果此可选参数不为 None,则 __name__ 设置为 run_name,否则设置为 '
示例
将以下脚本保存为 runpyeample.py
#runpy example def add(x,y): return x+y def main(): x,y = 10,20 print (add(x,y)) return if __name__=='__main__': main()
执行上述示例的通常过程如下
>>> import runpyexample as rp >>> rp.main() 30 >>>
但是,我们现在使用 runpy 模块来执行它,而无需实际导入它。
>>> import runpy
>>> runpy.run_module('runpyexample', run_name='__main__')
30您也可以使用 run_path() 函数。
>>> runpy.run_path('runpyexample.py', run_name='__main__')
30如前所述,runpy 支持 Python 命令行的 –m 开关。
E:\python37>python -m runpyexample 30
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP