pypi项目发布
本次使用setuptools+wheel将自建项目打包并由twine上传至pypi从而实现项目发布:
pypi账号注册
python项目发布
准备工作
注册pypi账号
到pypi(https://pypi.org/)上注册自己的用户, 点击“Register”,填写自己的用户名,密码,邮箱。经邮件验证即可使用pypi来管理自己的项目。
安装依赖
# 打包工具
pip install setuptools
pip install wheel
# 发布工具
pip install twine
项目结构
以loglizer项目为例:
其中非必须部分并非为倡议,仅在pip项目发布环节中作重要性区分。
|——loglizer // 根目录
|——**loglizer/** // 项目核心内容,必须
|——**models/** // 模型代码文件夹,必须
|——**__init__.py** // 注意\__init__.py文件是必须的
|——**model.py** // 模型代码文件,必须
|——(data/) // demo的演示数据文件夹
|——(data.csv) // demo的演示数据
|——(demo/) // demo文件夹,非必须
|——(demo.py) // demo代码文件,非必须
|——(LICENSE) // 开源说明,非必须
|——(README.md) // 说明文档,非必须
|——(requirements.txt) // 项目依赖,非必须
|——**setup.py** // 打包文件,以下作说明,必须
LICENSE模板
这个部分推荐MIT的开源模板,由于整个项目由LogPAI团队开源,所以这里的LICENSE模板进行了保留。再次感谢LogPAI团队的开源精神和对学术研究的支持,在此说明我仅是发现该项目实用的工具并未通过pip发布便擅自维护了一版。如有侵犯请联系我,我将立即删除。
LICENSE可以根据开源级别自主选择其他模板。
The MIT License (MIT)
Copyright (c) 2018 LogPAI
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.
README.md文件
README.md是markdown语法编辑的说明文档(吐槽一句,README.rst格式谁爱用谁用,反正我不用)
准备setup.py文件
以loglizer项目的setup.py文件为例:
准备setup.py文件是整个发布过程中最核心的步骤,建议多学习大佬们的创建模板和配置内容。以下仅是能用这个级别的配置内容。
#!/usr/bin/env python
#coding:utf-8
import setuptools
'''
如果setuptools.setup中未配置long_description则无需该部分代码
with open('README.md', 'r') as md:
long_description = md.read()
'''
setuptools.setup(
name='loglizer', # pip项目名称
version='1.0', # 项目版本
author='avocador', # 作者姓名
author_email='avocador@163.com', # 作者邮箱
maintainer='avocador', # 维护人员姓名
description='描述', # pip项目网页上的介绍
# long_description=long_description, # 说明长文
# long_description_content_type='text/markdown', # README.md的语法
packages=setuptools.find_packages(), # setuptools将自动决定打包项目包含哪些文件及文件夹
classifiers=[
'Programming Language :: Python :: 3',
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
], # 项目所属分类列表
install_requires=[
'sklearn',
'pandas'
], # 项目依赖的库
python_requires='>=3', # 项目需要的Python版本
)
项目打包及上传
项目打包
根目录下运行打包命令:
python setup.py sdist bdist_wheel
打包文件夹会出现在根目录\dist\
文件夹下,内含以.tar.gz
和.whl
为后缀的文件。接下来就是要将打包的项目上传至pypi官网。
项目上传
根目录下运行上传命令:
python -m twine upload dist/*
根据提示数据pypi的用户名和密码,即可完成上传。
以上pip项目发布流程完成,即可通过pip install loglizer
方式安装(镜像源需待其更新后才可切换镜像源)
::aru:lurking::