python 之路径搜索

 今天遇到一个奇怪的问题,客户安装了python3.6,系统自带了python2.7,当我调用系统自带的python2.7环境时,导入的一个模块却是python3.6的模块.,我们查找一下path

Python 2.7.5 (default, Nov  6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', '/usr/lib/python2.7/site-packages/multiqc-1.6dev-py2.7.egg', '/usr/lib/python2.7/site-
packages/spectra-0.0.11-py2.7.egg', '/usr/lib/python2.7/site-packages/simplejson-3.13.2-
py2.7-linux-x86_64.egg', '/usr/lib/python2.7/site-packages/requests-2.18.4-py2.7.egg', 
'/usr/lib/python2.7/site-packages/PyYAML-3.12-py2.7-linux-x86_64.egg', 
'/usr/lib/python2.7/site-packages/Markdown-2.6.11-py2.7.egg', '/etc/profile.d', 
'/ds3200_1/proc/pasta-bin/lib/python3.6/site-packages', '/ds3200_1/proc/pasta', 
'/ds3200_1/proc/pasta-bin/lib/python3.6/site-packages/DendroPy-4.4.0-py3.6.egg', 
'/ds3200_1/proc/miniconda3/lib/python3.6/site-packages', '/ds3200_1/proc/pasta-bin/lib/python',...]

后来发现是因为用户配置了PYTHONPATH的原因,由此也引发了python路径搜索的问题,它是怎么搜索的

第一步搜索:  程序的根目录

第二步搜索: PYTHONPATH设置的环境变量

第三步搜索:  标准库

第四步搜索:  所有的.pth(一般写在site-packages下面 也可以调用site.getsitepackages查看)

第五步搜索:  site-packages

本质上,sys.path是在安装python时写死的路径,随着一些配置加进来,才逐步扩大的。

 

由于客户某些软件一定要用配置python3.6的搜索路径,最终的解决方案是PYTHONPATH不做配置,在python3.6建一个搜索路径文件*.pth。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值