Python模块搜索概念介绍及模块安装方法介绍


Posted in Python onJune 03, 2015

【import模块】

和C中的#include不同,Python中的import语句并不是简单的把一个文件插入另外一个文件。
导入其实是运行时的运算,程序第一次导入指定文件时,会执行以下步骤,

1. 找到模块文件
2. 编译成位码
3. 执行模块中的代码来创建所定义的模块

并生成.pyc字节码文件,这三个步骤只在程序执行时,模块第一次导入时会进行。之后导入相同的模块时,会跳过这三个步骤,而只提取内存中已加载的模块对象,速度要快的多。
NOTE:

1. Python把已加载的模块放在内置的sys.modules字典中,在import操作开始时会确认引用的模块是否已加载。如果想看哪些模块已加载,可以导入sys,打印sys.modules.keys()

>>> sys.modules.keys()  

['heapq', 'functools', 'pyreadline.console.ansi',...,'pyreadline.modes'] 

2. 可以import的四种文件类型

1.源文件(.py)
2.字节码文件(.pyc)
3.C扩展文件(Windows: .dll或.pyd文件 | Linux: .so文件)
4.相同变量名的目录(用于包导入)

【搜索路径】

比如说:import math,不需要加路径和后缀名,系统会自动搜索路径,按照搜索先后顺序,列出模块搜索路径.

1. 程序的主目录(程序当前运行的目录)
2. PYTHONPATH目录(在环境变量里面配置与加到Path中一样)
3. 标准库目录(比如说: C:\Python27\Lib)
4. .pth文件所在内容(一般放在Lib\site-packages目录下,如下:easy-install.pth)

import sys; sys.__plen = len(sys.path)  

./setuptools-0.6c11-py2.7.egg  

./py-1.4.26-py2.7.egg  

./sphinx-1.3b1-py2.7.egg  

./colorama-0.3.2-py2.7.egg  

./babel-1.3-py2.7.egg  

./snowballstemmer-1.2.0-py2.7.egg  

./docutils-0.12-py2.7.egg  

./pygments-2.0.1-py2.7.egg  

./jinja2-2.7.3-py2.7.egg  

./six-1.8.0-py2.7.egg  

./pytz-2014.9-py2.7.egg  

./markupsafe-0.23-py2.7.egg  

./pyzmq-14.4.1-py2.7-win-amd64.egg  

./tornado-4.0.2-py2.7-win-amd64.egg  

./backports.ssl_match_hostname-3.4.0.2-py2.7.egg  

./certifi-14.05.14-py2.7.egg  

./egg-0.2.0-py2.7.egg  

./chicken-0.1.0-py2.7.egg  

import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new) 

而所有这些路径可以通过sys.path来看到

>>> import sys  

>>> sys.path  

['', 'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg', ...,'C:\\Python27\\lib\\site-packages\\wx-3.0-msw'] 

临时的工作路径加载,可以用
>>> sys.path.append('d:\\test')  

>>> sys.path  

['', 'C:\\Python27\\lib\\site-packages\\setuptools-0.6c11-py2.7.egg', 'C:\\Python27\\lib\\, 'd:\\test']  

>>> sys.path.remove('d:\\test') 

【模块安装】

但上面的方法只是临时性的,一旦退出程序或当前交互环境,就失效。要想永久生效就必须让其加入到上述目录中
Perl的强大在于CPAN,可喜的是,Python也开始有类似的技术及功能,比如说pip,可以用包括pip来安装模块。

1. 自写模块,直接拷贝到上述任意目录
2. 第三方模块,执行python setup.py install安装
3. 用easy_install安装

下载ez_setup.py文件
执行: python ez_setup.py
安装所要安装的模块: easy_install py

4. 用pip安装

先用easy_install pip命令来安装pip
再用pip install Markdown来安装具体模块,假设模块名为: Markdown

5. 用第三方模块管理库(比如说Canopy就可以管理科学计算模块,可惜很多需要收费)

Python模块搜索概念介绍及模块安装方法介绍

用此工具,就可以安装ipython环境了

Python模块搜索概念介绍及模块安装方法介绍

Python 相关文章推荐
python中xrange用法分析
Apr 15 Python
Python写的一个简单监控系统
Jun 19 Python
python入门基础之用户输入与模块初认识
Nov 14 Python
Python通过matplotlib绘制动画简单实例
Dec 13 Python
使用pandas中的DataFrame数据绘制柱状图的方法
Apr 10 Python
Python实现的质因式分解算法示例
May 03 Python
从django的中间件直接返回请求的方法
May 30 Python
Python中的异常处理try/except/finally/raise用法分析
Feb 28 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
logging level级别介绍
Feb 21 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
从np.random.normal()到正态分布的拟合操作
Jun 02 Python
Python使用ftplib实现简易FTP客户端的方法
Jun 03 #Python
Python中的深拷贝和浅拷贝详解
Jun 03 #Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 #Python
python处理二进制数据的方法
Jun 03 #Python
Python读写配置文件的方法
Jun 03 #Python
python操作ssh实现服务器日志下载的方法
Jun 03 #Python
Python实现建立SSH连接的方法
Jun 03 #Python
You might like
域名查询代码公布
2006/10/09 PHP
可以在线执行PHP代码包装修正版
2008/03/15 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
php实现的http请求封装示例
2016/11/08 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
jQuery图片轮播(二)利用构造函数和原型创建对象以实现继承
2016/12/06 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
2017/02/08 Javascript
JS实现可切换图片的幻灯切换效果示例
2019/05/24 Javascript
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
简单了解python协程的相关知识
2019/08/31 Python
python随机生成库faker库api实例详解
2019/11/28 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
乐观大学生的自我评价
2014/01/10 职场文书
JAVA程序员自荐书
2014/01/30 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
销售开票员岗位职责
2015/04/15 职场文书
九年级语文教学反思
2016/03/03 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书
Python OpenCV 图像平移的实现示例
2021/06/04 Python