【Python基础】 模块和包的创建及使用(windows 下制作和发布压缩包超详细)

news2024/10/7 3:52:57

00

模块和包的创建及使用

  • 1.模块
    • 1.1模块的概念
    • 1.2 模块的两种导入方式
    • 1.3 模块的搜索顺序[扩展]
    • 1.4 原则—— 每一个文件都应该是可以被导入的
  • 2.Package-包
    • 2.1制作和发布压缩包
    • 2.2包的安装

1.模块

1.1模块的概念

模块是Python 程序架构的一个核心概念
• 每一个以扩展名py 结尾的Python 源代码文件都是一个 模块
• 模块名 同样也是一个 标识符,需要符合标识符的命名规则
• 在模块中定义的 全局变量 、函数、类 都是提供给外界直接使用的 工具
• 模块 就好比是 工具包,要想使用这个工具包中的工具,就需要先 导入 这个模块

1.2 模块的两种导入方式

  • import 导入
    import 模块名 1, 模块名 2
    提示:在导入模块时,每个导入应该独占一行
    import 模块名 1
    import 模块名 2

  • 导入之后
    过模块名. 使用 模块提供的工具 —— 全局变量、函数、类

  • 使用案例
    01
    首先定义好模块,模块也是一个.py文件,而后通过导包使用:

02
取别名+调用模块的相关参数

  • 使用as 指定模块的别名
    如果模块的名字太长,可以使用as 指定模块的名称,以方便在代码中的使用
    import 模块名 1 as 模块别名
    注意:模块别名 应该符合 大驼峰命名法

  • from…import 导入
    • 如果希望 从某一个模块 中,导入 部分 工具,就可以使用from … import 的方式
    • import 模块名是 一次性 把模块中 所有工具全部导入,并且通过 模块名/别名访问
    从 模块 导入 某一个工具
    from 模块名 1 import 工具名
    • 导入之后
    – 不需要 通过模块名.
    – 可以直接使用 模块提供的工具 —— 全局变量、函数、类
    03
    使用函数时不需要加前缀+.的方式 可以直接使用

  • 注意
    如果 两个模块,存在 同名的函数,那么 后导入模块的函数,会 覆盖掉先导入的函数
    • 开发时import 代码应该统一写在 代码的顶部,更容易及时发现冲突
    • 一旦发现冲突,可以使用as 关键字 给其中一个工具起一个别名

1.3 模块的搜索顺序[扩展]

Python 的解释器在 导入模块 时,会:
1 搜索 当前目录 指定模块名的文件,如果有就直接导入
2 如果没有,再搜索 系统目录
在开发时,给文件起名,不要和系统的模块文件重名

Python 中每一个模块都有一个内置属性 file 可以 查看模块 的 完整路径

1.4 原则—— 每一个文件都应该是可以被导入的

• 一个 独立的Python 文件 就是一个 模块
• 在导入文件时,文件中 所有没有任何缩进的代码 都会被执行一遍! 实际开发场景
• 在实际开发中,每一个模块都是独立开发的,大多都有专人负责
• 开发人员 通常会在 模块下方增加一些测试代码
– 仅在模块内使用,而被导入到其他文件中不需要执行
name 属性
• name 属性可以做到,测试模块的代码 只在测试情况下被运行,而在 被导入时不会被执行!
• name 是Python 的一个内置属性,记录着一个 字符串
• 如果 是被其他文件导入的, name 就是 模块名
• 如果 是当前执行的程序 name 是 main

2.Package-包

创建一个package文件 ,会自动生成一个__init__.py,在package文件下创建俩个文件,一个发送端一个接收端 :
05

04
定义好两个函数之后,需要把它加入__init__.py文件,不然外部没办法导包使用

06

  • 测试
    07
    在包的外面定义一个测试文件 测试通过~

2.1制作和发布压缩包

  • step1
    08
    在跟包同级的目录下创建一个setup.py文件(可以取别的名字 一般都是setup)
  • setup.py
#!/usr/bin/python
# author X_Dragon
# E-mail:3270895551@qq.com
# @Time : 2023/11/8 14:21
from distutils.core import setup

