重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
不懂发布自己的python库的方法?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。
为叙州等地区用户提供了全套网页设计制作服务,及叙州网站建设行业解决方案。主营业务为成都网站制作、做网站、外贸营销网站建设、叙州网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
开发者可以通过python官方的第三方仓库PyPI(Python Package Index)来发布自己开发的Python库。方法是:1、新建一个项目文件夹和主程序;2、选择合适的开源证书;3、编写setup.py文件和使用文档;4、发布。
前言与简介
我想任何一个有追求的Python开发者在度过基础阶段后都想过发布自己的库,也就是我们常说的造轮子,这是成为一个成熟Python开发者的第一步,在造轮子的过程中,无论是自己的编程能力还是为以后给开源项目贡献代码的能力都会得到很大提升。今天这篇博客,就来带大家从0开始,向PyPI贡献自己的开源库。
进入正文之前先说一下自己造轮子的步骤:
主体程序设计与编写编写setup.py编写使用文档发布到PyPI
那么,PyPI是什么呢?
PyPI (Python Package Index) 是python官方的第三方库的仓库,所有人都可以下载第三方库或上传自己开发的库到PyPI。PyPI推荐使用pip包管理器来下载第三方库。截至目前,PyPI已经有179,387个项目,很多知名项目如Django都发布在上面:
正文
主体程序编写:
一般来说,自己造轮子无非是处于两种目的,一是现有的轮子不能满足自己的需求,二是为了锻炼自己的能力,在这里,我们就不去编写一个有实际用途的轮子了,请根据你自己的需求自行编写,如果你无从下手,这里可以给一个我之前造的小轮子,跨平台统计代码行数的工具作为参考,项目地址:https://github.com/hj24/count-line
项目大体结构:
下面的主体程序代码仅供示例,演示如何上传自己的项目:
新建一个项目文件夹,mypackage,初始化成git仓库。
新建主程序,test.py:
__version__ = '0.1.0'"""实现你自己的轮子的功能"""def main(): passif __name__ == '__main__': main()
编写完成之后,将其上传至Github,或其他代码托管平台。
选择合适的开源证书
任何一个开源项目都应当选择一个开源许可证,没有 License 的内容是默认会被版权保护。所以如果你想要的是让大家都放心使用,就需要选择一个合适的 License ,只有这样才能赋予任何人使用,分享和修改这个软件的权力。
具体如何选择,请看知乎的这篇回答:传送门
总结一下就是:
MIT 最自由,没有任何限制,任何人都可以售卖你的开源软件,甚至可以用你的名字促销。BSD 和 Apache 协议也很自由,跟 MIT 的区别分别是不允许用作者本人名义促销和保护作者版权。GPL 最霸道,对代码的修改部分也必须是 GPL 的,同时基于 GPL 代码而开发的代码也必须按照 GPL 发布,MPL 相对温和一些,如果后续开发的代码中添加了新文件,同时新文件中也没有用到原来的代码,那么新文件可以不必继续沿用 MPL 。
一般来说,如果选择MIT 协议就可以了。
编写setup.py
setup.py是每个能从PyPi上能下载到的库都有的文件,它是发布的关键所在。
网上的大部分教程都很复杂,新手很难看懂怎么编写,好在kennethreitz大神帮我们解决了这个难题,他编写了一个for human的setup.py模板,项目地址:传送门,我们只需要把它复制过来,修改自己项目需要的地方即可,不需要额外的编写setup.cfg等其他文件。
代码请点击传送门查看(131行,就不复制了...),我们需要重点关注的是如下几个部分:
项目的配置信息:
# Package meta-data. NAME = 'mypackage' DESCRIPTION = '填写你的项目简短描述. 'URL = 'https://github.com/你的github账户/mypackage' EMAIL = 'me@example.com' # 你的邮箱 AUTHOR = 'Awesome Soul' # 你的名字 REQUIRES_PYTHON = '>=3.6.0' # 项目支持的python版本 VERSION = '0.1.0' # 项目版本号
项目的依赖库(没有就不填):
# What packages are required for this module to be executed? REQUIRED = [ # 'requests', 'maya', 'records', ]
setup部分:
这里大部分内容都不用你填,只有以下几个注意点
需要注意的是long_description这里默认是你项目的README.md文件
注释掉的entry_points部分是用来生成命令行工具或者GUI工具的(理论上是跨平台的),比如这里我生成了一个test的命令来代替test.py的main函数,安装成功以后就可以直接使用“test”命令:
python entry_points={ 'console_scripts': ['test=test:main'], },
如果你的项目文件夹下只有一个py文件来实现你的功能的话,需要将packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]),注释掉,然后取消py_modules的注释并进行相应修改。
setup( name=NAME, version=about['__version__'], description=DESCRIPTION, long_description=long_description, long_description_content_type='text/markdown', author=AUTHOR, author_email=EMAIL, python_requires=REQUIRES_PYTHON, url=URL, packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]), # If your package is a single module, use this instead of 'packages': # py_modules=['mypackage'], # entry_points={ # 'console_scripts': ['mycli=mymodule:cli'], # }, install_requires=REQUIRED, extras_require=EXTRAS, include_package_data=True, license='MIT', classifiers=[ # Trove classifiers # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers 'License :: OSI Approved :: MIT License', 'Programming Language :: Python', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy' ], # $ setup.py publish support. cmdclass={ 'upload': UploadCommand, },)
至此setup.py就完成了。
编写使用文档
一个好的项目,是需要有一个条理清晰的文档的,至于如何编写,就看你在README.md里怎么发挥了。
发布
先去 https://pypi.org 注册一个属于自己的账号,记下账号密码。由于我们之前编写好了setup.py,这里只要在项目的文件夹下运行python setup.py upload即可,中间需要你输入账号密码。
至此,一个项目已经上传完毕了,只需pip install mypackage即可使用,下面扩展一下聊聊,怎么进行后续的维护。
项目的维护升级
有更新升级之后,首先要运行如下命令删除dist文件夹中的旧版本打包文件,然后生成新文件:
sudo python setup.py sdist
之后,输入以下命令,上传新版本即可:
python setup.py upload
感谢你能够认真阅读完这篇文章,希望小编分享发布自己的python库的方法内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!