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实现读取命令行参数的方法
May 22 Python
python中list常用操作实例详解
Jun 03 Python
wxpython中自定义事件的实现与使用方法分析
Jul 21 Python
Python多层装饰器用法实例分析
Feb 09 Python
python顺序的读取文件夹下名称有序的文件方法
Jul 11 Python
python实现机器学习之多元线性回归
Sep 06 Python
使用50行Python代码从零开始实现一个AI平衡小游戏
Nov 21 Python
python中正则表达式与模式匹配
May 07 Python
python爬虫实现中英翻译词典
Jun 25 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
基于python修改srt字幕的时间轴
Feb 03 Python
selenium3.0+python之环境搭建的方法步骤
Feb 01 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的反射机制
2016/12/15 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
thinkPHP框架中执行原生SQL语句的方法
2017/10/25 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
myeclipse安装jQuery插件的方法
2011/03/29 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
python过滤字符串中不属于指定集合中字符的类实例
2015/06/30 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
Python中static相关知识小结
2018/01/02 Python
Django 模型类(models.py)的定义详解
2019/07/19 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
毕业生大学生活自我总结
2014/01/31 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
中秋节主持词
2014/04/02 职场文书
初一学生期末评语
2014/04/24 职场文书
毕业评语大全
2014/05/04 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
2014预防青少年违法犯罪工作总结
2014/12/10 职场文书
小学运动会开幕词
2016/03/04 职场文书
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL