python -m 运行一个模块

本文介绍如何使用python -m 命令来直接运行Python标准库中的模块,无需导入即可启动指定的服务,例如启动一个简单的HTTP服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python -m 模块名

直接把当前目录 ‘’ 当做模块的运行路径,不需要import 直接运行

例如:

python -m SimpleHTTPServer    #python2中启动一个简单的http服务器
python -m http.server    #python3中启动一个简单的http服务器

以上两种方式就是运行了模块里边的所有内容,一般运行的函数部分在 if '__name__' == '__main__': 里边, 比如
http.server就是在里边跑起了服务器

转载于:https://www.cnblogs.com/chaiming/p/9241316.html

### Python `-m` 参数的执行代码类型及其原理 #### 一、`python -m` 的基本功能 `python -m` 是一种运行 Python模块作为脚本的方式。其作用是将指定的模块视为独立可执行脚本运行,而不是简单地导入该模块到当前环境中[^1]。 #### 二、支持的代码类型 通过 `python -m` 可以运行以下几种类型的代码: 1. **标准库中的模块** 如果某个模块存在于 Python 标准库中,则可以通过 `-m` 来直接运行它。例如: ```bash python -m http.server ``` 上述命令会启动一个简单的 HTTP 服务器,这是由标准库中的 `http.server` 模块实现的功能[^2]。 2. **第三方安装的包** 对于已安装的第三方包(通常通过 `pip install` 安装),如果它们提供了入口点(entry point),也可以通过 `-m` 调用。例如: ```bash python -m pip install requests ``` 此处调用了 `pip` 工具的核心逻辑,实际上是运行了 `pip` 包内的 `__main__.py` 文件[^3]。 3. **自定义模块或脚本** 用户可以在项目目录下编写自己的模块,并通过 `-m` 命令来运行这些模块。前提是模块需满足一定的条件,比如包含 `if __name__ == "__main__":` 结构以便提供执行入口。 #### 三、工作原理分析 当使用 `python -m module_name` 时,Python 解释器按照如下流程处理请求: 1. 查找并加载指定名称的模块; 2. 将模块的内容视作顶层脚本来执行; 3. 若目标模块存在 `if __name__ == "__main__"` 部分,则仅在此模式下调用这部分代码;否则整个模块会被逐行解析执行。 具体来说,“`python -m pip`”实际运行的是位于 `pip/__init__.py` 或者单独存在的 `pip/main.py` 中定义好的函数集合,最终导向至 `"pip._internal.main()"` 方法完成操作。 另外需要注意的一点是,在这种场景下的模块查找路径依赖于系统的环境变量设置 (`PYTHONPATH`) 和内置默认规则共同决定。 #### 四、示例演示 下面给出一段利用 `-m` 方式运行本地模块的例子供参考: 假设有一个名为 `hello_module.py` 的文件内容如下: ```python def greet(): print("Hello, world!") if __name__ == "__main__": greet() ``` 保存上述代码后在同一目录下输入命令即可看到效果: ```bash python -m hello_module ``` 输出应为:“Hello, world!” --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值