在PyPI上发布自己的Python包(一)

2023-11-18

发布PyPI(简单)

#0 GitHub

https://github.com/Coxhuang/get_time

#1 环境

Python3.6
twine==1.13.0 # 需要pip下载 

#2 准备

#2.1 注册PyPI账号

https://pypi.org/

#2.2 安装环境

pip3 install twine

#3 开始

#3.1 新建文件夹

.
├── get_time # 文件夹
│   └── __init__.py # 把需要发布的代码放到里面
└── setup.py # 配置文件 

init.py

import datetime, time
import calendar

now = datetime.datetime.now()


def get_time(year=now.year,
             month=now.month,
             day=now.day,
             hour=now.hour,
             minute=now.minute,
             second=now.second,
             week=-1,
             last_day_of_month=False,
             type="time",
             detail=True):
    """

    :param year: 年 (默认今年)
    :param month: 月 (默认当月)
    :param day: 天 (默认今天)
    :param hour: 时 (默认当前时间)
    :param minute: 分 (默认当前时间)
    :param second: 秒 (默认当前时间)
    :param week: 星期x (默认-1,如果不等于-1,则day参数无效)
    :param last_day_of_month: 每个月的最后一天 (默认False)
    :param type: 输出类型 (time / str)
    :param detail: 是否输出时分秒? (默认输出时分秒)
    :return: 时间 
    """

    if week != -1:
        weekday = datetime.datetime(year, month, day, hour, minute, second)

        one_day = datetime.timedelta(days=1)
        while weekday.weekday() != 0:
            weekday -= one_day

        ret = weekday + datetime.timedelta(days=week - 1)

    else:

        if last_day_of_month:  # 每个月的最后一天
            day = calendar.monthrange(year, month)[1]

        if not detail:
            date = datetime.date(year, month, day)
        else:
            date = datetime.datetime(year, month, day, hour, minute, second)

        ret = date if type == "time" else str(date)

    return ret


def get_timestamp(detail=True):
    """
    获取当前时间戳 
    :param detail: True输出完整的时间戳/ False输出前10位(小数点之前)
    :return: 时间戳 
    """
    if detail:
        ret = time.time()
    else:
        ret = int(time.time())
    return ret


def timestamp_to_str(timestamp, strformat):
    """
    时间戳转字符串
    :param timestamp: 时间戳 
    :param strformat: 转换格式 (%Y-%m-%d %H:%M:%S)
    :return: 时间字符串 
    """
    ret = time.strftime(strformat, time.localtime(timestamp)) 

    return ret


def str_to_timestamp(timestr, strformat):
    """
    字符串转时间戳 
    :param timestr: 时间字符串 
    :param strformat: 转换格式 (%Y-%m-%d %H:%M:%S) 
    :return: 时间戳 (前10位)
    """
    ret = int(time.mktime(time.strptime(timestr, strformat)))

    return ret

setup.py

#!/usr/bin/env python
# coding: utf-8

from setuptools import setup

setup(
    name='get-time', # 项目的名称,pip3 install get-time
    version='0.0.4', # 项目版本 
    author='黄民航', # 项目作者 
    author_email='gmhesat@gmail.com', # 作者email 
    url='https://github.com/Coxhuang/get_time', # 项目代码仓库
    description='获取任意时间/获取当前的时间戳/时间转时间戳/时间戳转时间', # 项目描述 
    packages=['get_time'], # 包名 
    install_requires=[],
    entry_points={
        'console_scripts': [
            'get_time=get_time:get_time', # 使用者使用get_time时,就睡到get_time项目下的__init__.py下执行get_time函数
            'get_timestamp=get_time:get_timestamp',
            'timestamp_to_str=get_time:timestamp_to_str',
            'str_to_timestamp=get_time:str_to_timestamp',
        ]
    } # 重点
)

#3.2 上传

打包

在项目的目录下(和刚刚新建setup.py同级目录)

python3 setup.py sdist build

20190401170244-image.png

上传

