python 包和模块
一、 模块
使用内置函数vars()可以查看当前环境下有哪些对象(变量、函数、类)
from 模块 import *:
不会导入以下划线开头的对象
只会导入__all__中定义了的对象(__all__中的每个元素需要是str类型)
from pprint import PrettyPrinter
pp = PrettyPrinter()
pp.pprint(d) # d是一个变量
二、 包
用来组织和管理模块,将一组模块汇聚到一个共同的包名称下
包是一个(特殊的)文件夹:
文件夹名,符合标识符规范
文件夹下,有一个__init__.py文件
从Python3.3起,包支持隐式命名空间,即,不用创建__init__.py文件。
从包中导入模块和内容:
import 包.模块
from 包 import 模块
from 包.模块import 内容
只能在包下的模块中用(.表示层级: .表示当前目录,..表示上一层,…表示上2层,….表示上3层。层级为.的数量减去1)
from ..模块 import 内容
from ..包 import 模块
from ..包.模块 import 内容
三、 模块搜索规则
搜索顺序,找到之后,就不在找了
sys.modules:记录了我们加载了那些模块,是一个字典类型,如果模块存在于该字典中,则会直接从字典中取得模块对象,而不会去查找。
如果要导入的模块和是Python内置模块同名的,会忽略当前目录中的同名模块,而直接使用内置的模块。
sys.path:记录了Python可以去哪些目录中查找模块和包,是一个列表类型,第一元素为空字符串,表示当前目录。
python中import导入模块时,导入的名称必须和文件名大小写一致。
python 执行代码时,加上参数-B,可以禁用生成缓存字节码(ByteCode)。
四、 包管理工具(pip、conda)
pip:Python官方推荐的包管理工具,Python业界标准的、使用最广泛的包管理工具。
pip的缺陷:pip只能安装Python包,不能添加系统缺少的C、C++依赖库(运行时),pip安装带有C、C++编写的Python包时,默认只能调用和Python版本对应的Microsoft Visual C++编译,否则会出错。
pip命令(见书籍)
conda:第三方推出的包管理工具。conda在系统已经存在的C、C++依赖库(运行时)不能满足程序运行需求时,会自动安装这些依赖库;conda集成了MinGW编译工具,可以直接编译C、C++编写的Python包而无需MS VC++。
conda命令(见补充文档)
五、 虚拟环境
虚拟环境的作用:
创建一个隔离的Python环境,而不是系统已经安装了的Python环境。
一旦激活了虚拟环境:
用Python执行代码,会使用虚拟环境中的特定版本的Python,和系统安装了几个版本的Python无关。
Python代码的执行,只会使用虚拟环境中的库(包和模块)。
使用pip或其他包管理工具安装第三方库时,会直接安装到虚拟环境中。
安装virtualenv:
pip install virtualenv
virtualenv-参数:
-h、--help:查看帮助
--version:查看版本
--no-site-packages:不复制系统包(现已废弃,不起作用了)
-p PYTHON_EXE、--python=PYTHON_EXE:指定Python版本
常用标准用法:
创建-虚拟环境:
virtualenv <环境名> --python=<Python可执行程序路径>
进入(激活)-虚拟环境:
<环境名>\Scripts\activate.bat
退出-虚拟环境:
deactivate
查看当前环境下的Python位置:
import sys
print(sys.executable)
python 包和模块的更多相关文章
- Python 包、模块、函数、变量作用域
Python 项目的组织结构 - 包 -- 模块 --- 类 ---- 函数.变量 Python是利用包和模块来组织一个项目的. 包: 包的物理表现是一个文件夹,但是一个文件夹却不一定是个包, ...
- 关于python包,模块,.pyc文件和文件导入理解
参考文献 一.包 包是一个文件夹,用来存放模块和子包. 包里一般会有一个__init__.py的文件(也可以没有). 包里会有一个__pycache__文件夹,存放.py文件经解释器解释后的中间字节码 ...
- python包与模块
Python基础-包与模块 摘要 为重用以及更好的维护代码,Python使用了模块与包:一个Python文件就是一个模块,包是组织模块的特殊目录(包含__init__.py文件). 模块搜索路径,Py ...
- python包-logging-hashlib-openpyxl模块-深浅拷贝-04
包 包: # 包是一系列模块文件的结合体,表现形式是文件夹,该文件夹内部通常会包含一个__init__.py文件,本质上还是一个模块 包呢,就是前两篇博客中提到的,模块的四种表现形式中的第三种 # 把 ...
- python 包和模块间的引入
##############################总结####################### 主要内容: 1. 模块 2. import 3. from xxx import xxx ...
- python包与模块导入
一 .module 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc&quo ...
- Pycharm 导入 Python 包、模块
1.点击File->settings 2.选择Project Interpreter,点击右边绿色的加号添加包 3.输入你想添加的包名,点击Install Package 4.可以在Pychar ...
- Python(五) 包、模块、函数与变量作用域
一.while循环与使用场景 CONDITION=1 while CONDITION <=5 : CONDITION +=1 print("hello") else: pri ...
- 17.Python略有小成(包,logging模块)
Python(包,logging模块) 一.包 什么是包 官网解释 : 包是一种通过使用'.模块名'来组织python模块名称空间的方式 , 具体来讲 , 包就是一个包含有__ init __.py文 ...
随机推荐
- Ansible 快速部署 Zabbix 4
阅读本文章需要具有Ansible.Zabbix基础.本次教程基于如下环境: CentOS 7.x Zabbix 4.0 Ansible 2.5 服务器初始化 关闭防火墙.selinux,添加epel常 ...
- 剑指offer 3. 链表 从尾到头打印链表
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路:利用栈先进后出的原理,依次把ArrayList的值入栈,再出栈即可逆序 import java.util.Arra ...
- 如何系统学习知识图谱-15年+IT老兵的经验分享
一.前言 就IT而言,胖子哥算是老兵,可以去猝死的年纪,按照IT江湖猿龄的规矩,也算是到了耳顺之年:而就人工智能而言,胖子哥还是新人,很老的新人,深度学习.语音识别.人脸识别,知识图谱,逐个的学习了一 ...
- TCP/IP详解--TCP连接中TIME_WAIT状态过多
TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的.仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT.服务器在处理客户端请 ...
- iframe-父子-兄弟页面相互传值(jq和js两种方法)
参考文章: http://blog.csdn.net/u013299635/article/details/78773207 http://www.cnblogs.com/xyicheng/archi ...
- 长短记忆神经网络LSTM
转载: https://www.jianshu.com/p/dcec3f07d3b5 https://blog.csdn.net/dream_catcher_10/article/details/48 ...
- MySQL导出数据字典
平时用mysql比较多,有时候需要详细的数据库设计表结构和数据字典,但又没有最新的文档,这个时候直接从数据导出是最新最全的.在MySQL数据库中利用information_schema库中的COLUM ...
- 谷歌浏览器内核Cef js代码整理(二) 滚动条
1.隐藏滚动条 document.documentElement.style.overflow = 'hidden';隐藏竖向滚动条:document.documentElement.style.ov ...
- Linux运维人员最常用166个命令汇总
引用自“菜鸟博客” 命令 功能说明 线上查询.帮助命令(2个) man 查看命令帮助,命令词典,更复杂还有info,但不常用. help 查看Linux内置命令的帮助,比如cd等命令. 文件.目录操作 ...
- Vue2.0学习笔记
环境搭建 vue-cli@3 vue-cli@2.X npm i -g @vue/cli 模板语法 文本 <span>Message: {{ msg }}</span> ...