Pyhton 模块和包
模块
- 每一个以扩展名 py 结尾额 Python 源代码文件都是一个模块
- 模块名 同样也是一个标识符,需要符合标识符的命名规则
- 在模块中定义的 全局变量、函数、类 都是提供给外接直接使用的工具
模块的两种导入方式
1)import 导入
import 模块名1,模块名2
或
import 模块名1
import 模块名2
- 导入之后
- 通过 模块名. 使用 模块提供的工具——全局变量、函数、类
使用 as 指定模块的别名
import 模块名1 as 模块别名
注意:模块别名应该 符合 大驼峰命名法
2)from…import 导入
- 如果希望从某一个模块中,导入 部分工具,就可以使用 from … import 的方式
- import 模块名 是一次性把模块中 所有工具全部导入,并且通过 模块名/别名 访问
# 从模块 导入 某一个工具
from 模块1 import 工具名
- 导入之后
- 不需要通过 模块名.
- 可以直接使用 模块提供的工具——全局变量、函数、类
注意:
如果 两个模块,存在同名的函数,那么后导入模块的函数,会覆盖掉先导入的函数
- 如果代码冲突,可以使用 as 关键 给其中一个模块起一个别名
from…import * (不推荐使用)
# 从模块 导入 所有工具
from 模块名1 import *
模块的搜索顺序
Python 的解释器在 导入模块时,会:
- 搜索 当前目录 指定模块名的文件,如果有就直接导入
- 如果没有,再搜索 系统目录
注意:在给文件起名时,不要和系统的模块文件 重名
Python 中每一个模块都有一个内置属性 __file__ 可以查看模块的 完整路径
使模块下方的测试代码在导入时不会执行
- 在导入文件时,文件中所有没有任何缩进的代码 都会被执行一遍
__name__属性
- __name__属性 可以做到,测试模块的代码只在测试情况下被运行,而在被导入时不会被执行
- __name__ 是 Python 的一个内置属性,记录着一个字符串
- 如果 是被其他文件导入的,__name__就是 模块名
- 如果是当前执行的程序 __name__是 __main__
示例:
# 导入模块
# 定义全局变量
# 定义类
# 定义函数# 在代码的最下方
def main():# ...pass# 根据 __name__判断是否执行下方代码
if __name__ == '__main__':main()
包
- 包是一个 包含多个模块的 特殊目录
- 目录下有一个 特殊的文件 __init__.py
- 使用 import 包名 可以一次性导入 包 中所有的模块
__init__.py
- 要在外界使用 包 中的模块,需要在 __init__.py 中指定 对外界提供的模块列表
# 从 当前目录 导入 模块列表
from . import 模块名
from . import 模块名
例如:
发布模块
制作发布压缩包步骤
1)创建 setup.py
- setup.py 的文件
from distutils.core import setupsetup(name="vvcat_package", # 包名version="1.0", # 版本description="用来测试", # 描述信息long_description="用来测试如何发布压缩包", # 完整描述信息author="vvcat", # 作者author_email="206647497@qq.com", #作者邮箱url="https://blog.csdn.net/qq_44989881?t=1", # 主页py_modules=["vvcat_package.test1", "vvcat_package.test2"]) # 包中的模块
有关字典参数的详细信息,可以参阅官方网站:
https://docs.python.org/2/distutils/apiref.html
先cd到setup.py 所在的目录 ,通过 ls -l 命令 可以看到有以下几个文件
2)构建模块
python3 setup.py build
通过 tree
命令可以看到当前目录结构
如果没有 tree 命令,可以通过以下操作,安装
sudo apt-get install tree
使用 tree
命令 后会看到
使用 python3 setup.py build
命令 生成的 build 文件夹中的内容
3)生成发布压缩包
python3 setup.py sdist
安装模块
tar -zxvf 包名-1.0.tar.gzsudo python3 setup.py install
使用 tar -zxvf vvcat_package-1.0.tar.gz 命令后
会出现 vvcat_package-1.0文件夹
vvcat_package-1.0文件夹中的内容
使用 cat PKG-INFO
命令可以查看到 PKG-INFO文件中的内容
使用 sudo python3 setup.py install
命令安装vvcat_package模块
查看 vvcat_package模块安装后所在的目录,会看到以下几个文件:
vvcat_package vvcat_package-1.0.egg-info
通过 ipython3 对安装的模块进行测试
卸载模块
直接从安装目录下,把安装模块的目录 删除就可以
cd /usr/local/lib/python3.6/dist-package/sudo rm -r vvcat_package*
根据以上两条命令进行如下操作:
先查看模块 安装的目录
# __file__ 用来查看模块所在的目录
vvcat_package.__file__
通过 cd 命令 到 dist-packages 目录下
最后使用 sudo rm -r vvcat_package*
命令便可以卸载掉 安装的 vvcat_package模块
以下是删除后只剩下 vvcat_package-1.0.egg-info 文件
当再次使用 ipython3 调用该模块时,会显示没有该模块。
pip 安装第三方模块
- pip 是一个现代的,通用的 Python 包管理工具
- 提供了对 Python 包的查找、下载、安装、卸载等功能
安装和卸载命令如下:
# 将模块安装到 Python 3.x 环境
sudo pip3 install pygame
sudo pip3 uninstall pygame
在 Mac 下安装 iPython
sudo pip install ipython
在 Linux 下安装 iPython
sudo apt install ipython3
Pyhton 模块和包相关推荐
- Python模块和包-你还在全部写成一坨吗?
文章目录 模块 Python模块 导入模块 查找模块 模块编译 包 Python包 包的导入 内嵌包 在使用Python开发程序时,如果是比较复杂的功能,可以把功能分成几个部分,则需要用到Python ...
- python笔记6 模块与包 程序开发规范 包 re sys time os模块
模块与包 python 模块首引用加载到内存,如果再次引用此模块,直接从内存中读取. python文件分为:执行文件(解释器运行的文件),被引用文件(import) 模块引用一共发生了3件事: 1.他 ...
- python之路——模块和包
一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编 ...
- Python中的类、模块和包究竟是什么?
Python培训教程:Python中的类.模块和包究竟是什么?在Python和其他编程语言中,都有类似或相同的概念,如对象.类.模块.包,名称都是一样的,只不过会有细微的一些区别,正是因为有这些存在, ...
- python模块和包用法详解(__all__)
1. 模块 Python 模块(Module),是⼀个 Python ⽂件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块能定义函数,类和变 ...
- python类、模块、包
通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块.包目录下为首的一个文件便是 __init__.py.然后是一些模块文件和子目录,假如子目录中也有 _ ...
- python入门是哪个包_python入门(十):模块、包
模块:py文件 包:目录,目录里面包含__init__.py,内容可以是空 里面可以包含多个模块文件,还可以包含子包 1.模块和包,可以很方便的提供给其他程序以复用 1) 利于组织复杂工程 我们写代码 ...
- python哪里下载import包-【Python实战】模块和包导入详解(import)
1.模块(module) 1.1 模块定义 通常模块为一个.py文件,其他可作为module的文件类型还有".pyo".".pyc".".pyd&qu ...
- python哪里下载import包-详解python中的模块及包导入
python中的导入关键字:import 以及from import 1.import import一般用于导入包以及模块. 不过有个小问题: (1)当导入的是模块的时候是可以直接可以使用模块内的函数 ...
最新文章
- 从产品经理向人工智能产品经理进阶 | 机器学习必备知识
- 【IT职场生存手册】他山之石,可以攻玉【51CTO技术论坛】
- 【Android 逆向】ELF 文件格式 ( ELF 文件头 | ELF 文件头标志 | ELF 文件位数 | ELF 文件大小端格式 )
- windows mysql is read only_mysql中Table is read only错误解决方法(转载)
- matlab读取其他位置,将文件的数据读取到matlab中,进行编辑,然后将其保存到其他位置...
- JEECG商业版本授权说明(仅限企业用户)
- 8 MM配置-主数据-定义行业部门和具体行业部门字段选择
- mongodb更新操作符$inc,$mul
- visual studio 容器工具首次加载太慢 vsdbg\vs2017u5 exists, deleting 的解决方案
- 这款游戏玩法是Low了点,但赚的却是实打实的EOS。
- 操作系统学习之GCC内联汇编
- 由《速7》谈起 付费将成互联网主流?
- 通过一个工具类更深入理解动态代理和Threadlocal
- 米家 智能 服务器,为什么一谈到智能家居 都是小米米家?
- 复杂网络盘传播搜索关键字
- 人人互动直播之Swoole通讯服务重启教程
- 国外问卷调查所需准备
- 国内外php主流开源cms、SNS、DIGG、RSS、Wiki汇总
- python --- 常见题目 2019.01.03
- 网传阿里要裁员2万人,附我的一些思考!