sys.path是python package的加载目录,比如说定义flask从哪个目录加载。而PATH是环境变量,是系统自定义的,不管是Windows还是Linux,PATH相关的目录是可执行文件的目录,比如你在命令行执行java,在没有指定绝对路径的前提下,加载的目录是定义在PATH里的题主我更新下答案sys.path其实定义了一个python package加载的目录比如我在2个目录下有2个同名的python文件,比如hello.py,见下图 上图在test目录下分别有2个package t1和t2,其中都有重名的文件hello.py 你可以把test想象成别的小伙伴开发的package我们现在电脑上的开发目录是/data,注意,这个跟引用的package完全是2个不同的目录 仔细看图中的代码,通过操作sys.path来设定package的加载顺序。实际开发中,python的加载package顺序可以通过配置sys.path来实现不同的package加载。虽然可以这么做,但请注意,在程序运行期间动态的修改sys.path是一个非常不好的习惯,会导致很多难以排查的bug。一般有特殊的加载顺序要求的,需要通过设置PYTHONPATH来实现。sys.path除了PYTHONPATH定义的module之外,还有内置的built in加载模块。 如果对这部分的实现很感兴趣,可以读下python library的importlib一章节。
sys.path是python package的加载目录,比如说定义flask从哪个目录加载。
而PATH是环境变量,是系统自定义的,不管是Windows还是Linux,PATH相关的目录是可执行文件的目录,比如你在命令行执行java,在没有指定绝对路径的前提下,加载的目录是定义在PATH里的
题主我更新下答案
sys.path其实定义了一个python package加载的目录
比如我在2个目录下有2个同名的python文件,比如hello.py,见下图
上图在test目录下分别有2个package t1和t2,其中都有重名的文件hello.py
你可以把test想象成别的小伙伴开发的package
我们现在电脑上的开发目录是/data,注意,这个跟引用的package完全是2个不同的目录
仔细看图中的代码,通过操作sys.path来设定package的加载顺序。
实际开发中,python的加载package顺序可以通过配置sys.path来实现不同的package加载。
虽然可以这么做,但请注意,在程序运行期间动态的修改sys.path是一个非常不好的习惯,会导致很多难以排查的bug。一般有特殊的加载顺序要求的,需要通过设置PYTHONPATH来实现。
sys.path除了PYTHONPATH定义的module之外,还有内置的built in加载模块。
如果对这部分的实现很感兴趣,可以读下python library的importlib一章节。