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 相关文章推荐
Django如何实现内容缓存示例详解
Sep 24 Python
Python中enumerate函数代码解析
Oct 31 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
Dec 18 Python
python中的字典操作及字典函数
Jan 03 Python
Python生成器定义与简单用法实例分析
Apr 30 Python
python实现多层感知器MLP(基于双月数据集)
Jan 18 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
python中如何实现将数据分成训练集与测试集的方法
Sep 13 Python
python enumerate内置函数用法总结
Jan 07 Python
python中函数返回多个结果的实例方法
Dec 16 Python
python 如何执行控制台命令与操作剪切板
May 20 Python
python blinker 信号库
May 04 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密码生成类实例
2014/09/24 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
2017/02/05 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
Javascript window对象详解
2014/11/12 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
AngularJS双向绑定和依赖反转实例详解
2017/04/15 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
Python制作爬虫采集小说
2015/10/25 Python
python中的计时器timeit的使用方法
2017/10/20 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
关于VPN
2012/06/10 面试题
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
勤俭节约主题班会
2015/08/13 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
Redis入门基础常用操作命令整理
2022/06/01 Redis