您现在的位置是:亿华云 > 系统运维
手把手教你开展 Mofish 库(摸鱼库)的打包发布
亿华云2025-10-08 21:01:24【系统运维】8人已围观
简介一、前言前几天吴老板给我推荐了一个摸鱼库,竟然是Python库,给我惊了一下,感觉应缺斯汀。要知道之前他就已经写了一篇关于摸鱼的文章,感兴趣的小伙伴,可以前往:手把手教你使用Python打造一款摸鱼倒
一、手把手教前言
前几天吴老板给我推荐了一个摸鱼库,开展库摸竟然是鱼库Python库,给我惊了一下,包发布感觉应缺斯汀。手把手教
要知道之前他就已经写了一篇关于摸鱼的开展库摸文章,感兴趣的鱼库小伙伴,可以前往:手把手教你使用Python打造一款摸鱼倒计界面。包发布
如今他把这个摸鱼做成了一个Python库,手把手教关于这个库的开展库摸使用之前已经发布了文章,可以前往:盘点一个名为摸鱼的鱼库Python库,一起来摸鱼吧!
在评论区看到了【有点意思】大佬的包发布留言,如下图所示:
大概意思是手把手教把自己写的代码,封装成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=341796767@qq.com, # 邮件
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
总结
大家好,我是皮皮。这篇文章主要是给大家盘点了一个Python库,基于这个库,本文介绍了如何把自己写的代码封装成Python库,打包上传,并且发布到pypi,到后面人人都可以用你的库。
本文转载自微信公众号「Python爬虫与数据挖掘」,可以通过以下二维码关注。企商汇转载本文请联系Python爬虫与数据挖掘公众号。
很赞哦!(4)
相关文章
- 在数以亿计的网站中,我们应该抓住每一个可能带来宣传的机会,域名可以带有企业的名字,一般可以使用汉语拼音或者英语单词或者是相关缩写的形式,只要用户记住了你企业的名字,就能很容易的打出你的网站域名,同样的,记住了网站域名也能很快的记住你公司的名字。
- Python 中四个高效的技巧!
- 一般哪些数据需要Redis缓存
- 我最喜欢的 Go 构建选项
- 尽量不要在域名中出现特殊字符,这样的域名很容易导致访问者输入错误,同时给人留下不专业的印象,降低网站的可信度,并流失大量潜在客户。
- 没跨过这四个槛就技术转管理,你怎么敢的呀?
- JS基本搜索算法实现与170万条数据下的性能测试
- 高级技术猿:Spring 框架架构
- 互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
- 常见的八个概率分布公式和可视化