Python-包

115 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情

1. 包

概念:

  • 包是一个包含多个模块特殊目录
  • 目录下有一个特殊的文件__init__.py
  • 包名的命名方式和变量名一致,小写字母+_,不要以数字开头
  • 优点:使用import包名可以一次性导入包中所有的模块
  • init__文件非常特殊,要在外界使用包中的模块,需要在__init.py中指定对外界提供的模块列表

2. 案例演练

  1. 新建一个message包
  2. 在目录下,新建两个文件send_message和receive_message
  3. 在send_message文件中定义一个receive函数
  4. 在外部直接导入message的包 首先新建好一个python包,并且新建好send_message.py和receive_message.py,具体形式如下图所示:

image.png

send_message.py文件中代码如下所示:

def send(text):
    print("正在发送 %s..." % text)

receive_message.py文件中代码如下所示:

def receive():
    return "这是来自xxx的短信"

init.py文件中代码如下所示:如果想调用包中的模块,就需要在__init__文件中,使用如下语法指定好外界可以调用的模块(逐一导入外界想使用的模块)。

# 从当前目录导入模块列表,.表示当前目录
from . import send_message
from . import receive_message

新建一个导入包.py文件,看看刚才所建的包能否被正常调用,具体代码如下所示:

import message
message.send_message.send("hello")
txt = message.receive_message.receive()
print(txt)

程序运行结果如下图所示:通过下图可以看出能够正常调用包中的方法。

image.png

3. 发布模块

如果希望自己开发的模块,分享给其他人,可以按照以下步骤执行 制作发布压缩包步骤:

  1. 创建setup.py文件:其中的代码比较固定,可以参考如下模板
from distutils.core import setup

setup(name="message",  # 包名
      version="1.0",  # 版本
      description="发送和接收消息模块",  # 描述信息
      long_description="完整的发送和接收消息模块",  # 完整描述信息
      author="Zidene",  # 作者
      author_email="xxx@xxx.com",  # 作者邮箱
      url="www.xxx.com",  # 主页
      py_modules=["message.send_message",  # 把所有要分享的模块填写到这个列表中
                  "message.receive_message"])
  1. 构建模块:准备文件(需要在终端中运行)
  • $ python3 setup.py build
  1. 生成发布压缩包:将准备好的文件压缩成可以分享的压缩包(需要在终端中运行)
  • $ python3 setup.py sdist