一、模块
每一个以扩展名 py 结尾额 python 源代码文件都是一个模块模块名 同样也是一个标识符,需要符合标识符的命名规则在模块中定义的 全局变量、函数、类 都是提供给外接直接使用的工具 模块的两种导入方式
1)import 导入
1
|
import 模块名 1 ,模块名 2
|
或
1
2
|
import 模块名 1
import 模块名 2
|
导入之后
- 通过 模块名. 使用 模块提供的工具——全局变量、函数、类
使用 as 指定模块的别名
1
|
import 模块名 1 as 模块别名
|
注意:模块别名应该 符合 大驼峰命名法
2)from…import 导入
- 如果希望从某一个模块中,导入 部分工具,就可以使用 from … import 的方式
- import 模块名 是一次性把模块中 所有工具全部导入,并且通过 模块名/别名 访问
1
2
|
# 从模块 导入 某一个工具
from 模块 1 import 工具名
|
导入之后
- 不需要通过 模块名.
- 可以直接使用 模块提供的工具——全局变量、函数、类
注意:
如果 两个模块,存在同名的函数,那么后导入模块的函数,会覆盖掉先导入的函数
- 如果代码冲突,可以使用 as 关键 给其中一个模块起一个别名
from…import * (不推荐使用)
1
2
|
# 从模块 导入 所有工具
from 模块名 1 import *
|
二、模块的搜索顺序
python 的解释器在 导入模块时,会:
1.搜索 当前目录 指定模块名的文件,如果有就直接导入
2.如果没有,再搜索 系统目录
注意:在给文件起名时,不要和系统的模块文件 重名
python 中每一个模块都有一个内置属性 __file__ 可以查看模块的 完整路径
三、使模块下方的测试代码在导入时不会执行
- 在导入文件时,文件中所有没有任何缩进的代码 都会被执行一遍
__name__属性
- __name__属性 可以做到,测试模块的代码只在测试情况下被运行,而在被导入时不会被执行
- __name__ 是 python 的一个内置属性,记录着一个字符串
- 如果 是被其他文件导入的,__name__就是 模块名
- 如果是当前执行的程序 __name__是 __main__
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 导入模块
# 定义全局变量
# 定义类
# 定义函数
# 在代码的最下方
def main():
# ...
pass
# 根据 __name__判断是否执行下方代码
if __name__ = = '__main__' :
main()
|
四、包
- 包是一个 包含多个模块的 特殊目录目录
- 下有一个 特殊的文件 __init__.py
- 使用 import 包名 可以一次性导入 包 中所有的模块
__init__.py
- 要在外界使用 包 中的模块,需要在 __init__.py 中指定 对外界提供的模块列表
1
2
3
|
# 从 当前目录 导入 模块列表
from . import 模块名
from . import 模块名
|
例如:
五、发布模块
制作发布压缩包步骤
1)创建 setup.py
setup.py 的文件
1
2
3
4
5
6
7
8
9
10
11
|
from distutils.core import setup
setup(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" ]) # 包中的模块
|
有关字典参数的详细信息,可以参阅官方网站:
先cd到setup.py 所在的目录 ,通过 ls -l 命令 可以看到有以下几个文件
2)构建模块
1
|
python3 setup.py build
|
通过 tree
命令可以看到当前目录结构
如果没有 tree 命令,可以通过以下操作,安装
1
|
sudo apt - get install tree
|
使用 tree
命令 后会看到
使用 python3 setup.py build
命令 生成的 build 文件夹中的内容
3)生成发布压缩包
1
|
python3 setup.py sdist
|
六、安装模块
1
2
3
|
tar - zxvf 包名 - 1.0 .tar.gz
sudo 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 对安装的模块进行测试
七、卸载模块
直接从安装目录下,把安装模块的目录 删除就可以
1
2
3
|
cd / usr / local / lib / python3. 6 / dist - package /
sudo rm - r vvcat_package *
|
根据以上两条命令进行如下操作:
先查看模块 安装的目录
1
2
|
# __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 包的查找、下载、安装、卸载等功能
安装和卸载命令如下:
1
2
3
|
# 将模块安装到 python 3.x 环境
sudo pip3 install pygame
sudo pip3 uninstall pygame
|
在 mac 下安装 ipython
1
|
sudo pip install ipython
|
在 linux 下安装 ipython
1
|
sudo apt install ipython3
|
到此这篇关于pyhton模块和包相关知识总结的文章就介绍到这了,更多相关pyhton模块和包内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_44989881/article/details/116600149