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中urllib模块用法实例详解
Nov 19 Python
python中尾递归用法实例详解
Apr 28 Python
Python的Django中将文件上传至七牛云存储的代码分享
Jun 03 Python
简单谈谈Python中的json与pickle
Jul 19 Python
详解Python循环作用域与闭包
Mar 21 Python
opencv实现简单人脸识别
Feb 19 Python
python匿名函数lambda原理及实例解析
Feb 07 Python
python用pip install时安装失败的一系列问题及解决方法
Feb 24 Python
python使用openpyxl操作excel的方法步骤
May 28 Python
python属于跨平台语言码
Jun 09 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
基于Python实现一个春节倒计时脚本
Jan 22 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使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
JS 类型转换常见方法小结
2010/05/31 Javascript
javascript权威指南 学习笔记之变量作用域分享
2011/09/28 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
AngularJS extend用法详解及实例代码
2016/11/15 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
微信小程序实现分享朋友圈的图片功能示例
2019/01/18 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
JS实现利用闭包判断Dom元素和滚动条的方向示例
2019/08/26 Javascript
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
实例讲解python函数式编程
2014/06/09 Python
Python 常用string函数详解
2016/05/30 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
python如何删除文件、目录
2020/06/23 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
canvas 绘图时位置偏离的问题解决
2020/09/16 HTML / CSS
给排水工程师岗位职责
2013/11/21 职场文书
小学生新学期寄语
2014/01/19 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
入党自我鉴定
2014/03/25 职场文书
初中班主任寄语
2014/04/04 职场文书
绿色环保口号
2014/06/12 职场文书
法制宣传标语集锦
2014/06/25 职场文书
公司的门卫岗位职责
2014/09/09 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers