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读取MRI并显示为灰度图像实例代码
Jan 03 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 Python
不管你的Python报什么错,用这个模块就能正常运行
Sep 14 Python
基于Python新建用户并产生随机密码过程解析
Oct 08 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
Python 抓取数据存储到Redis中的操作
Jul 16 Python
Python使用正则表达式实现爬虫数据抽取
Aug 17 Python
python中K-means算法基础知识点
Jan 25 Python
Python入门之使用pandas分析excel数据
May 12 Python
Flask response响应的具体使用
Jul 15 Python
如何利用Python实现n*n螺旋矩阵
Jan 18 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
64位windows系统下安装Memcache缓存
2015/12/06 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
jquery如何根据值设置默认的选中项
2014/03/17 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
Python OpenCV实现测量图片物体宽度
2020/05/27 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
医院工作检讨书范文
2014/02/10 职场文书
12月红领巾广播稿
2014/02/13 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
紧急迫降观后感
2015/06/15 职场文书
倡议书怎么写?
2019/04/11 职场文书
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL