python -m中m参数的解释

python -m是将库中的python模块用作脚本去运行

目录结构如下

package/
    __init__.py
    mod1.py
package2/
    __init__.py
    run.py

在package里面有mod1.py文件和package2文件夹里面有run.py文件夹
run.py里面的具体内容如下:

# run.py 内容如下
import sys
from package import mod1
print(sys.path)

在运行python package2/run.py ,直接启动的方式会失败:

Traceback (most recent call last):
 File "package2/run.py", line 2, in <module>
  from package import mod1
ImportError: No module named package

当需要启动的py文件引用了一个模块。你需要注意:在启动的时候需要考虑sys.path中有没有你import的模块的路径!
这个时候,到底是使用直接启动,还是以模块的启动?目的就是把import的那个模块的路径放到sys.path中。

导入一个叫mod1的模块时,解释器现在当前目录搜索名字为mod1.py的文件,如果没有找到的话,就会在sys.path变量中给出的目录列表中查找,sys.path变量中的初始值来自如下:

  • 输入脚本的目录(当前目录)
  • Python默认安装路径中搜索
  • 实际上,解释器由 sys.path 变量指定的路径目录搜索模块,该变量初始化时默认包含了输入脚本(或者当前目录), PYTHONPATH 和安装目录。这样就允许 Python程序了解如何修改或替换模块搜索目录。

猜你喜欢

转载自blog.csdn.net/qq_30129009/article/details/130131888