Pan*_*kus 31 python python-3.x
我是Python的新手(也是编程人员),虽然有很好的文档,但我无法理解-m指令的确切含义(正是在创建虚拟环境时:python3 -m venv my_env
.
据我所知,从文档中可以看出,它代表"将库模块作为脚本运行":实际上这是我无法弄清楚的概念,没有运行命令的区别是什么-m
.
而且,这是Python 3的一个特点吗?
pok*_*oke 54
Python模块只是脚本文件,位于Python可以找到它们的位置.与所有脚本一样,如果您知道它们的位置,您可以直接运行它们,例如python /path/to/module.py
.
正确设计的模块通常不会做任何事情,除了设置东西(例如你可以导入的函数和类型),但它们通常不会有任何可见的副作用.这就是为什么你可以做到import sys
,没有任何反应.
但是,某些模块在从命令行运行时可能会提供有用的东西.该实例包括venv
但还http.server
或idlelib
:所有那些的是可以从其他模块中导入无副作用经常模块.
但是当直接执行时,它们都会做一些事情(例如,venv
设置虚拟环境,http.server
运行简单的HTTP服务器,并idlelib
运行IDLE).这通常通过以下检查完成:
if __name__ == '__main__':
print('Module is being executed directly, so do stuff here')
Run Code Online (Sandbox Code Playgroud)
这是一种识别正在直接执行的脚本/模块的特殊方式,或者是否只是从其他模块导入.您可以了解有关"做if __name__ == '__main__':
什么?"的问题的更多信息.
因此,您可以直接使用python /path/to/module.py
我们之前建立的模块.但这需要您了解模块的完整路径.这是-m
选项发挥作用的地方:对于通常只能使用导入的模块import modulename
,您可以使用python -m modulename
直接运行该模块.就像你输入了它的完整路径一样.
因此,对于上面的例子,我们可以使用python -m venv
,python -m http.server
.或python -m idlelib
.
归档时间: |
|
查看次数: |
7019 次 |
最近记录: |