linux python sys.path,谈谈我对python sys.path的理解

前段时间在配置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 variablePYTHONPATH, 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 引入该模块或代码

最后执行相应程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值