python语言的魅力之一就是大量的外置数据包,能够帮助使用者节省很多时间,提高效率。模块下载和引用是最常见的操作,现在解析内部的原理和背后发生的故事,做到心里有数。

导航:

  • 基本定义
  • 模块使用
  • 模块导入顺序
  • 模块安装

基本定义

模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的Python文件(文件名:test.py,对应的模块名:test)

包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件)

模块分类:

  1. 内置模块
  2. 自定义模块
  3. 第三方模块(需要安装才能使用)

1.内置模块是安装python自带的模块,如random随机数生成模块,为python内置模块。

2.自定义模块指自己开发的模块,通俗讲就是自己写的一个python文件

3.第三方模块是指非python自带的模块,如图像处理模块matplotlib模块,需要先pip install matplotlib

模块使用

python模块的使用有两种方式,分别是import 和from ** import **。

import 导入一个模块

from ** import ** 从模块中导入函数

深层次来说:

import random 是将random模块中所有的代码复制给变量random,random是一个类的实例。

from random import randint 是将randint()函数的代码加载到当前位置

模块导入顺序

当使用import导入一个模块时,导入模块的查找顺序是:

1、系统python类库的缓存

2、当前目录

3、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。

4、如果都找不到,Python会察看python的标准库

 
使用sys.modules能够查看当前系统缓存的模块
 

在sys.path中指定了搜索包的路径以及先后顺序。

从上到下的搜索顺序依次先后。当前目录为/root,所以一个路径为当前目录。图中1 为当前目录,2为环境路径,3为python标准库的路径。

重点关注最后一个路径,这个路径是python标准库文件的路径,所有的安装的模块都放在该路径下。

模块安装

python安装模块可以使用3种方式:

1、模块包

下载模块包,进行解压,进入模块文件夹,执行:
       python setup.py install

2、 easy_install

easy_install moduel

3、pip 方式

pip install moduel

安装的本质就是在pip源中的模块下载到本地,然后搬运到标准库文件的路径下,即/usr/lib/python2.7/dist-packages路径下。
例如:安装一个已经装好的模块pillow,提示信息反馈

可以看到pillow模块已经安装到/uer/lib/python2.7/dist-packages路径下。

通过上面的介绍,能够走通python模块使用的整个流程。pip安装模块到路径下,import模块时去该路径寻找。大概流程示意如下:

python包安装和使用机制的更多相关文章

  1. python包安装

    python包安装: 一种是有网操作:pip install  包名:例子[pip install setuptools] 无网络服务器上操作: 先把包下载:传上去再安装[] 1.一种是   *.wh ...

  2. vs中python包安装教程

    vs安装python很简单,只需要在vs安装包中选择python就可以了,这里使用的python3.7: 如果有了解,都知道安装python包的指令:"pip install xxx&quo ...

  3. python包安装-centos7/windows

    1.修改pip源 临时使用: 可以在使用pip的时候在后面加上-i参数,指定pip源 eg: pip install scrapy -i https://pypi.tuna.tsinghua.edu. ...

  4. Python包安装及使用指南

    这里长期更新一些Python第三方包的安装教程,以及使用教程... Pygame 安装教程: Windows: 首先,查看已安装的Python版本:访问https://www.lfd.uci.edu/ ...

  5. Python包安装过程

    以下是paramiko-1.7.7.1的安装过程,可以看到整个过程分为步,第一步是build,就是拷贝源文件到build文件夹里, F:\VMFiles\tmpFiles\paramiko-1.7.7 ...

  6. 用pip命令把python包安装到指定目录

    sudo pip install transforms3d --target=/usr/local/lib/python2.7/site-packages pip install transforms ...

  7. python 包 安装 加速 pip anaconda

    使用 -i 参数指定源,豆瓣的很快: pip install web.py -i http://pypi.douban.com/simple anaconda: ~/.condarc channels ...

  8. [开发技巧]·如何让离线安装Python包

    [开发技巧]·如何让离线安装Python包 1.问题描述 PyPI(Python Package Index)是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI. ...

  9. Python环境安装及基本概念

    1.安装Python ①官网下载Python包安装 ②添加环境变量(新版Python包可直接添加环境变量) 手动添加环境变量:控制面板-系统-高级系统设置-环境变量-编辑Path添加python安装目 ...

随机推荐

  1. Android 的消息队列模型

    Android 的消息队列模型 Android是参考Windows的消息循环机制来实现Android自身的消息循环的.    Android通过Looper.Handler来实现消息循环机制,Andr ...

  2. 动态控制jQuery easyui datagrid工具栏显示隐藏

    //隐藏第一个按钮 $('div.datagrid-toolbar a').eq(0).hide(); //隐藏第一条分隔线 $('div.datagrid-toolbar div').eq(0).h ...

  3. 201621123050 《Java程序设计》第11周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2. 书面作业 本次PTA作业题集多线程 1. 源代码阅读:多线程程序BounceThread 1.1 BallR ...

  4. Beat冲刺报告---Day0

    Beta阶段报告---Day0 1.需要改进完善的功能   我们上一阶段开发由于开发时间匆忙,对于爬虫耗时的优化没有考虑.优化的空间我在Alpha阶段的总结报告里说过,具体看下图.   这张图显示出爱 ...

  5. 团队作业2:需求分析&原型设计

    Deadline: 2017-11-5  22:00PM,以博客发表日期为准.   评分基准: 按时交 - 有分,检查的项目包括后文的三个方面 需求分析 原型设计 编码规范 晚交 - 0分 迟交两周以 ...

  6. 学号:201621123032 《Java程序设计》第5周学习总结

    1:本周学习总结 1.1: 写出你认为本周学习中比较重要的知识点关键词 接口interface,comparator接口和comparable接口. 1.2:尝试使用思维导图将这些关键词组织起来. 2 ...

  7. 第14、15週PTA題目的處理

    題目1 選擇法排序 1.實驗代碼 #include <stdio.h> #include <stdlib.h> int main() { int n,index,exchang ...

  8. 《深入实践Spring Boot》阅读笔记之三:核心技术源代码分析

    刚关注的朋友,可以回顾前两篇文章: 基础应用开发 分布式应用开发 上篇文章总结了<深入实践Spring Boot>的第二部分,本篇文章总结第三部分,也是最后一部分.这部分主要讲解核心技术的 ...

  9. 集智robot微信公众号开发笔记

    开发流程 公众号基本配置(首先得有公众平台账号) 在开发菜单的基本配置中填写好基本配置项 首先配置服务器地址.Token.和消息加密密钥(地址为开发者为微信验证留的接口.token可以随便填写,只要在 ...

  10. 云+社区技术沙龙:Kafka meetup 深圳站报名开启

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 如果说 2018 年是技术大爆炸年,那么 Apache Kafka 绝对是其中闪亮的新星. 自Kafka 从首发之日起,已经走过了快八个年头 ...