setup(name="test_message",	# 包名
version="1.0",	# 版本
description="GXPYY 发送和接收消息模块",	# 描述信息
long_description="完整的发送和接收消息模块",	# 完整描述信息
author="X_Dragon",	# 作者
author_email=[" ....@qq.com",	# 作者邮箱url="www.cskaoyan.com",	# 主页py_modules=["wd_message.send_message",
"PYY_message.receive_message"])

前面是一些打包的库 跟着导入就行 setup字典里面的是发布的作者信息等

然后重点来了!!!
09
打开我们pychar的终端控制器输入指令:

  • python setup.py build

Linux下是(Windows也能):python3 setup.py build
10
执行指令后发现多了一个bulid文件夹

  • 然后生成发布压缩包指令

windows:python setup.py sdist

Linux: python3 setup.py sdist
执行后目录多了这两个:
11
这样一个包就制作完成了

2.2包的安装

把包到入linux下 执行

$ tar xf wd_message-1.0.tar.gz

$ sudo python3 setup.py install

卸载模块
直接从安装目录下,把安装模块的 目录 删除就可以

$ cd /usr/local/lib/python3.6/dist-packages/
$ sudo rm -r 文件名*

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1186892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

茶楼计时茶室时钟计费系统,佳易王共享茶室收银计时收费管理系统软件下载

茶楼计时茶室时钟计费系统,佳易王共享茶室收银计时收费管理系统软件下载 软件功能: 1、计时计费功能:可以按单价计费,可以按时间段计费。时间显示直观,每个桌子用时一目了然。每个桌子价格可以设置相同也可以不相同。…

卡码网语言基础课 |句子缩写

卡码网语言基础课 |句子缩写 字符大小的比较题目分析判断大小写字母与转换为大写字母正确检测词语而非空格 代码实现函数的使用形参和实参引用 字符大小的比较 字符串是一个个字符组合而成的,比如字符串"hello",是由字符(char)类型…

centos 7.9系统安装老版本jenkins,并解决插件问题

1.初衷 因为jenkins随着时间推移,其版本也越来越新,支持它运行的JDK也越来越新。基于不折腾的目标,我们安装一个老的固定版本就行。以前安装新版本,经常碰到的问题就是插件安装不兼容的问题。现在这个问题,可以把以前…

001. 变量、环境变量

1、在终端中显示输出 shell脚本通常以shebang起始:#!/bin/bash/ shebang是一个文本行,其中#!位于解释器路径之前。/bin/bash是Bash的解释器命令路径。bash将以#符号开头的行视为注释。脚本中只有第一行可以使用shebang来定义解释该脚本所使…

[工业自动化-5]:西门子S7-15xxx编程 - PLC系统初识别 :PLC概述与发展史

目录 前言: 一、PLC的由来:自动化产线的大脑 二、PLC发展史 三、常见的PLC厂家:欧洲日本 四、PLC VS 电脑 4.1 PLC VS CPU 4.2 PLC VS 单片机 4.3 PLC VS 工控机 五、PLC系统组成 参考: 前言: 一、PLC的由来…

黑客(网络安全)技术——高效自学

前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学 今天给大家分享一下,很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习…

PTA_乙级_1002

思路&#xff1a;不仅超出int还超出Longlong,直接用string类型定义n&#xff0c;for循环来遍历每一位字符然后转换成数字进行累加&#xff0c;再用to_string把数字和转换成字符串&#xff0c;再用for循环把数字和的每一位定位到pinyin字符串数组上输出 #include <iostream&…

【C++】AVL树的4中旋转调整

文章目录 前提一、AVL树的结构定义二、AVL的插入&#xff08;重点&#xff09;1. 插入的结点在较高左子树的左侧&#xff08;右单旋&#xff09;2. 新节点插入较高右子树的右侧&#xff08;左单旋&#xff09;3.新结点插入较高右子树的左侧&#xff08;先右单旋再左单旋&#x…

MFC-TCP网络编程服务端-Socket

目录 1、通过Socket建立服务端&#xff1a; 2、UI设计&#xff1a; 3、代码的实现&#xff1a; &#xff08;1&#xff09;、CListenSocket类 &#xff08;2&#xff09;、CConnectSocket类 &#xff08;3&#xff09;、CTcpServerDlg类 1、通过Socket建立服务端&#xff…

ts面试题总结

