Python探索之修改Python搜索路径


Posted in Python onOctober 25, 2017

当Python执行import语句时,它会在一些路径中搜索Python模块和扩展模块。可以通过sys.path查看这些路径,比如:

>>> import sys 
>>> sys.path 
['', '/usr/lib/python2.7/site-packages/demo_nova_hooks-5-py2.7.egg', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib64/python2.7/site-packages/gtk-2.0', '/usr/lib/python2.7/site-packages']

其中的空字符串表示当前工作目录。

         当安装第三方模块的时候,如果不是按照标准方式安装,则为了能够引用(import)这些模块,必须将这些模块的安装路径添加到sys.path中,有以下几种方法:

         1:最简单的方法,是在sys.path的某个目录下添加路径配置文件,最常见的就是在…/site-package/目录下。路径配置文件的扩展名是”.pth”,其中的每一行包含一个单独的路径,该路径会添加到sys.path列表中(已验证)。”.pth”中的路径既可以是绝对路径,也可以是相对路径,如果是相对路径,则是相对于包含”.pth”文件的路径而言的。

         2:另一种方法就是在Python标准库中修改site.py文件,并编辑sys.path。除非使用了-S开关选项,否则site.py在Python解释器加载时会自动被引入(执行),作用是加载site-packages中的包和模块到python的sys.path里面。所以,可以编辑site.py,然后加上下面的两行内容即可:

import sys 
sys.path.append('/xxx/xxxxx/')

3:有两个环境变量可以编辑sys.path。 PYTHONHOME会改变prefix和exec_prefix的值,默认情况下prefix和exec_prefix都是/usr/local。库搜索路径就是prefix/lib/pythonversion 和 exec_prefix/lib/pythonversion。

如果设置PYTHONHOME为单独的路径,则该路径会替换prefix和exec_prefix的值,如果需要prefix和exec_prefix的值不同,则置PYTHONHOME为”prefix:exec_prefix”。比如如果将PYTHONHOME设置为”/www/python”,则sys.path就会变为
['', '/www/python/lib/pythonX.Y/', '/www/python/lib/pythonX.Y/plat-linux2', ...].

注意,修改了PYTHONHOME后,系统可能因找不到site模块而无法启动python解释器,所以,除非特别需求,不要修改该变量。

[root@localhost ~]# python 
ImportError: No module named site

PYTHONPATH 环境变量指定的一系列路径,会添加到sys.path中。比如如果PYTHONPATH设置为”/www/python:/opt/py”的话,则sys.path会以 ['/www/python','/opt/py'].开头。注意这些路径必须存在,因为site模块会将不存在的路径删除。

总结

关于Python修改路径的问题,就先介绍到这里,以后如果有什么好的关于Python的文章,会第一时间分享给大家。有什么问题可以随时留言,欢迎大家交流参考。本站几篇Python的文章,分享给大家:浅谈python中copy和deepcopy中的区别、python实现微信接口(itchat)详细介绍、基于Python和Scikit-Learn的机器学习探索。

追逐梦想的路上,我已然迟到了许多年,现在,该上车了。。

Python 相关文章推荐
Python_LDA实现方法详解
Oct 25 Python
python编程羊车门问题代码示例
Oct 25 Python
基于python实现高速视频传输程序
May 05 Python
python安装scipy的方法步骤
Jun 26 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
使用Windows批处理和WMI设置Python的环境变量方法
Aug 14 Python
Python解析多帧dicom数据详解
Jan 13 Python
Python 实现向word(docx)中输出
Feb 13 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 Python
Python yield的用法实例分析
Mar 06 Python
使用Django实现把两个模型类的数据聚合在一起
Mar 28 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 Python
python中 logging的使用详解
Oct 25 #Python
python下载文件记录黑名单的实现代码
Oct 24 #Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 #Python
Flask数据库迁移简单介绍
Oct 24 #Python
python里使用正则表达式的组嵌套实例详解
Oct 24 #Python
Scrapy的简单使用教程
Oct 24 #Python
详解python里使用正则表达式的分组命名方式
Oct 24 #Python
You might like
新版PHP极大的增强功能和性能
2006/10/09 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
php全排列递归算法代码
2012/10/09 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
PHP版单点登陆实现方案的实例
2016/11/17 PHP
脚本收藏iframe
2006/07/21 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
2011/11/30 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
Vue实现验证码功能
2019/12/03 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
python k-近邻算法实例分享
2014/06/11 Python
详解Python3中yield生成器的用法
2015/08/20 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
详解python3中的真值测试
2018/08/13 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
django中嵌套的try-except实例
2020/05/21 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
CSS3贝塞尔曲线示例:创建链接悬停动画效果
2020/11/19 HTML / CSS
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
学校安全教育制度
2014/01/31 职场文书
机关保密承诺书
2014/06/03 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python