准备 setup.py
自己的包写好后还需要准备一个setup.py
文件用于打包和安装,结构如下
my-package/
|- mypkg/
|- utils/
|- setup.py
一个简单的示例文件:
#!/usr/bin/env python
# coding: utf-8
from setuptools import setup
setup(
name='包的名字,这里是 mypkg',
version='发布的版本,例如 0.0.1',
author='作者,例如 barwe',
author_email='作者邮箱,例如 barwechin@163.com',
url='包发布的地址,例如 https://pypi.org/project/docxt',
description='对包功能的一个简要描述',
# 需要打包的目录,只有这些目录才能 from import
packages=['mypkg', 'mypkg.utils'],
# 安装此包时需要同时安装的依赖包
install_requires=['beautifulsoup4'],
)
本地打包
执行下面这个命令开始打包:
python setup.py sdist
这将在setup.py
文件同级目录下生成一个 dist 目录,其结构为
my-package/
|- setup.py
|- dist/
|- mypkg-0.0.1.tar.gz
本地安装和更新
打完包后可以先本地安装测试一下功能是不是都正常。
pip install dist/mypkg-0.0.1.tar.gz
上传到 pypi
先安装上传工具 twine:
pip install twine
注册 pypi 账户:https://pypi.org/
找到 Account settings → API tokens,新建一个 API token:
- Token name:填一个 token 名称,与已有 token 不能重复
- Scope:选择 Entire account (all projects),也可以为单独的项目生成 token
生成的 token 值是一个以 pypi- 开头的很长的字符串。
然后配置免密上传:
[pypi]
repository = https://upload.pypi.org/legacy/
username = __token__
password = 这里填以pypi-开头的的那个很长的token值
然后上传打包结果:
$ twine upload dist/mypkg-0.0.1.tar.gz
Uploading distributions to https://upload.pypi.org/legacy/
Uploading docxt-0.1.2.tar.gz
100%|███████████████████████████████| 6.10k/6.10k [00:02<00:00, 2.42kB/s]
View at:
https://pypi.org/project/docxt/0.1.2/
从 pypi 安装和更新
安装:
pip install mypkg
升级:
pip install --upgrade mypkg
如果 pip 没有使用官方源,更新时版本可能滞后,可以从官方源安装和升级:
pip install -i https://pypi.python.org/simple mypkg
pip install -i https://pypi.python.org/simple --upgrade mypkg
或者将官方源加入备用源文件:
pip config set global.extra-index-url https://pypi.python.org/simple
评论区