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基于time模块求程序运行时间的方法
Sep 18 Python
matplotlib中legend位置调整解析
Dec 19 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
python字典的遍历3种方法详解
Aug 10 Python
通过实例学习Python Excel操作
Jan 06 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
Django分组聚合查询实例分享
Apr 29 Python
pycharm 2018 激活码及破解补丁激活方式
Sep 21 Python
Python eval函数介绍及用法
Nov 09 Python
Python基于template实现字符串替换
Nov 27 Python
通用的Django注册功能模块实现方法
Feb 05 Python
python使用pygame创建精灵Sprite
Apr 06 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
PHP开发大型项目的一点经验
2006/10/09 PHP
header()函数使用说明
2006/11/23 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
js实现倒计时及时间对象
2016/11/15 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
python实现抖音点赞功能
2019/04/07 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
快速了解Python开发环境Spyder
2020/06/29 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
三星法国官方网站:Samsung法国
2019/10/31 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
英国著名药妆店:Superdrug
2021/02/13 全球购物
文秘专业大学生求职信
2013/11/10 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书