sys.path和os.environ['PATH']啥区别?

如题。分别打印了一下,二者是不同,但还总结不出啥区别。。

阅读 10k
2 个回答

sys.path是python package的加载目录,比如说定义flask从哪个目录加载。
而PATH是环境变量,是系统自定义的,不管是Windows还是Linux,PATH相关的目录是可执行文件的目录,比如你在命令行执行java,在没有指定绝对路径的前提下,加载的目录是定义在PATH里的
题主我更新下答案
sys.path其实定义了一个python package加载的目录
比如我在2个目录下有2个同名的python文件,比如hello.py,见下图

clipboard.png
上图在test目录下分别有2个package t1和t2,其中都有重名的文件hello.py

你可以把test想象成别的小伙伴开发的package
我们现在电脑上的开发目录是/data,注意,这个跟引用的package完全是2个不同的目录

clipboard.png

仔细看图中的代码,通过操作sys.path来设定package的加载顺序。
实际开发中,python的加载package顺序可以通过配置sys.path来实现不同的package加载。
虽然可以这么做,但请注意,在程序运行期间动态的修改sys.path是一个非常不好的习惯,会导致很多难以排查的bug。一般有特殊的加载顺序要求的,需要通过设置PYTHONPATH来实现。
sys.path除了PYTHONPATH定义的module之外,还有内置的built in加载模块。

如果对这部分的实现很感兴趣,可以读下python library的importlib一章节。

clipboard.png

图片描述

用windows里的变量举例,sys.path是python的package path,而os.environ['PATH']就是下面的系统变量

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题