python -m参数的作用(python3 -m)

文章目录

    • Python `-m` 参数的作用
      • 直接执行模块代码
      • 模块自测试
      • 环境隔离
      • 避免名称冲突
    • 其他:`python3 --help`

Python -m 参数的作用

在Python中,使用-m参数可以执行一个模块作为脚本。它是用于从命令行直接运行一个Python模块的标志。这种方式具有以下几个方面的作用:

  1. 直接执行模块代码: 使用python -m命令可以直接在命令行中执行一个Python模块,而不需要编写额外的启动脚本。这对于简单的脚本或工具非常方便,因为它们可以作为独立的可执行文件运行。

  2. 模块自测试: 当一个模块被设计为既可以作为库使用,又可以作为独立脚本运行时,可以将自测试代码放在__main__函数中,并使用python -m来运行该模块以进行测试。这样可以确保模块在被导入时正常运行,同时也能够通过直接执行来验证其功能。

if __name__ == '__main__':

如:

在这里插入图片描述

  1. 环境隔离: 使用python -m可以确保在运行指定模块时,使用的是正确版本的Python解释器和所需的依赖项。这对于多个Python环境并存的情况下特别有用,例如在虚拟环境中运行模块。

如:

在这里插入图片描述

在这里插入图片描述

  1. 避免名称冲突: 使用python -m可以避免与其他具有相同名称的脚本或模块发生名称冲突。通过明确指定模块的完整名称,可以确保执行的是所需的模块。

下面将进一步探讨每个方面的作用。

直接执行模块代码

使用-m参数,可以直接在命令行中执行Python模块,而不需要创建一个额外的启动脚本。这对于简单的脚本或工具非常方便,因为它们可以作为独立的可执行文件运行。

例如,假设有一个名为my_module.py的Python模块,其中包含以下代码:

def main():print("Hello, world!")if __name__ == "__main__":main()

要运行该模块,只需使用以下命令:

python -m my_module

这将直接执行my_module.py中的代码,并输出"Hello, world!"。

模块自测试

当一个模块被设计为既可以作为库使用,又可以作为独立脚本运行时,可以将自测试代码放在__main__函数中,并使用python -m来运行该模块以进行测试。

自测试是一种验证模块功能的方法,通常包括一些测试用例和断言语句。通过将自测试代码放在__main__函数中,可以确保只有在直接执行模块时才会运行这些测试。

继续上面的例子,假设有一个名为my_module.py的Python模块,其中包含以下代码:

def add(a, b):return a + bdef subtract(a, b):return a - bif __name__ == "__main__":assert add(2, 3) == 5assert subtract(5, 2) == 3print("All tests passed!")

在这个例子中,my_module.py定义了两个函数:addsubtract。在__main__函数中,我们编写了一些简单的测试用例,并使用断言语句进行验证。如果所有的断言都通过,就会输出"All tests passed!"。

要运行这些测试,只需使用以下命令:

python -m my_module

这将执行my_module.py中的代码,并运行自测试。如果所有的断言通过,将输出"All tests passed!"。

这种方式使得模块可以同时作为可执行脚本和库使用,方便开发者进行测试和验证。

环境隔离

使用python -m可以确保在运行指定模块时,使用的是正确版本的Python解释器和所需的依赖项。这对于多个Python环境并存的情况下特别有用,例如在虚拟环境中运行模块。

在Python开发中,常常会使用虚拟环境(virtual environment)来隔离不同项目的依赖项。虚拟环境提供了一个独立的Python运行环境,使得每个项目都可以使用其自己的依赖项,而不会相互干扰。

当在虚拟环境中工作时,可以使用python -m来运行模块,以确保使用的是当前激活的虚拟环境中的Python解释器。

例如,在虚拟环境中安装了名为requests的第三方库,并编写了一个名为my_module.py的模块,其中包含以下代码:

import requestsdef get_data(url):response = requests.get(url)return response.json()if __name__ == "__main__":data = get_data("https://api.example.com/data")print(data)

要在虚拟环境中运行这个模块,只需使用以下命令:

python -m my_module

这将确保在虚拟环境中执行my_module.py的代码,并且能够正确导入和使用在该环境中安装的requests库。

避免名称冲突

使用python -m可以避免与其他具有相同名称的脚本或模块发生名称冲突。通过明确指定模块的完整名称,可以确保执行的是所需的模块。

当系统中存在多个具有相同名称的模块或脚本时,直接使用python <module_name>可能会导致执行的是不正确的模块。

例如,假设系统中有一个名为my_module.py的模块,并且还有一个名为my_module.py的脚本。如果我们只使用python my_module.py命令来运行,系统可能无法确定要执行哪个文件。

通过使用python -m,可以明确指定要执行的模块的完整名称。例如:

python -m my_module

这将确保执行的是模块my_module,而不是同名的脚本。

总之,python -m提供了一种方便的方式来执行Python模块,并具有环境隔离和名称冲突解决的优势。它是在命令行中直接运行模块的便捷选项,适用于直接执行模块代码、模块自测试、环境隔离和避免名称冲突等场景。

其他:python3 --help

root@nvidia:/ky/tml/ky_ai_factory_test# python3 --help
usage: python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-b     : issue warnings about str(bytes_instance), str(bytearray_instance)and comparing bytes/bytearray with str. (-bb: issue errors)
-B     : don't write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
-d     : debug output from parser; also PYTHONDEBUG=x
-E     : ignore PYTHON* environment variables (such as PYTHONPATH)
-h     : print this help message and exit (also --help)
-i     : inspect interactively after running script; forces a prompt evenif stdin does not appear to be a terminal; also PYTHONINSPECT=x
-I     : isolate Python from the user's environment (implies -E and -s)
-m mod : run library module as a script (terminates option list)
-O     : remove assert and __debug__-dependent statements; add .opt-1 before.pyc extension; also PYTHONOPTIMIZE=x
-OO    : do -O changes and also discard docstrings; add .opt-2 before.pyc extension
-q     : don't print version and copyright messages on interactive startup
-s     : don't add user site directory to sys.path; also PYTHONNOUSERSITE
-S     : don't imply 'import site' on initialization
-u     : force the stdout and stderr streams to be unbuffered;this option has no effect on stdin; also PYTHONUNBUFFERED=x
-v     : verbose (trace import statements); also PYTHONVERBOSE=xcan be supplied multiple times to increase verbosity
-V     : print the Python version number and exit (also --version)when given twice, print more information about the build
-W arg : warning control; arg is action:message:category:module:linenoalso PYTHONWARNINGS=arg
-x     : skip first line of source, allowing use of non-Unix forms of #!cmd
-X opt : set implementation-specific option. The following options are available:-X faulthandler: enable faulthandler-X showrefcount: output the total reference count and number of usedmemory blocks when the program finishes or after each statement in theinteractive interpreter. This only works on debug builds-X tracemalloc: start tracing Python memory allocations using thetracemalloc module. By default, only the most recent frame is stored in atraceback of a trace. Use -X tracemalloc=NFRAME to start tracing with atraceback limit of NFRAME frames-X showalloccount: output the total count of allocated objects for eachtype when the program finishes. This only works when Python was built withCOUNT_ALLOCS defined-X importtime: show how long each import takes. It shows module name,cumulative time (including nested imports) and self time (excludingnested imports). Note that its output may be broken in multi-threadedapplication. Typical usage is python3 -X importtime -c 'import asyncio'-X dev: enable CPython's "development mode", introducing additional runtimechecks which are too expensive to be enabled by default. Effect of thedeveloper mode:* Add default warning filter, as -W default* Install debug hooks on memory allocators: see the PyMem_SetupDebugHooks() C function* Enable the faulthandler module to dump the Python traceback on a crash* Enable asyncio debug mode* Set the dev_mode attribute of sys.flags to True* io.IOBase destructor logs close() exceptions-X utf8: enable UTF-8 mode for operating system interfaces, overriding the defaultlocale-aware mode. -X utf8=0 explicitly disables UTF-8 mode (even when it wouldotherwise activate automatically)-X pycache_prefix=PATH: enable writing .pyc files to a parallel tree rooted at thegiven directory instead of to the code tree--check-hash-based-pycs always|default|never:control how Python invalidates hash-based .pyc files
file   : program read from script file
-      : program read from stdin (default; interactive mode if a tty)
arg ...: arguments passed to program in sys.argv[1:]Other environment variables:
PYTHONSTARTUP: file executed on interactive startup (no default)
PYTHONPATH   : ':'-separated list of directories prefixed to thedefault module search path.  The result is sys.path.
PYTHONHOME   : alternate <prefix> directory (or <prefix>:<exec_prefix>).The default module search path uses <prefix>/lib/pythonX.X.
PYTHONCASEOK : ignore case in 'import' statements (Windows).
PYTHONUTF8: if set to 1, enable the UTF-8 mode.
PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.
PYTHONFAULTHANDLER: dump the Python traceback on fatal errors.
PYTHONHASHSEED: if this variable is set to 'random', a random value is usedto seed the hashes of str and bytes objects.  It can also be set to aninteger in the range [0,4294967295] to get hash values with apredictable seed.
PYTHONMALLOC: set the Python memory allocators and/or install debug hookson Python memory allocators. Use PYTHONMALLOC=debug to install debughooks.
PYTHONCOERCECLOCALE: if this variable is set to 0, it disables the localecoercion behavior. Use PYTHONCOERCECLOCALE=warn to request display oflocale coercion and locale compatibility warnings on stderr.
PYTHONBREAKPOINT: if this variable is set to 0, it disables the defaultdebugger. It can be set to the callable of your debugger of choice.
PYTHONDEVMODE: enable the development mode.
PYTHONPYCACHEPREFIX: root directory for bytecode cache (pyc) files.

