模块的打包与发布
编写一个模块,实现以下功能:
使用Python生成N个激活码,激活码要求为32位由A-Z 0-9组成的字符串
N由用户输入(注意判断输入是否合法)
将文件发布并安装到自己的机器,将激活码放到文件中。
详细过程
注意:以下步骤按照顺序一步一步来
1.在一个纯净的目录下(也就是一个空的目录下)创建一个modpack3目录
# [root@zabbix scpython]# ls
# [root@zabbix scpython]# mkdir modpack3
2.在modpack3目录下,新建__init__.py 和 syq.py
# [root@zabbix scpython]# cd modpack3
# [root@zabbix modpack3]# touch __init__.py
# [root@zabbix modpack3]# touch syq.py
# [root@zabbix modpack3]# vim syq.py
# import random
# import string
# N = input("请输入你要生成的激活码个数:")
# if N.isdigit():
# N = int(N)
# else:
# print("输入的不是整数!")
# for i in range(N): #从A-Z 0-9序列中随机获取32个长度的片断
# code = random.sample(string.ascii_uppercase + string.digits, 32)
# with open("atcode.txt", "a+", encoding="utf-8") as fp:
# fp.write(''.join(code) + '\n')
# print(f"{N}个激活码已生成!")
3.回到上级目录,创建setup.py
# [root@zabbix modpack3]# cd ..
# [root@zabbix scpython]# touch setup.py
# [root@zabbix scpython]# vim setup.py
# from setuptools import setup, find_packages
#
# setup(
# #包名
# name = "modtest",
# #官网
# url = "http://www.abc.com",
# #版本
# version = "0.0.1",
# #指定要打包的模块和包
# packages = find_packages(),
# #作者
# author = "sc",
# #邮箱
# author_email = "123456@qq.com",
# #依赖
# install_requires = ['xlrd>=1.1.0'],
# #描述信息
# description = "this is test pack"
# )
4.运行python3 setup.py check 进行语法检查
# [root@zabbix scpython]# python3 setup.py check
# running check
5.运行python3 setup.py sdist 生成tar.gz压缩包
# [root@zabbix scpython]# python3 setup.py sdist
# running sdist
# .............
6.安装
进入dist目录,运行pip3 install modtest-0.0.1.tar.gz
# [root@zabbix scpython]# ls
# dist modpack3 modtest.egg-info setup.py
# [root@zabbix scpython]# cd dist
# [root@zabbix dist]# ls
# modtest-0.0.1.tar.gz
# [root@zabbix dist]# pip3 install modtest-0.0.1.tar.gz
# ....................................
# Successfully installed modtest-0.0.1
7.测试
随便进入一个目录运行python3
出现以下效果说明成功了
# [root@zabbix dist]# cd /lianxi
# [root@zabbix lianxi]# python3
# >>> from modpack3 import syq
# 请输入你要生成的激活码个数:10
# 10个激活码已生成!
# >>> fp = open("atcode.txt")
# >>> fp.readlines()
# ['9HEM6R5BDCOZ31UGKA0QN2VL7J8IWXSF\n', 'D4EIFU6SPW2JQLTM8XV37RO1HGA9YB0N\n', 'V9F2K58PRNGO013YXIWQZBLAUJCTD6M7\n', 'HF8RY6D3LI2S9E51XZ4CUQWMVGT7BJ0K\n', 'R6954EOHVGDKBW0AML73UNYPZSFT8CQ1\n', 'XTPDESMRIJUAWFQL648NB209GHZO1C5V\n', 'VTYFULA2QH51D3G0Z7JB4RSCPE9KM8NX\n', 'CD1XHUJ7VQN0FK86POBTWSEL9YM5A4Z2\n', '13HU5T9NSF7MGYCAWLRD4XVQBK608E2Z\n', '83DOPANQ7UTYIFSB5E2G9VRKJCXZ1MW6\n']