首页 > 其他分享 >手把手教你开展mofish库(摸鱼库)的打包发布

手把手教你开展mofish库(摸鱼库)的打包发布

时间:2023-04-23 14:38:44浏览次数:41  
标签:-% distance 鱼库 手把手 datetime mofish year date today


商女不知亡国恨,隔江犹唱后庭花。

大家好,我是我是皮皮。

一、前言

前几天吴老板给我推荐了一个摸鱼库,竟然是Python库,给我惊了一下,感觉应缺斯汀。


手把手教你开展mofish库(摸鱼库)的打包发布_oauth

要知道之前他就已经写了一篇关于摸鱼的文章,感兴趣的小伙伴,可以前往:手把手教你使用Python打造一款摸鱼倒计界面。

如今他把这个摸鱼做成了一个Python库,关于这个库的使用之前已经发布了文章,可以前往:盘点一个名为摸鱼的Python库,一起来摸鱼吧!

在评论区看到了【有点意思】大佬的留言,如下图所示:


手把手教你开展mofish库(摸鱼库)的打包发布_信号处理_02

大概意思是把自己写的代码,封装成Python库,人人都可用那种,这里给安排上,这篇文章就是讲如何打包发布的,一起来看看吧!

二、代码

首先准备好代码,这个代码,之前的文章就已经分享了,这里不再赘述,代码在这里了。

# -*- 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()

click 库的使用

注意到我们上面的文件代码用到了 click 库。

Python 内置了一个 Argparse 的标准库用于创建命令行, 但使用起来有些繁琐,Click 相比于 Argparse 可谓是小巫见大巫了。

安装

pip install click

click 的简单使用

官方文档的入门例子:

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() 使函数 hello 成为命令行接口。
  • @click.option 的第一个参数指定了命令行选项的名称。
  • click.echo 方法和 python 内置的 print 方法相似。

使用方法:

打印 10皮老板

$ python hello.py --count 10 --name 皮老板    # 指定 count 和 name 的值
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!
Hello 皮老板!

setuptool 打包发布

安装依赖

pip install setuptools
pip install twine

打包上传

python setup.py sdist
twine upload dist/*

登录 pypi 账户并发布 python

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'
    ], # 限制安装库的版本

)

安装并使用

pip install mofish
moyu

代码仓库地址:

https://github.com/PY-GZKY/Mofish


手把手教你开展mofish库(摸鱼库)的打包发布_python_03

总结

大家好,我是皮皮。这篇文章主要是给大家盘点了一个Python库,基于这个库,本文介绍了如何把自己写的代码封装成Python库,打包上传,并且发布到pypi,到后面人人都可以用你的库。

最后感谢【吴老板】大佬给予的思路和代码支持,感谢【有点意思】大佬提的需求。

[友情提示] 三甲医院 ICU 躺一天平均费用大概一万块。你晚一天进 ICU,就等于为你的家庭多赚一万块。少上班,多摸鱼。



标签:-%,distance,鱼库,手把手,datetime,mofish,year,date,today
From: https://blog.51cto.com/u_13389043/6217564

相关文章

  • 手把手教你进行Scrapy中item类的实例化操作
     接下来我们将在爬虫主体文件中对Item的值进行填充。1、首先在爬虫主体文件中将Item模块导入进来,如下图所示。2、第一步的意思是说将items.py中的ArticleItem类导入到爬虫主体文件中去,将两个文件串联起来,其中items.py的部分内容如下图所示。3、将这个ArticleItem类导入之后,接下来......
  • 手把手教你使用Python网络爬虫获取菜谱信息
    今日鸡汤一腔热血勤珍重,洒去犹能化碧涛。/1前言/    在放假时,经常想尝试一下自己做饭,下厨房这个网址是个不错的选择。    下厨房是必选的网址之一,主要提供各种美食做法以及烹饪技巧。包含种类很多。    今天教大家去爬取下厨房的菜谱,保存在world文档,方便日后制作自......
  • 手把手教你用Python打造一款批量下载视频并能可视化显示下载进度的下载器
    今日鸡汤桃之夭夭,灼灼其华。/1前言/    平时宅在家的我们最爱做的事莫过于追剧了,但是有时候了,网络原因,可能会让你无网可上。这个时候那些好看的电视剧和电影自然是无法观看了,本期我们要讲的就是怎样下载这些视频。/2项目目标/    通过Python程序对所感兴趣的视频进行批量......
  • 手把手教你使用Python生成图灵智能小伙伴,实现工作助手/闲聊功能
    /1前言/在家闲着,做个小项目,基于Python,实现一个语聊小机器人,分享给大家。项目整体比较简单,官方文档介绍的非常详细,可快速上手。/2 目标/将图灵机器人放到桌面,实现工作助手/陪聊功能。/3 涉及的库/V1.0版本:requests、jsonV2.0版本:requests、json、selenium(实现功能:如图灵返回结果......
  • 手把手教你使用Flask搭建ES搜索引擎(预备篇)
    今日鸡汤我死国生,我死犹荣,身虽死精神长生,成功成仁,实现大同。--赵博生/1前言/    Elasticsearch是一个开源的搜索引擎,建立在一个全文搜索引擎库ApacheLucene™基础之上。    那么如何实现 Elasticsearch和Python 的对接成为我们所关心的问题了(怎么什么都要和Pyt......
  • 手把手教:如何准备面试!
    你好,我是田哥很多人对于如何准备面试都是非常的苦恼,迷茫。我自己也曾苦恼迷茫过,也面试过很多公司,也面试过很多小伙伴。最近一年多,我一直在做模拟面试以及技术指导,所以,我觉得对关于如何准备面试,我还是有些招数的。由于本文花费了太多时间,帅哥美女们,请我喝瓶矿泉水吧!本文包含如下内......
  • 手把手教你用Python操纵Word自动编写离职报告
    今日鸡汤不堪玄鬓影,来对白头吟。前言大家好,我是吴老板,今天给大家分享一篇Python自动化文章。Python是自动化处理的一把好手,比如自动编写离职申请!!!安装pipinstallpython-docx-ihttps://pypi.douban.com/simple/基本用法创建一个docx文档fromdocximportDocumentfromdocx.enu......
  • 手把手逐步解析Javaweb登录实例
    一、编写前端界面<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</titl......
  • 手把手教你报名2023年DAMA-CDGA/CDGP数据治理认证考试
    DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业竞争能力。DAMA是全球唯一数据管理方面权威性认证,帮助......
  • Intellij Idea开发: 手把手教你Java GUI开发,并且打包成可执行Jar程序
    ---------------------------------------------生活的意义并不是与他人争高下,而在于享受努力实现目标的过程,结果是对自己行动的嘉奖。↑面的话,越看越不痛快,应该这么说:生活的意义就是你自己知道你要做什么,明确目标。没有目标,后面都是瞎扯!......