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中列表(list)操作方法汇总
Aug 18 Python
Python实现的检测web服务器健康状况的小程序
Sep 17 Python
python使用json序列化datetime类型实例解析
Feb 11 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python3 下载网络图片代码实例
Aug 27 Python
python 实现多线程下载视频的代码
Nov 15 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
python re模块匹配贪婪和非贪婪模式详解
Feb 11 Python
解决django FileFIELD的编码问题
Mar 30 Python
python 等差数列末项计算方式
May 03 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
Sep 16 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中文件缓存转内存缓存的方法
2011/12/06 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
2020/06/02 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
详解python中的json的基本使用方法
2016/12/21 Python
Python中的命令行参数解析工具之docopt详解
2017/03/27 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
Python给图像添加噪声具体操作
2019/03/03 Python
python print出共轭复数的方法详解
2019/06/25 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
html5使用canvas实现图片下载功能的示例代码
2017/08/26 HTML / CSS
HTML5验证以及日期显示的实现详解
2013/07/05 HTML / CSS
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
中专药剂专业应届毕的自我评价
2013/12/27 职场文书
违反学校规定检讨书
2014/01/18 职场文书
地质灾害防治方案
2014/05/14 职场文书
爱的承诺书
2015/01/20 职场文书
初中班主任工作随笔
2015/08/15 职场文书
优质护理心得体会
2016/01/22 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书
公司年会主持词范文!
2019/05/07 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL