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实现简单ftp客户端的方法
Jun 28 Python
python多线程方式执行多个bat代码
Jun 07 Python
Python类属性的延迟计算
Oct 22 Python
python实现树形打印目录结构
Mar 29 Python
使用python读取txt文件的内容,并删除重复的行数方法
Apr 18 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
python 使用值来排序一个字典的方法
Nov 16 Python
将python文件打包成EXE应用程序的方法
May 22 Python
python3 实现调用串口功能
Dec 26 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
python实现将中文日期转换为数字日期
Jul 14 Python
Python基于Serializer实现字段验证及序列化
Nov 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
2021年最新CPU天梯图
2021/03/04 数码科技
最简单的PHP程序--记数器
2006/10/09 PHP
模仿OSO的论坛(五)
2006/10/09 PHP
php操作mongoDB实例分析
2014/12/29 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
改善用户体验的五款jQuery插件分享
2011/05/22 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
python文件和目录操作函数小结
2014/07/11 Python
仅用50行Python代码实现一个简单的代理服务器
2015/04/08 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
Django框架模板的使用方法示例
2019/05/25 Python
Apache部署Django项目图文详解
2019/07/30 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
会计电算化专业自荐信
2014/03/15 职场文书
大学生社会实践自我鉴定
2014/03/24 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
党员心得体会范文2016
2016/01/23 职场文书
Python+Matplotlib+LaTeX玩转数学公式
2022/02/24 Python
centos7安装mysql5.7经验记录
2022/05/02 Servers
Sentry的安装、配置、使用教程(Sentry日志手机系统)
2022/07/23 Python
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技