root@nvidia:/ky/tml/ky_ai_factory_test# python3 --help
usage: python3 [option] … [-c cmd | -m mod | file | -] [arg] …
Options and arguments (and corresponding environment variables):
-b : issue warnings about str(bytes_instance), str(bytearray_instance)
and comparing bytes/bytearray with str. (-bb: issue errors)
-B : don’t write .pyc files on import; also PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
-d : debug output from parser; also PYTHONDEBUG=x
-E : ignore PYTHON* environment variables (such as PYTHONPATH)
-h : print this help message and exit (also --help)
-i : inspect interactively after running script; forces a prompt even
if stdin does not appear to be a terminal; also PYTHONINSPECT=x
-I : isolate Python from the user’s environment (implies -E and -s)
-m mod : run library module as a script (terminates option list)
-O : remove assert and debug-dependent statements; add .opt-1 before
.pyc extension; also PYTHONOPTIMIZE=x
-OO : do -O changes and also discard docstrings; add .opt-2 before
.pyc extension
-q : don’t print version and copyright messages on interactive startup
-s : don’t add user site directory to sys.path; also PYTHONNOUSERSITE
-S : don’t imply ‘import site’ on initialization
-u : force the stdout and stderr streams to be unbuffered;
this option has no effect on stdin; also PYTHONUNBUFFERED=x
-v : verbose (trace import statements); also PYTHONVERBOSE=x
can be supplied multiple times to increase verbosity
-V : print the Python version number and exit (also --version)
when given twice, print more information about the build
-W arg : warning control; arg is action:message:category:module:lineno
also PYTHONWARNINGS=arg
-x : skip first line of source, allowing use of non-Unix forms of #!cmd
-X opt : set implementation-specific option. The following options are available:
-X faulthandler: enable faulthandler
-X showrefcount: output the total reference count and number of used
memory blocks when the program finishes or after each statement in the
interactive interpreter. This only works on debug builds
-X tracemalloc: start tracing Python memory allocations using the
tracemalloc module. By default, only the most recent frame is stored in a
traceback of a trace. Use -X tracemalloc=NFRAME to start tracing with a
traceback limit of NFRAME frames
-X showalloccount: output the total count of allocated objects for each
type when the program finishes. This only works when Python was built with
COUNT_ALLOCS defined
-X importtime: show how long each import takes. It shows module name,
cumulative time (including nested imports) and self time (excluding
nested imports). Note that its output may be broken in multi-threaded
application. Typical usage is python3 -X importtime -c ‘import asyncio’
-X dev: enable CPython’s “development mode”, introducing additional runtime
checks which are too expensive to be enabled by default. Effect of the
developer mode:
* Add default warning filter, as -W default
* Install debug hooks on memory allocators: see the PyMem_SetupDebugHooks() C function
* Enable the faulthandler module to dump the Python traceback on a crash
* Enable asyncio debug mode
* Set the dev_mode attribute of sys.flags to True
* io.IOBase destructor logs close() exceptions
-X utf8: enable UTF-8 mode for operating system interfaces, overriding the default
locale-aware mode. -X utf8=0 explicitly disables UTF-8 mode (even when it would
otherwise activate automatically)
-X pycache_prefix=PATH: enable writing .pyc files to a parallel tree rooted at the
given directory instead of to the code tree
–check-hash-based-pycs always|default|never:
control how Python invalidates hash-based .pyc files
file : program read from script file
: program read from stdin (default; interactive mode if a tty)
arg …: arguments passed to program in sys.argv[1:]
Other environment variables:
PYTHONSTARTUP: file executed on interactive startup (no default)
PYTHONPATH : ‘:’-separated list of directories prefixed to the
default module search path. The result is sys.path.
PYTHONHOME : alternate directory (or :<exec_prefix>).
The default module search path uses /lib/pythonX.X.
PYTHONCASEOK : ignore case in ‘import’ statements (Windows).
PYTHONUTF8: if set to 1, enable the UTF-8 mode.
PYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.
PYTHONFAULTHANDLER: dump the Python traceback on fatal errors.
PYTHONHASHSEED: if this variable is set to ‘random’, a random value is used
to seed the hashes of str and bytes objects. It can also be set to an
integer in the range [0,4294967295] to get hash values with a
predictable seed.
PYTHONMALLOC: set the Python memory allocators and/or install debug hooks
on Python memory allocators. Use PYTHONMALLOC=debug to install debug
hooks.
PYTHONCOERCECLOCALE: if this variable is set to 0, it disables the locale
coercion behavior. Use PYTHONCOERCECLOCALE=warn to request display of
locale coercion and locale compatibility warnings on stderr.
PYTHONBREAKPOINT: if this variable is set to 0, it disables the default
debugger. It can be set to the callable of your debugger of choice.
PYTHONDEVMODE: enable the development mode.
PYTHONPYCACHEPREFIX: root directory for bytecode cache (pyc) files.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/91042.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMQ消息轨迹产生的背景以及使用方式

这里是weihubeats,觉得文章不错可以关注公众号小奏技术&#xff0c;文章首发。拒绝营销号&#xff0c;拒绝标题党 背景 最近在维护RocketMQ经常会出现这种问题 消息发送方和接收方出现扯皮&#xff0c;消息发送方说我的消息已经发送成功了&#xff0c;消费方说我没接收到消息。…

uni——初次加载问题处理(赋值后再调用)

案例描述 此案例中 一进页面接收good_id并调用接口&#xff0c;这个流程正常。 这个changeNum也是一进页面就触发了&#xff08;组件购物车加减自带&#xff09;&#xff0c;且触发的顺序在onload赋值id之前&#xff0c;这时候good_id还是为空&#xff0c;所以接口报错。如何处…

十一、避开客户端控件——收集用户数据

文章目录 一、HTML表单1.1 长度限制1.2 基于脚本的确认1.3 禁用的元素 二、浏览器拓展2.1 常见的浏览器拓展技术2.2 攻击浏览器扩展的方法 一、HTML表单 应用程序使用客户端控件限制客户端提交的数据的另一个主要控制对象&#xff0c;是由客户端计算机自己收集的数据。 HTML表单…

Python-OpenCV中的图像处理-图像直方图

Python-OpenCV中的图像处理-图像直方图 图像直方图统计直方图绘制直方图Matplotlib绘制灰度直方图Matplotlib绘制RGB直方图 使用掩膜统计直方图直方图均衡化Numpy图像直方图均衡化OpenCV中的直方图均衡化CLAHE 有限对比适应性直方图均衡化 2D直方图OpenCV中的2D直方图Numpy中2D…

Medical Isolated Power Supply System in Angola

安科瑞 华楠 Abstract: Diagnosis and treatment in modern hospitals are inseparable from advanced medical equipment, which are inseparable from safe and reliable power supply. Many operations often last for several hours, and the consequences of a sudden pow…

欢迎光临,博客网站

欢迎光临&#xff1a;YUNYE博客~https://yunyeblog.com/更多的文章&#xff0c;供大家参考学习&#xff01;&#xff01;&#xff01;

Mybatis 源码 ④ :TypeHandler

文章目录 一、前言二、DefaultParameterHandler1. DefaultParameterHandler#setParameters1.1 UnknownTypeHandler1.2 自定义 TypeHandler 三、DefaultResultSetHandler1. hasNestedResultMaps2. handleRowValuesForNestedResultMap2.1 resolveDiscriminatedResultMap2.2 creat…

VSCode使用SSH无密码连接Ubuntu

VSCode使用SSH无密码连接Ubuntu 前提条件&#xff1a; 1. 能够正常使用vscode的Remote-ssh连接Ubuntu 2. Ubuntu配置静态ip&#xff08;否则经常需要修改Remote-ssh的配置文件里的IP&#xff09; 链接-> ubuntun 18.04设为静态ip&#xff08;.net模式&#xff0c;可连接…

初学HTML:在线简易画板设计。

最近在HTML&#xff0c;记录下一点点成果。 设计了一个简易画板&#xff0c;通过HTML的Canvas元素实现一个在线画板&#xff0c;用户可以在上面绘制图形或涂鸦。 下面是运行效果&#xff1a; 下面是代码&#xff1a; <!DOCTYPE html> <html> <head><ti…

蓝绿灰度发布的介绍

背景介绍 蓝绿灰度发布 介绍 蓝绿部署中&#xff0c;一共有两套系统&#xff1a;一套是正在提供服务系统(也就是上面说的旧版)&#xff0c;标记为绿色&#xff1b;另一套是准备发布的系统&#xff0c;标记为蓝色。两套系统都是功能完善的&#xff0c;并且正在运行的系统&…

安全 1自测

常见对称加密算法&#xff1a; DES&#xff08;Data Encryption Standard&#xff09;&#xff1a;数据加密标准&#xff0c;速度较快&#xff0c;适用于加密大量数据的场合&#xff1b; 3DES&#xff08;Triple DES&#xff09;&#xff1a;是基于DES&#xff0c;对一块数据用…

C语言刷题训练【第11天】

大家好&#xff0c;我是纪宁。 今天是C语言笔试刷题训练的第11天&#xff0c;加油&#xff01; 文章目录 1、声明以下变量&#xff0c;则表达式: ch/i (f*d – i) 的结果类型为&#xff08; &#xff09;2、关于代码的说法正确的是&#xff08; &#xff09;3、已知有如下各变…

linux——MongoDB服务

目录 一、MongoDB概述 相关概念 特性 应用场景 二、目录结构 三、默认数据库 admin local config 四、数据库操作 库操作 文档操作 五、MongoDB数据库备份 一、备份 mongodump mongoexport 二、恢复 mongorestore mongoimport ​编辑 一、MongoDB概述 MongoDB是…

Live Market是如何做跨境客户服务的?哪些技术赋能?

在面对不同的海外市场和用户群体时,如何进行有效地出海营销是跨境商家面临的挑战。其中消费者服务管理和卖家保障尤其关键&#xff0c;如何做好客户服务管理?包括处理好客户投诉,提升消费者满意度是所有跨境商家和品牌独立站卖家非常重视的问题。 在数字化浪潮席卷之下&#…

VictoriaMetrics部署及vmalert集成钉钉告警

1、部署VictoriaMetrics cd /usr/local wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.65.0/victoria-metrics-amd64-v1.65.0.tar.gz mkdir victoria-metrics && tar -xvzf victoria-metrics-amd64-v1.65.0.tar.gz && \ mv …

【视频笔记】解密RWKV线性注意力的进化过程

from&#xff1a; https://www.bilibili.com/video/BV1zW4y1D7Qg/?spm_id_from333.999.0.0&vd_source21cce77bb69d40a81e0d37999f2da0c2 文章目录 向量版 Self-attentionAFT 的线性AttentionRWKV的线性Attention 向量版 Self-attention 手动实现&#xff0c;可以看出 时间…

jpg图片太大怎么压缩?这样做轻松压缩图片

图片太大会给存储、分享带来麻烦&#xff0c;但其实现在压缩图片大小也不是什么难事&#xff0c;下面就给大家分享几个一直用的图片压缩方法&#xff0c;包含批量压缩、在线压缩、免费压缩等多种方式&#xff0c;大家按需自取哈~ 方法一&#xff1a;嗨格式压缩大师 这是一个可…

深入理解 go协程 调度机制

Thread VS Groutine 这里主要介绍一下Go的并发协程相比于传统的线程 的不同点&#xff1a; 创建时默认的stack大小 JDK5 以后Java thread stack默认大小为1MC 的thread stack 默认大小为8MGrountine 的 Stack初始化大小为2K 所以Grountine 大批量创建的时候速度会更快 和 …

phpstorm添加vue 标签属性绑定提示和提示vue的方法提示

v-text v-html v-once v-if v-show v-else v-for v-on v-bind v-model v-ref v-el v-pre v-cloak v-on:click v-on:keyup.enter v-on:keyup click change input number debounce transition :is :class把上面这些文字粘贴到点击右下角放大按钮 后的文本框里&#xff0c;然后保存…

【BASH】回顾与知识点梳理(二十二)

【BASH】回顾与知识点梳理 二十二 二十二. Linux 账号管理22.1 Linux 的账号与群组使用者标识符&#xff1a; UID 与 GID使用者账号/etc/passwd 文件结构/etc/shadow 文件结构 关于群组&#xff1a; 有效与初始群组、groups, newgrp/etc/group 文件结构有效群组(effective grou…