文章目录 前言ts和js的区别&#xff1f;什么是Typescript的方法重载&#xff1f;Typescript中never 和 void 的区别&#xff1f;typescript 中的 is 关键字有什么用&#xff1f;TypeScript支持的访问修饰符有哪些&#xff1f;如何定义一个数组&#xff0c;它的元素可能是字符串…

11-2 mybatis入门细节

mybatis Mybatis 单表CURD细节 ${} 与#{} 区别(面试题) ${} 拼接sql 造成sql注入 #{} 使用?占位 如果作为值, 推荐使用#{} ${} 实现一些动态排序,使用 #{column} select * from tb_userinfo order by ? desc column: id 赋值 sql: select * from tb_userinfo order by id …

AIGC,ChatGPT 快速批量处理Word文本内容

在文档编辑与创作的过程中,会避免不了,输入错误内容与打错字的情况。 如果我们一个一个手动去修改,会比较费时间。 如下: 进行内容修改与更新的时候,我们知道可以使用Ctrl+H 来查找与替换,但查找与替换一次也只能替换一个值。

博捷芯BJCORE:划片机在划切工艺中需要注意以下几点

划片机在划切工艺中需要注意以下几点&#xff1a; 1. 测高时工作台上不能有任何物品&#xff0c;以免影响测高精度。 2. 切割前检查参数是否正确选择&#xff0c;包括切割速度、切割深度等。 3. 更换刀片时&#xff0c;检查刀片是否平稳旋转&#xff0c;确保刀片安装牢固。 …

开发知识点-stm32/ESP32/Mega2560嵌入式设计

嵌入式设计 STM32四轴飞行器原理图解析小马哥 DragonFly四轴软件开发 13 STM32 SPI总线通讯SPI 总线协议简介SPI 物理层SPI 协议层SPI 通信时序 STM32硬件SPI接口简介SPI接口 利用库函数初始化配置 ESP32 “F:\res\marlin-2.0.x” “F:\res\Marlin-2.1.2” STM32四轴飞行器 小…

深度学习中的“钩子“(Hook):基于pytorch实现了简单例子

目录 基本概念一个详细的示例 基于resnet50的一个hook应用例子前向传播示例反向传播示例 基本概念 在深度学习中&#xff0c;“钩子”&#xff08;Hook&#xff09;是一种机制&#xff0c;可以在神经网络的不同层或模块中插入自定义的代码&#xff0c;以便在网络的前向传播或反…

python开发数字人助理版

Fay数字人助理版是fay开源项目的重要分支&#xff0c;专注于构建智能数字助理的开源解决方案。它提供了灵活的模块化设计&#xff0c;使开发人员能够定制和组合各种功能模块&#xff0c;包括情绪分析、NLP处理、语音合成和语音输出等。Fay数字人助理版为开发人员提供了强大的工…

第三章《补基础:不怕学不懂概率统计》笔记

3.1 什么是概率 概率亦称“或然率”&#xff0c;它反映随机事件出现的可能性大小&#xff0c;在现实生活中有着极其普遍的应用。 3.1.1 最简单的概率的例子 3.1.2 概率论与数理统计的关系 概率论与数理统计的关系可以概括为&#xff0c;概率论是数理统计的理论基础&#xf…

fastspar微生物相关性推断

fastspar 简介 fastspar是基于Sparcc通过C编写的&#xff0c;速度更快&#xff0c;内存消耗更少。sparcc是基于OTU的原始count数&#xff0c;通过log转换和标准化去除传统相对丰度的天然负相关&#xff08;因为所有OTU之和为1&#xff0c;某些OTU丰度高另外一些自然就少&…

nssm部署nginx

nssm install Nginx8098 --安装nginx nssm start Nginx8098 --启用nginx nginx 选择nginx路径&#xff0c;安装

Kyligence Copilot 亮相第六届进博会,增添数智新活力

11月5日&#xff0c;第六届中国国际进口博览会&#xff08;以下简称“进博会”&#xff09;在上海国家会展中心盛大启幕&#xff0c;众多新科技、新成果、新展品亮相本届进博会。作为阿斯利康&#xff08;AstraZeneca&#xff09;合作伙伴&#xff0c;跬智信息&#xff08;Kyli…