谈谈我对python sys.path的理解
来源:互联网 发布:各省地方政府债务数据 编辑:程序博客网 时间:2024/05/29 18:05
前段时间在配置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
>>>
2)
>>> import sys
>>> print len(sys.path)
14
>>> print len(sys.path)
14
>>>
从对比结果可以看出,刚开始两个解释器的len(sys.path)都等于14,给第一个解释器增加元素,第二个解释器并没有收到影响。
也就是说对于两个python解释器而言,这个变量是相互独立的,它的表现行为类似于进程的环境变量。
有的时候我们需要在工程中引入其它公共模块的代码,则启动脚本可以这样写
cd "$(dirname "$0")"cd ..export PYTHONPATH=`pwd`nohup python webserver/src/webserver.py &
通过shell 命令跳转到对应代码所在文件路径,再通过PYTHONPATH 引入该模块或代码
最后执行相应程序。
- 谈谈我对python sys.path的理解
- 谈谈我对计算机体系结构的理解
- 谈谈我对BS模式的理解
- 谈谈我对敏捷的理解
- 谈谈我对DI的理解
- 谈谈我对DI的理解
- 谈谈我对CSS的理解
- 谈谈我对Qt的理解
- 谈谈我对计算机专业的理解
- 谈谈我对计算机专业的理解
- 谈谈我对软件度量的理解
- 谈谈我对验收的理解
- 谈谈我对bloom filter的理解。
- 谈谈我对Java中泛型的理解
- 谈谈我对HTML5+CSS3的理解
- 谈谈我对flexbox的理解
- 谈谈我对SQL 注入的理解
- 谈谈我对RMI技术的理解
- 输入一个新的网址后到完全显示页面,浏览器做了哪些工作?
- hdu 1711
- ios开发之 xcode使用
- Linux的inode的理解
- Struts action
- 谈谈我对python sys.path的理解
- WIN7 USB无线鼠标 禁止唤醒休眠中的电脑
- C++primer 自由列表(自己写的挫代码,抄书)
- android Bitmap.recycle()的相关问题
- 浏览器内核(解释引擎)
- 认识物理内存4G地址空间的局限--转载
- 2012硅谷的那些事儿--互联网
- Spring框架中获得DataSource对象的方法
- unity3d调用DLL