Python如何将当前目录添加到sys.path

Python如何将当前目录添加到sys.path,python,import,path,Python,Import,Path,我有一个这样的目录,位于myDir/中 myDir └── importExample ├── __init__.py └── printPath.py 和printPath.py: 导入系统 打印(系统路径) 我知道Python会将“当前目录”添加到sys.path。但是,我发现直接运行脚本和使用-m运行脚本有不同的行为 ~/myDir$ python -c "import sys; print(sys.path)" ['', '

我有一个这样的目录,位于
myDir/

myDir
  └── importExample
         ├── __init__.py
         └── printPath.py
printPath.py

导入系统 打印(系统路径) 我知道Python会将“当前目录”添加到
sys.path
。但是,我发现直接运行脚本和使用
-m
运行脚本有不同的行为

~/myDir$ python -c "import sys; print(sys.path)"
['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/yy0125/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']

~/myDir$ python importExample/printPath.py 
['~/myDir/importExample', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/yy0125/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']

~/myDir$ python -m importExample.printPath
['~/myDir', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/yy0125/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']
两个问题:

  • 什么是“当前目录”?我们运行命令的地方?或者文件位于何处
  • 为什么使用
    -m
    会导致不同的行为(在
    sys.path
    的第一个条目中)

  • 来自官方文件():

    在程序启动时初始化,此列表的第一项路径[0]是目录
    包含用于调用Python解释器的脚本。如果脚本
    目录不可用(例如,如果以交互方式调用解释器或
    脚本是从标准输入读取的),路径[0]是空字符串,用于指示Python
    首先在当前目录中搜索模块。
    
    当您运行
    python-c“import sys;print(sys.path)”
    时,它的意思是 您正在交互式shell模式下运行它,因此sys.path[0]为none

    在第二种情况下,您正在运行printPath脚本,因此sys.path[0]是该脚本所在的目录


    第三种情况有点不同。sys.path[0]是您当前的工作目录,因为python会在搜索importExample模块之前自动将您当前的工作目录添加到sys.path中

    谢谢!你能为你所指的文件提供一个链接吗?特别是第三种情况。