Python模块搜索及模块安装
【import模块】 和C中的#include不同,Python中的import语句并不是简单的把1个文件插入另外1个文件。 导入实际上是运行时的运算,程序第1次导入指定文件时,会履行以下步骤, 1. 找到模块文件 2. 编译成位码 3. 履行模块中的代码来创建所定义的模块 并生成.pyc字节码文件,这3个步骤只在程序履行时,模块第1次导入时会进行。以后导入相同的模块时,会跳过这3个步骤,而只提取内存中已加载的模块对象,速度要快的多。 NOTE: 1. Python把已加载的模块放在内置的sys.modules字典中,在import操作开始时会确认援用的模块是不是已加载。如果想看哪些模块已加载,可以导入sys,打印sys.modules.keys()
>>> sys.modules.keys()
['heapq','functools','pyreadline.console.ansi',...,'pyreadline.modes']
2. 可以import的4种文件类型
比如说:import math,不需要加路径和后缀名,系统会自动搜索路径,依照搜索前后顺序,列出模块搜索路径. 1. 程序的主目录(程序当前运行的目录) 2. PYTHONPATH目录(在环境变量里面配置与加到Path中1样) 3. 标准库目录(比如说: C:Python27Lib) 4. .pth文件所在内容(1般放在Libsite-packages目录下,以下:easy-install.pth)
import sys; sys.__plen = len(sys.path)
./setuptools-0.6c11-py2.7.egg
./py⑴.4.26-py2.7.egg
./sphinx⑴.3b1-py2.7.egg
./colorama-0.3.2-py2.7.egg
./babel⑴.3-py2.7.egg
./snowballstemmer⑴.2.0-py2.7.egg
./docutils-0.12-py2.7.egg
./pygments⑵.0.1-py2.7.egg
./jinja2⑵.7.3-py2.7.egg
./six⑴.8.0-py2.7.egg
./pytz⑵014.9-py2.7.egg
./markupsafe-0.23-py2.7.egg
./pyzmq⑴4.4.1-py2.7-win-amd64.egg
./tornado⑷.0.2-py2.7-win-amd64.egg
./backports.ssl_match_hostname⑶.4.0.2-py2.7.egg
./certifi⑴4.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:Python27libsite-packagessetuptools-0.6c11-py2.7.egg','C:Python27libsite-packageswx⑶.0-msw']
临时的工作路径加载,可以用 >>> sys.path.append('d: est')
>>> sys.path
['','C:Python27lib,'d: est']
>>> sys.path.remove('d: est')
【模块安装】 但上面的方法只是临时性的,1旦退出程序或当前交互环境,就失效。要想永久生效就必须让其加入到上述目录中Perl的强大在于CPAN,可喜的是,Python也开始有类似的技术及功能,比如说pip,可以用包括pip来安装模块。 1. 自写模块,直接拷贝到上述任意目录 2. 第3方模块,履行python setup.py install安装 3. 用easy_install安装
4. 用pip安装
5. 用第3方模块管理库(比如说Canopy就能够管理科学计算模块,惋惜很多需要收费)
用此工具,就能够安装ipython环境了
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |