在pypi上快速发布你的python包

一 起因

起因很简单,实验室的小伙伴写的新算法需要在论文发表的同时发布到的网上,因此有了以下的过程。

二 调用

第一步,package的发布需要再系统层面完成两步:build包(用于package的打包)的安装和系统命令twine(package的上传)的安装。

第二步:在发布官方注册账号,需要记住账号与密码,后面包上传需要。

https://test.pypi.org/

第三步,创建一个文件夹,内部包含以下文件。


3.1 LICENSE文件用于体现发布包的许可,官方模板如下:

Copyright (c) 2018 The Python Packaging Authority

Permission is hereby granted, free of charge, to any person obtaining a copy

of this software and associated documentation files (the "Software"), to deal

in the Software without restriction, including without limitation the rights

to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is

furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

SOFTWARE.

3.2 pyproject.toml文件用于指定发布包的系统要求和信息,打包过程中将被使用到。官方模板如下:

[project]

name = "add_example"

version = "0.0.1"

authors = [

  { name="Example Author", email="author@example.com" },

]

description = "A small example package"

readme = "README.md"

requires-python = ">=3.7"

classifiers = [

    "Programming Language :: Python :: 3",

    "License :: OSI Approved :: MIT License",

    "Operating System :: OS Independent",

]

[project.urls]

"Homepage" = "https://github.com/pypa/sampleproject"

"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"

3.3 README.md文件,这应该是每个程序员最最熟悉的文件了,主要用于介绍发布包的一些相关情况。

# Example Package

This is a simple example package. You can use

[Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/)

to write your content.

第四步:发布包的资源创建。这一步我们需要再src文件下创建发布包的文件夹。,如本例中发布包的名称是add_example,所以src下就有一个同名的文件夹。


这个文件夹即是你需要打包的文件夹,里面通常包含两个文件,如下:


其中__init__.py可以是空文件,而example.py文件则需要放入你所需要发布的函数。本例中需要发布的就是add_one函数(就是加1,虽然简单,但也是最重要的数据定理)。

def add_one(number):

    return number + 1

第五步:回到src所在目录,调用函数对包进行打包

python -m build

打包之后,本目录下会新建一个dist目录(用于上传发布的目录)


dist文件夹中会出现两个文件:add_example-0.0.1.tar.gz和add_example-0.0.1-py3-none-any.whl。


当然,在src的文件夹中也会出现一个新的以.egg-info为后缀的文件夹,如下。


只是该目录下的文件对于发布包并没有任何作用。


第六步:利用twine命令上传,直到显示所有上传都已完成即可

twine upload --repository testpypi dist/*

上传完毕之后,你就可以在https://test.pypi.org/中看到你自己的项目了(需要登录)。


然后,你通过manage按钮点进去你的project,可以看到


接着点击0.0.1,可以看见你上传的两个文件


即使如此,你上传的库会一直存在,如本文上传的库,即可以再https://test.pypi.org/project/add-example/#description网站查询到。登录进去后,可以看到网页,如下:


之后,可以直接从pip直接一键安装的命令。


pip install -i https://test.pypi.org/simple/ add-example

也可以将我们上传的文件下载下来,在本地进行编译。


add_example-0.0.1.tar.gz

add_example-0.0.1-py3-none-any.whl

小贴士1,上传的whl文件可以直接本地安装,从而查看上传的包是否会出现bug


python -c'from add_exampleimportexample;example.add_one(2)'

3

小贴士2:这一上传最好是在linux中(上传也会比较慢),因为我在windows中上传的特别慢

所有的检测都是为了最后能够正式安装,所以最后一步必然是上传到最重要的官方库中啦(正式版的pypi端)

官方库地址:https://pypi.org/manage/projects/

PS 做一个更正与补充:

《图一乐:如何使用机器学习成为具有艺术天分的画家》推文中的github库为https://github.com/invoke-ai/InvokeAI,下载的模型来自https://huggingface.co/CompVis/stable-diffusion-v-1-4-original

三 惯例小结

其实写软件的目的除了供自己用之外,最重要的目的应该就是分享给大家使用了吧,亦或者商业化。不过对于论文而言,还是尽可能的希望开源吧,这样才能快速提高,实现价值利用的最大化(不排斥商业化,毕竟人也是要吃饭的嘛),

另外,进一步推广一下我开发的相关软件,Multi-omics Hammer软件和Multi-omics Visual软件,也欢迎大家关注并多提意见,详细的话可以见个人主页介绍。

以下为自研软件地址:

Multi-omics Hammer软件地址:https://github.com/wangjun258/Multi-omics-Hammer

Multi-omics Visual软件地址:https://github.com/wangjun258/Multi_omics_Visual

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容