之前在前面的 Python的模块与包 文章中具体的介绍了模块,也介绍了模块创建与发布的步骤。
文章地址:https://blog.csdn.net/Mr_fengzi/article/details/90767007
假如你自己写了一个自我感觉很不错的程序,那么如何将这个程序打包封装成模块,之后就可以很方便地引用自己的模块去实现相关要求呢?
本篇文章将主要介绍在linux系统下对python创建的模块进行打包并发布的具体操作步骤。
以上一篇 python实现GIF动图倒放的效果 为例,我们将其打包成模块,并进行发布,可以方便以后的调用。GIF动图倒放 的文章地址:https://blog.csdn.net/Mr_fengzi/article/details/91148655
以下我们都在linux中的Terminal输入命令行进行操作:
1.首先创建一个目录(gif),之后可以存放相关模块文件,并跳转到该目录下。
[kiosk@foundation0 ~]$ mkdir gif
[kiosk@foundation0 ~]$ cd gif
2.用vim命令创建一个文本文件,并将之前写好的模块程序写入保存到该文件中,文件以.py结尾
[kiosk@foundation0 gif]$ vim gif.py
3.将下面的程序写入文本文件中
# ImageSequence: 会将动图分割成每一帧的图片;
import os
from PIL import Image, ImageSequence
def gif_reverse(src_file, dst_file):
try:
# 打开文件, 并起一个别im
with Image.open(src_file) as im:
# 判断图片文件是否为动图?
if im.is_animated:
# 对于图片进行反转
images = [image.copy() for image in ImageSequence.Iterator(im)][::-1]
# 将反转的图片保存成新的动图;
images[0].save(dst_file, save_all=True, append_images=images[1:])
except BaseException as e:
print("动图反转错误:" , e)
else:
print("[%s] 反转为 [%s]成功!" %(src_file, dst_file))
def gif_split(src_file, dst_dirname):
"""
将gif动图分割为一个个图片
:param src_file: 分割的gif文件
:param dst_dirname: 存储图片的目录
:return:
"""
try:
# 打开文件, 并起一个别im
with Image.open(src_file) as im:
# 判断图片文件是否为动图?
if im.is_animated:
# 依次将动图的每个图片保存到文件中;
index = 0
for image in ImageSequence.Iterator(im):
# 获取存储文件的绝对路径;
filename = '%s.png' %(index)
# 为了跨平台, Linux拼接: /, Windows拼接: \ C:\User\python
full_filename = os.path.join(dst_dirname, filename)
image.save(filename)
index += 1
except BaseException as e:
print("动图分割失败: ", e)
else:
print("动图分割成功, 保存在[%s]目录中" %(dst_dirname))
if __name__ == '__main__':
gif_reverse('doc/cat.gif', 'doc/cat1.gif')
4.用vim命令在gif目录下创建一个setup.py文件,将用于以后的安装
[kiosk@foundation0 gif]$ vim setup.py
5.setup.py文件中要写入固定格式的内容,之后才能成功安装,要写入的内容如下:
#从Python发布工具导入"setup"函数
from distutils.core import setup
setup(
name='gif',
version='0.0.1', #版本号
py_modules = ['gif'],
author='你的姓名',
author_email='你的邮箱地址',
url='模块链接',
description='动图的快速分割与反转'
)
6.利用python setup.py build 进行模块的创建
[kiosk@foundation0 gif]$ python3 setup.py build
7.利用python setup.py sdist 进行模块的发布
[kiosk@foundation0 gif]$ python3 setup.py sdist
8.利用tree命令查看所有目录与文件的所属关系,如下:
[kiosk@foundation0 gif]$ tree
.
├── build
│ └── lib
│ └── gif.py
├── dist
│ ├── gif-0.0.1
│ │ ├── build
│ │ │ └── lib
│ │ │ └── gif.py
│ │ ├── gif.py
│ │ ├── PKG-INFO
│ │ ├── __pycache__
│ │ │ └── gif.cpython-37.pyc
│ │ └── setup.py
│ └── gif-0.0.1.tar.gz
├── gif.py
├── MANIFEST
└── setup.py
7 directories, 10 files
9.可以看到在dist目录下有一个安装包 gif-0.0.1.tar.gz ,对其进行解压
[kiosk@foundation0 dist]$ tar xf gif-0.0.1.tar.gz
10.对模块进行安装
[kiosk@foundation0 dist]$ python3 setup.py install
11.接下来就可以使用 import gif 导入装好的模块了