谈谈我对python sys.path的理解

版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc 前段时间在配置apache服务器时用到了这个参数,所以就特别查了一下 >>> import sys >>> print sys.path ['', '/home/pig', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/local/lib/python2.6/dist-packages'] >>> 在python 调试模式中导入sys模块,就可以打印出它的值。 python 的官方文档关于此值是这样说的。 A list of strings that specifies the search path for modules. Initialized from the environment variable PYTHONPATH, plus an installation-dependent default. 也就是说python解释器使用此值来,搜索模块,同时这个列表是由两部分组成的,一部分是从环境变量PYTHONPATH中取出的,另一部分中是安装时的默认值。 我做了测试,默认情况下,是没有这个环境变量的,因此我在环境变量中加入了PYTHONPATH 在~/.bashrc 中加入以下内容 PYTHONPATH="/home/pig" export PYTHONPATH 大家可以看到在上面的运行结果中,已经生效了。除了这个,大家还能看到 1)此列表的第一个元素是一个空字符串,它表示python解释器运行的当前目录 2) /usr/lib/python2.6 像这种都是python相应库的安装目录 最后再来看一个实验,打开两个窗口,各启动一个python 解释器,修改其中其中一个sys.path,看对另一个解释器是否有影响 1) >>> import sys >>> print len(sys.path) 14 >>> sys.path.append('/home/aotian/test') >>> print len(sys.path) 15 >>> >>> import sys >>> print len(sys.path) 14 >>> print len(sys.path) 14 >>> 从对比结果可以看出,刚开始两个解释器的len(sys.path)都等于14,给第一个解释器增加元素,第二个解释器并没有收到影响。 ...

January 2, 2018 · 1 min