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中谢谢!你能为你所指的文件提供一个链接吗?特别是第三种情况。