Hola a todos, soy Pippi.
I. Introducción
Hace unos días, Boss Wu me recomendó una biblioteca de Moyu, resultó ser una biblioteca de Python, lo que me sorprendió y sentí que Sting debería faltar.
Deben saber que ha escrito un artículo sobre pesca antes, amigos interesados, pueden ir a: Enseñar cómo usar Python para crear una interfaz de cuenta regresiva para pescar.
Ahora ha convertido este Moyu en una biblioteca de Python. Se ha publicado un artículo sobre el uso de esta biblioteca. Puedes ir a: Inventario de una biblioteca de Python llamada Moyu, ¡toquemos el pez juntos!
En el área de comentarios, vi el mensaje del jefe [algo interesante], como se muestra en la siguiente figura:
Probablemente signifique encapsular el código escrito por usted mismo en una biblioteca de Python, que puede ser utilizada por todos. Aquí está el arreglo. Este artículo trata sobre cómo empaquetarlo y publicarlo. ¡Echémosle un vistazo!
2. Código
Primero, prepare el código. Este código ha sido compartido en el artículo anterior. No lo repetiré aquí. El código está aquí.
# -*- coding: utf-8 -*-
import datetime
import click
from zhdate import ZhDate as lunar_date
def get_week_day(date):
week_day_dict = {
0: '星期一',
1: '星期二',
2: '星期三',
3: '星期四',
4: '星期五',
5: '星期六',
6: '星期天',
}
day = date.weekday()
return week_day_dict[day]
def time_parse(today):
distance_big_year = (lunar_date(today.year, 1, 1).to_datetime().date() - today).days
distance_big_year = distance_big_year if distance_big_year > 0 else (
lunar_date(today.year + 1, 1, 1).to_datetime().date() - today).days
distance_5_5 = (lunar_date(today.year, 5, 5).to_datetime().date() - today).days
distance_5_5 = distance_5_5 if distance_5_5 > 0 else (
lunar_date(today.year + 1, 5, 5).to_datetime().date() - today).days
distance_8_15 = (lunar_date(today.year, 8, 15).to_datetime().date() - today).days
distance_8_15 = distance_8_15 if distance_8_15 > 0 else (
lunar_date(today.year + 1, 8, 15).to_datetime().date() - today).days
distance_year = (datetime.datetime.strptime(f"{today.year}-01-01", "%Y-%m-%d").date() - today).days
distance_year = distance_year if distance_year > 0 else (
datetime.datetime.strptime(f"{today.year + 1}-01-01", "%Y-%m-%d").date() - today).days
distance_4_5 = (datetime.datetime.strptime(f"{today.year}-04-05", "%Y-%m-%d").date() - today).days
distance_4_5 = distance_4_5 if distance_4_5 > 0 else (
datetime.datetime.strptime(f"{today.year + 1}-04-05", "%Y-%m-%d").date() - today).days
distance_5_1 = (datetime.datetime.strptime(f"{today.year}-05-01", "%Y-%m-%d").date() - today).days
distance_5_1 = distance_5_1 if distance_5_1 > 0 else (
datetime.datetime.strptime(f"{today.year + 1}-05-01", "%Y-%m-%d").date() - today).days
distance_10_1 = (datetime.datetime.strptime(f"{today.year}-10-01", "%Y-%m-%d").date() - today).days
distance_10_1 = distance_10_1 if distance_10_1 > 0 else (
datetime.datetime.strptime(f"{today.year + 1}-10-01", "%Y-%m-%d").date() - today).days
time_ = [
{"v_": 5 - 1 - today.weekday(), "title": "周末"}, # 距离周末
{"v_": distance_year, "title": "元旦"}, # 距离元旦
{"v_": distance_big_year, "title": "过年"}, # 距离过年
{"v_": distance_4_5, "title": "清明节"}, # 距离清明
{"v_": distance_5_1, "title": "劳动节"}, # 距离劳动
{"v_": distance_5_5, "title": "端午节"}, # 距离端午
{"v_": distance_8_15, "title": "中秋节"}, # 距离中秋
{"v_": distance_10_1, "title": "国庆节"}, # 距离国庆
]
time_ = sorted(time_, key=lambda x: x['v_'], reverse=False)
return time_
@click.command()
def cli():
"""你好,摸鱼人,工作再累,一定不要忘记摸鱼哦 !"""
from colorama import init, Fore
init(autoreset=True) # 初始化,并且设置颜色设置自动恢复
print()
today = datetime.date.today()
now_ = f"{today.year}年{today.month}月{today.day}日"
week_day_ = get_week_day(today)
print(f'\t\t {Fore.GREEN}{now_} {week_day_}')
str_ = '''
你好,摸鱼人,工作再累,一定不要忘记摸鱼哦 !
有事没事起身去茶水间去廊道去天台走走,别老在工位上坐着。
多喝点水,钱是老板的,但命是自己的 !
'''
print(f'{Fore.RED}{str_}')
time_ = time_parse(today)
for t_ in time_:
print(f'\t\t {Fore.RED}距离{t_.get("title")}还有: {t_.get("v_")}天')
tips_ = '''
[友情提示] 三甲医院 ICU 躺一天平均费用大概一万块。
你晚一天进 ICU,就等于为你的家庭多赚一万块。少上班,多摸鱼。\n
'''
print(f'{Fore.RED}{tips_}')
print(f'\t\t\t\t\t\t\t{Fore.YELLOW} 摸鱼办')
if __name__ == '__main__':
cli()
复制代码
Uso de la biblioteca de clics
Tenga en cuenta que nuestro código en el archivo anterior usa la biblioteca de clics.
Python tiene una biblioteca estándar Argparse incorporada para crear líneas de comando, pero es un poco engorrosa de usar.Comparado con Argparse, Click es insignificante.
Instalar
pip install click
复制代码
Uso simple de clic
Un ejemplo introductorio de la documentación oficial:
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name', help='The person to greet.')
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for x in range(count):
click.echo('Hello %s!' % name)
if __name__ == '__main__':
hello()
复制代码
- @click.command() hace que la función hola sea una interfaz de línea de comandos.
- El primer argumento de @click.option especifica el nombre de la opción de la línea de comandos.
- El método click.echo es similar al método de impresión integrado de Python.
Instrucciones:
Imprimir 10 jefes de cuero.
$ python hello.py --count 10 --name 皮老板 # 指定 count 和 name 的值
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
复制代码
lanzamiento del paquete setuptool
Instalar dependencias
pip install setuptools
pip install twine
复制代码
Carga de paquetes
python setup.py sdist
twine upload dist/*
复制代码
Inicie sesión en la cuenta pypi y publique la biblioteca de python
ejemplo setup.py
from setuptools import setup, find_packages
description = '你好,摸鱼人,工作再累,一定不要忘记摸鱼哦! 有事没事起身去茶水间去廊道去天台走走,别老在工位上坐着。多喝点水,钱是老板的,但命是自己的!'
setup(
name='mofish', # 库名
version='1.0.0', # 版本号
description=description, # 短简介
long_description_content_type='text/markdown',
classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Console',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'Intended Audience :: System Administrators',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3 :: Only',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Topic :: Internet',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: System :: Clustering',
'Topic :: System :: Distributed Computing',
'Topic :: System :: Monitoring',
'Topic :: System :: Systems Administration',
],
python_requires='>=3.7', # py 版本限制
author='PY-GZKY', # 作者
author_email='[email protected]', # 邮件
url='https://github.com/PY-GZKY/Mofish', # git
license='MIT', # 开源协议
packages=find_packages(), # 包
include_package_data=True,
entry_points="""
[console_scripts]
moyu=src.main:cli
""", # 启动命令行脚本的文件
install_requires=[
'click>=6.7',
'zhdate'
], # 限制安装库的版本
)
复制代码
instalar y usar
pip install mofish
moyu
复制代码
Dirección del repositorio de código:
https://github.com/PY-GZKY/Mofish
复制代码
Resumir
Hola a todos, soy Pippi. Este artículo le brinda principalmente un inventario de una biblioteca de Python. Basado en esta biblioteca, este artículo presenta cómo encapsular el código que escribió en una biblioteca de Python, empaquetarlo, cargarlo y publicarlo en pypi, para que todos puedan usar su biblioteca. luego.
Finalmente, me gustaría agradecer a [Boss Wu] por sus ideas y soporte de código, y agradecer [algo interesante] por sus necesidades.
[Recordatorio amistoso] El costo promedio de un día en la UCI de un hospital terciario es de aproximadamente 10,000 yuanes. Si ingresa a la UCI un día después, ganará 10,000 yuanes adicionales para su familia. Trabaja menos, pesca más.
¡Amigos, apúrense y practíquenlo! Si encuentra algún problema durante el proceso de aprendizaje, agrégueme como amigo y lo llevaré al grupo de intercambio de aprendizaje de Python para discutir y aprender juntos.