Python模块搜索及模块安装

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的四种文件类型

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

搜索路径

比如说: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就可以管理科学计算模块,可惜很多需要收费)

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

时间: 2024-12-16 11:45:45

Python模块搜索及模块安装的相关文章

Python 安装模块 & 模块搜索路径

1.1   安装模块 1.1.1   安装第三方模块 第三方库都会在Python官方的pypi.python.org网站注册,要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索,比如Pillow的名称叫Pillow pip install Pillow 1.1.2   模块搜索路径 当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错: >>> import mymodule Traceback (most recent c

python模块搜索路径

1.电脑版 (1).python安装目录中\Lib\site-packages\下建立*.pth文件,写入模块路径 (2).添加环境变量:变量名:pythonpath;变量值:模块(文件夹)路径 ,若有多个,用半角分号";"隔开 2.手机版 在resource\site.py文件中添加代码段 import syssys.path.append("模块(文件夹)路径") 发现:第一个参数都是C:\\resource 我的理解: 程序安装盘下的site.py指定模块路径

Python 模块化 模块搜索顺序、重复导入、模块加载列表(五)

模块搜索顺序.重复导入.模块加载列表 0x00 模块搜索顺序: 举例: #test.py import sys for p in sys.path: print(p) 运行结果: C:\python //pycharm环境中的Add content roots to PYTHONPATH C:\python //脚本所在目录 C:\Users\ihoney\AppData\Local\Programs\Python\Python35\python35.zip //打包,java扎包,避免大量小文

Python学习笔记十_模块、第三方模块安装、模块导入

一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件.包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果想到如其他目录下的模块,那么这个目录必须是一个包才可以导入. 二.模块分类 1.标准模块.标准包 python自带的这些模块,直接import就能用的 import

Python学习:9.模块的安装以及调用模块

什么是模块 在Python中,模块其实也就是包含python代码的文件,我们为什么要使用模块?在我们以后写代码的时候,我们会发现有很多功能需要经常使用,那我们想要使用这些功能怎么办,要再把那些代码在敲一遍吗,这样不但增加了代码量,还浪费了时间,有人说我们可以写在函数里,是的,我们可以把一些功能写在函数里,使用的时候调用函数就行了,但是我们每次新建一个文件的时候,都需要再次将那些功能函数写一遍,还是有些麻烦,这时候,模块的便捷就体现出来了,我们将大量功能函数写在一个py文件里,当我们需要用到部分功

Python 安装第三方库,模块和包的安装方法

在python中已经内置了很多的有用的模块,只要安装了python的开发工具,这些模块就可以立刻使用了.而在实际python开发的过程中,除了python内置的模块外,python还有大量的第三方的库.模块和包. 常用的第三模块都会在python的PyPI - the Python Package Index上进行注册,只要找到对应模块的名字就可以进行安装了. 由于最近需要通过python来创建PDF文档,但是由于python的内置模块中相关的模块,所以需要使用第三方的reportlab库来创建

Python中模块的发布与安装

模块(Module) Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块.通俗的来说,模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块. 导入模块 import: 引入具体模块,可以一次性引入多个模块,使用逗号隔开即可 eg:import modlue1,module2,module3,.....moduleN ,   使用模块中的函

python在Ubuntu添加模块搜索路径

本文我们来分享python添加模块搜索路径的3个方法,另外不补充了篇"为Python添加默认模块搜索路径". 大约有这么几种方法: 1.添加环境变量PYTHONPATH,python会添加此路径下的模块,在.bashrc文件中添加如下类似行: export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages 2.在site-packages路径下添加一个路径配置文件,文件的扩展名为.pth,内容为要添加的路径即可

python模块paramiko与ssh安装配置教程

一.paramiko模块的安装 paramiko模块依赖PyCrypto模块,而PyCrypto需要GCC库编译,不过一般发行版的源里带有该模块.这里以centos6为例,直接借助以下命令可以直接完成安装:  代码如下 复制代码 # yum install gcc python-crypto python-paramiko python-devel  -y   windows版下可以安装windows版的GCC(MinGW),然后编辑安装pycrypto和paramiko ,下载安成后,直接运行