前言
因为自已平时会把一个常用到逻辑写成一个工具python脚本,像关于时间字符串处理,像关于路径和文件夹遍历什么的工具。
每一次新建一个项目的时候都要把这些工具程序复制到每个项目中,换一个电脑后还要从github生新下载后再复制到项目中,实在太麻烦。
最后想想,还是建一个自已的pip项目会比较好。
类似于 java 将代码上传到 mvn 中央仓库。python 也可以做类似的事情。
项目编写
在 github 中创建对应的项目。
先建一个目录,比如 pycc,这个里边放的是你的项目代码
在这个 pycc 目录里,新建一个 __init__.py
,这个文件里可以什么都不用写,然后就是你要发布的 .py
文件
编写 setup.py
这里重点说明一下这个setup.py文件,因为整个pip项目的发布和上传都是基于这个setup.py文件完成的。
下面是在官方基础上修改的例子。
import setuptools
with open("README.md", "r", encoding='utf8') as fh:
long_description = fh.read()
setuptools.setup(
# 别人搜索会用到的项目名称
# 这个名字必须是独一无二的,你可以 pip search + 名字确保唯一性。
name="pyopencc",
version="0.0.1",
keywords = ["tool","opencc", "opencc-py", "opencc-python", "Chinese Convert", "中文繁简体转换"],
author="houbb",
author_email="houbinbin.echo@gmail.com",
description="Open Chinese Convert is an opensource project for conversion between Traditional Chinese and Simplified Chinese for python.",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/houbb/pycc",
# 这个参数是导入目录下的所有__init__.py包
packages=setuptools.find_packages(),
include_package_data = True,
# 这是一个数组,里边包含的是咱的pip项目引用到的第三方库,如果你的项目有用到第三方库,要在这里添上第三方库的包名,如果用的第三方版本不是最新版本,还要有版本号。
install_requires = [],
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
)
开源协议
必须符合 https://upload.pypi.org/legacy/
打包自已的项目
环境准备
确定安装了最新版本的 setuptools
和 wheel
python3 -m pip install --user --upgrade setuptools wheel
日志如下:
192:pycc houbinbin$ python3 -m pip install --user --upgrade setuptools wheel
Cache entry deserialization failed, entry ignored
Collecting setuptools
Downloading https://files.pythonhosted.org/packages/c8/b0/cc6b7ba28d5fb790cf0d5946df849233e32b8872b6baca10c9e002ff5b41/setuptools-41.0.0-py2.py3-none-any.whl (575kB)
100% |████████████████████████████████| 583kB 6.4kB/s
Collecting wheel
Downloading https://files.pythonhosted.org/packages/96/ba/a4702cbb6a3a485239fbe9525443446203f00771af9ac000fa3ef2788201/wheel-0
.33.1-py2.py3-none-any.whl
Installing collected packages: setuptools, wheel
The script wheel is installed in '/Users/houbinbin/Library/Python/3.7/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed setuptools-41.0.0 wheel-0.33.1
运行打包命令
在和 setup.py 相同的目录下,执行下面的命令
python3 setup.py sdist bdist_wheel
命令正常执行,会在 dist 下生成如下的文件:
openccpy-0.0.1-py3-none-any.whl
openccpy-0.0.1.tar.gz
- 文件说明
tar.gz文件是源存档,而.whl文件是构建的分发。
较新的pip版本优先安装构建的发行版,但如果需要,将回退到源代码存档。
您应该始终上传源存档并为项目兼容的平台提供构建的存档。
在这种情况下,我们的示例包在任何平台上都与Python兼容,因此只需要一个构建的发行版。
上传打包文件
注册账号
在 https://pypi.org/ 上注册一个账号,然后。注册好后在邮箱激活
一般注册流程都是这么操作了,这里就不多说了。
记住自己的账号密码。
安装 twine
python3 -m pip install --user --upgrade twine
上传到 pypi
执行命令
python3 -m twine upload dist/*
日志
Uploading distributions to https://upload.pypi.org/legacy/
Uploading openccpy-0.0.1-py3-none-any.whl
100%|██████████████████████████████████████████████████████████████████████████████████████| 8.99k/8.99k [00:04<00:00, 2.26kB/s]
Uploading openccpy-0.0.1.tar.gz
100%|██████████████████████████████████████████████████████████████████████████████████████| 4.94k/4.94k [00:01<00:00, 3.13kB/s]
如果你不想重复输入密码
在上传前,要建一个文件,$HOME/.pypirc
,$HOME目录在linux或者mac系统下就是~/目录。在这里建一个.pypirc文件。
里边的内容如下:
[distutils]
index-servers = pypi
[pypi]
username:你的PyPi用户名
password:你的PyPi密码
查看自己的项目
查找
$ pip search openccpy
openccpy (0.0.1) - Open Chinese Convert is an opensource project for
conversion between Traditional Chinese and Simplified
Chinese for python.
使用
就和使用其他开源包一样。