twine upload dist/*

20190401170134-image.png

20190401170532-image.png

#3.3 测试

pip3 insatll get-time==0.0.4
pip3 list # 查看安装过的包

20190401170741-image.png

20190401170904-image.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在PyPI上发布自己的Python包(一) 的相关文章

  • 如何将我的包导入分组到单个自定义包中?

    通常当我编写 perl 程序时 我曾经包含以下包 use strict use warnings use Data Dumper 现在 我想像这样 我不会为每个程序都包含所有这个包 为了那个原因我会将这些全部打包在我自己的包中 喜欢跟随 m
  • 选择性罐包装

    我有一个小program jar 它使用了巨大的library jar 的一小部分 有没有一种工具可以将多个 jar 重新打包成一个 以便它可以独立运行并且尽可能小 Update 大小事项 有proguard http proguard s
  • Python从更高级别的包导入模块

    这是我的包层次结构 app init py Empty file server py global vars py handlers init py Empty file url1 init py Empty file app1 py ap
  • Emacs-Lisp:如何将emacs-lisp程序打包为PC应用程序?

    只是想知道是否可以将 emacs 和 Lisp 程序打包和部署为 PC 应用程序 这样一旦下载并运行 setup exe 某种程度 用户就可以启动应用程序以使 emacs 运行特定的 Lisp 程序 就像应用程序已实现一样通过其他语言和平台
  • 闪亮的应用程序包:css 和所有 www/ 目录内容

    我正在尝试将 Shiny 应用程序转换为 R 包 但我在处理有关 www 目录以及 松散 文件的所有问题时遇到了问题 我闪亮的应用程序运行得很好 但是当我尝试 打包它 时 它不起作用 我闪亮的应用程序目录 my shiny app R ut
  • 节点:以编程方式检查包的最新版本

    我希望我的节点包 在 npm 上发布 在新版本可用时提醒用户 如何以编程方式检查已发布软件包的最新版本并将其与当前版本进行比较 Thanks 您可以结合npmview https npmjs com package npmview 用于获取
  • 带有 xml 文件内容的 NuGet 恢复包 - 工作示例?

    使用的工具 Visual Studio 2015 Enterprise Nuget 3 5 NET Framework 4 0 有谁有包含一些 xml 文件和 dll 库的 NuGet 包的工作示例吗 我在很多地方读过关于此的零散注释 但我
  • PyPI 上的轮子平台约束有什么限制吗?

    是否有任何地方 PEP 或其他地方 声明关于 Linux 轮子上传范围的限制 PyPI http pypi io 应该有 具体来说 上传是否被认为是可接受的做法linux x86 64轮子到 PyPI 而不是manylinux1 x86 6
  • 有没有办法从另一个包访问结构体的私有字段?

    我在一个包中有一个具有私有字段的结构 package foo type Foo struct x int y Foo 另一个包 例如 白盒测试包 需要访问它们 package bar import foo func change foo f
  • 使用 dotnet pack 打包多个程序集

    正如问题所说 如何使用 dotnet pack 打包多个项目 程序集 使用 VS2017 和新的 csproj 文件 在 csproj 文件中包含您需要的程序集
  • Python setuptools:如何在 setup.py 中添加私有存储库 (gitlab)?

    我上传了 2 个包 它们位于我的 gitlab 存储库中 如果我想使用 pip 将它们安装在我的系统中 这很容易 因为 gitlab 可以帮助您 https docs gitlab com ee user packages pypi rep
  • 如何在 Go 中使用与包同名的变量名?

    文件或目录的常见变量名称是 path 不幸的是 这也是 Go 中包的名称 此外 在 DoIt 中更改路径作为参数名称 如何编译此代码 package main import path os func main DoIt file txt f
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这
  • 从另一个包启动活动

    我有这个清单
  • Linux 软件包存储库中的 *​​-dev 软件包实际上包含什么?

    我的问题非常基本 我现在的知识也是如此 我是 Linux 的长期用户 但直到最近才对编程产生了浓厚的兴趣 我看到 Ubuntu 存储库中的许多流行应用程序都有 dev 软件包 例如洋泾浜开发者此外pidgin 我的问题是这样的 这些包裹里有
  • 完全删除使用“go get”安装的软件包?

    我正在使用 Go 1 13 1 最新版本 我正在尝试完全删除我安装的软件包go get来自 GitHub 这go clean i
  • Oracle 9i:同义词表不存在?

    我创建了一个包 其中包含一个存储过程 我计划从单独的应用程序调用该存储过程 存储过程将返回架构中所有视图和表的排序列表 为此 它对 DBA TABLES 和 DBA VIEWS 同义词执行简单的选择 如下所示 CREATE OR REPLA
  • 我无法下载 R 中的 reshape2 包 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我在尝试安装 R 包时收到此响应 gt installed packages reshape2 Package LibPath V
  • 在 Sublime Text 3 中安装多个包

    在 Sublime Text 3 中安装软件包时 我是否可以从列表中勾选所有我想要的软件包 然后一次性安装它们 或者对于我想要安装的每个软件包 我是否必须单击 首选项 gt 软件包控制 gt 安装软件包 例如 Notepad 有一个很好的带
  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git

随机推荐