Enseñarte a realizar el empaquetado y lanzamiento de la biblioteca mofish (biblioteca moyu)

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.

Enseñarte a realizar el empaquetado y lanzamiento de la biblioteca mofish (biblioteca moyu)

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:

Enseñarte a realizar el empaquetado y lanzamiento de la biblioteca mofish (biblioteca moyu)

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
复制代码

Enseñarte a realizar el empaquetado y lanzamiento de la biblioteca mofish (biblioteca moyu)

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.

Enseñarte a realizar el empaquetado y lanzamiento de la biblioteca mofish (biblioteca moyu)

¡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.

Supongo que te gusta

Origin juejin.im/post/7078470961892163591
Recomendado
Clasificación