背景:由于笔者公司做自动化时,经常需要使用到各种时间相关的数据,每次使用time模块转换很麻烦,笔者就自己封装了一些常用时间转换方法,诶,您猜怎么着,用了之后大家都说好,于是就想着怎么弄成python包供大家一起使用,经过百度之后,发现最简单明了的流程,所以记录下,方便以后再用。
安装依赖包
whell
用来打包,twine
用来上传包到 pypi.org
pip install whell #一般python自带,不用下载
pip install twine
如果无法下载,请尝试更换下载源,也可能会遇到pip版本太低需要升级的情况,升级后在试试安装。
pip install wheel
改为:
pip install wheel -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
注册pypi账号(已有可忽略这步)
注册地址:PyPI · The Python Package Index
创建包文件
需要打包的项目结构图如下:
/packaging_tutorial #任意名称均可
/example_pkg # 需要上传的包名称,里面装的是你的代码
xx.py # 你的代码、函数或方法逻辑
__init__.py
setup.py # 打包的配置文件
LICENSE # 里面放许可证
README.md # 项目简介
以笔者的项目为例子:
time_util_wj 目录就是我们要打包的项目目录(这个名称和setup.py里的项目名称要一致,也是pip install XXXX 的名字是一样的)。 LICENSE
是软件的开源协议,如果不知道怎么选可以到https://choosealicense.com 这里选择一下。 readme.md
是软件或包的说明,可以写一些仓库地址简要说明。 setup.py
打包的配置文件,后边详细说明。
setup.py打包配置文件说明
setup.py
是setuptools的构建脚本。它告诉setuptools你的包(例如名称和版本)以及要包含的代码文件。
打开setup.py
并输入以下内容。您应该更新软件包名称以包含您的用户名(例如,time_util_wj
如果您愿意,可以个性化其他值)
setup.py
:
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="time_util_wj", # 项目名称,保证它的唯一性,不要跟pypi上已存在的包名冲突即可
version="1.0.0", # 程序版本
py_modules=['time_utils'], # 需要上传的模块名称,这样可以让这些模块直接import导入
author="WangJie", # 项目作者
author_email="[email protected]", # 作者邮件
description="提供了各种时间转换的方法", # 项目的一句话描述
long_description=long_description, # 加长版描述
long_description_content_type="text/markdown", # 描述使用Markdown
url="https://github.com/wangjie-jason/time_utils", # 项目地址
packages=setuptools.find_packages(), # 无需修改
classifiers=[
"Programming Language :: Python :: 3", # 使用Python3
"License :: OSI Approved :: Apache Software License", # 开源协议
"Operating System :: OS Independent",
],
)
至此,所有打包的准备工作都已经准备好了,接下来就是利用命令来打包上传了。
打包
项目根目录下打开终端(也就是Automation目录下):
python3 setup.py sdist bdist_wheel
打包完毕,此时的项目目录如下:
dist
下就是要上传的打包文件了。
上传到http://pypi.org
这里的上传可以使用测试上传或是直接上传。
测试上传会将包传到 https://test.pypi.org/
,所以你需要在这个地址下注册一个测试账号,然后使用一下命令进行上传,这里不再介绍了。
python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*
直接上传到 pypi.org
,使用命令:
python3 -m twine upload dist/*
然后输入在 pypi.org
注册的账号密码就可以上传了。
python3 -m twine upload dist/*
Uploading distributions to https://upload.pypi.org/legacy/
Enter your username: xxxxxx
Enter your password:
如果没有什么错误就可以上传成功了!登录网站就可以看到刚刚上传的软件包了
然后使用 pip install XXXX
安装测试吧。
其他注意事项
如果需要更新软件包,修改完代码后记得修改 setup.py
中的软件版本,这样才能正常上传。
至此,一次Python软件包的上传就搞定了,简单吧?