版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | 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… 继续阅读 谈谈我对python sys.path的理解

版权声明 本站原创文章 由 萌叔 发表 转载请注明 萌叔 | http://vearne.cc 起因: 想利用模块传递某个变量,修改某个变量的值,且在其它模块中也可见 于是我做了这样一个实验: git@github.com:vearne/test_scope.git base.py value = 10 b.py import base def hello(): print ‘scope base’, base.value, id(base.value) main.py from base import value from b import hello print ‘scope base’, value, id(value) value = 20 print ‘scope local’, value, id(value) hello()… 继续阅读 python 模块==命名空间?

起因: 从ES集群A往ES集群B导数,然后比对2个ES的数据差异,逐个ID比对。由于ES集群A的版本是1.4.x,ES集群B的版本是5.3.x,所以无法使用同一个ES client包 1. 加载不同版本的client包 对比的过程是,取相同发布时间区间的文章ID,然后比对id的差异 伪码如下: es_A_ids = get_es_A_ids() es_B_ids = get_es_B_ids() diff_ids = es_A_ids – es_B_ids 可以想到的是在访问完集群A后重新加载elasticsearch 库 ## load elasticsearch==1.4.0 es_A_ids = get_es_A_ids() ## load elasticsearch==5.3.0 es_B_ids = get_es_B_ids() diff_ids = es_A_ids – es_B_ids 但是很有趣的是,elasticsearch在load完上一个版本以后,它的版本没有发生变化 2. 清理已经load 的module 经过查资料,我明确了这个问题,python的module,只会被load,有且一次,所以要保证不同版本的module被再次load,只能先clear 原先load的module ES的module都以elasticsearch开头,因此把它们都清理掉 for key in sys.modules.keys(): if key.startswith(‘elasticsearch’):… 继续阅读 在一个Python脚本中加载2种不同版本的库