1. 模块
模块实质上就是一个python文件。它是用来组织代码的,一个xx.py 文件,文件名xx就是模块的名称.
2. 包
包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py
文件。包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果想导入其他目录下的模块,那么这个目录必须是一个包才可以导入。
3. 模块的分类
python 中,模块分为以下几类:
标准模块、标准包
python自带,直接import就能用。比如: string, random, datetime, os, sys, json, hashlib 等第三方模块
别人写好的一些模块,需要安装后才能使用自己写的python 文件
4. 第三方模块安装的方法
- 包管理器安装
python常用的包管理器是pip 和 easy_install。
它们会从PyPI的源里搜索需要安装的模块,找到后自动下载安装。
PyPI 是Python官方的第三方模块仓库,供所有开发者下载或上传代码。主推使用pip,实在没法使用pip,再考虑easy_install,如果easy_install都不好使,那就源码安装
一般的安装方法: pip install xxx
可以指定安装源,pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas
可以设置默认的安装源:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
国内较好的镜像源
豆瓣:https://pypi.douban.com/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
- 离线安装
离线安装时,可以安装.tar.gz 文件或 .whl 文件
.tar.gz 文件的安装
.tar.gz 文件安装,采用源码安装的方式。一般步骤如下:
a、解压这个压缩包
b、进入到这个解压之后的文件夹里面(shift+右键,在此处打开命令行窗口(或者在地址栏中直接输入cmd))
c、在命令行里面运行 python setup.py install
.whl 文件的安装
wheel文件格式本质上是一个zip包格式,它使用.whl作为扩展名。安装.whl 文件的一般步骤如下:
# 示例: windows 下
pip install D:\package\pandas-0.24.2-cp36-cp36m-win32.whl
5. 模块导入
5.1 python 导入模块的顺序
从当前目录下查找需要导入的python文件
- 从python 的环境变量中(sys.path)查找
import sys
print sys.path
# 结果示例
['', 'C:\\Windows\\system32\\python27.zip', 'D:\\Program Files\\python2717\\DLLs', 'D:\\Program Files\\python2717\\lib', 'D:\\Program Files\\python2717\\lib\\plat-win', 'D:\\Program Files\\python2717\\lib\\lib-tk', 'D:\\Program Files\\python2717', 'D:\\Program Files\\python2717\\lib\\site-packages']
路径列表的第一个元素为空字符串,代表的是相对路径下的当前目录.
由于在导入模块的时候,解释器会按照列表的顺序搜索,直到找到第一个模块,所以优先导入的模块为同一目录下的模块.
导入模块时搜索路径的顺序也可以改变.这里分两种情况:
a. 通过sys.path.append(),sys.path.insert()等方法来改变,这种方法当重新启动解释器的时候,原来的设置会失效
import sys
sys.path.append('/home/test/')
# 当把demoa.py 文件放到 sys.path 中的某个环境变量下时,使用 demoa. 就可以看到该模块下的函数、变量等。
b. 改变PYTHONPATH,这种设置方法永久有效
export PYTHONPATH=$PYTHONPATH:/home/test
5.2 导入模块的实质
把对应的python 文件从头到尾执行一次
5.3 模块导入的方法
import module_name
from module_name import xx[,...]
import module_name as xx
5.4 判断系统中是否安装了某个模块
命令行下, import module_name, 若没有报错,说明已安装了模块 module_name
- 函数中判断, 使用
importlib
模块或 内置的__import__()
函数判断.
importlib 和 __import__() 都可以通过过字符串来导入另外一个模块。用法如下:
import importlib
mName = "lib.test"
module = importlib.import_module(mName)
module.getName()
mName = "demo"
module = __import__(mName)
module.getName()