首页 PIP 包生成发布使用学习文档
文章
取消

PIP 包生成发布使用学习文档

PIP 包生成发布使用学习文档

一个在 https://pypi.org 发布 python pip 的包样例,手把手教你从 0 开始发布一个 pip 的包。。

PyPi


源代码项目结构
LICENSE // 证书可以任选一个的 README.md // 说明文档 setup.py // 安装包 ├─exampe_pip_package // 源代码目录 __init__.py // 源代码文件 └─tests-exampe_pip_package-examples // 测试源代码的目录 └─pip_test.get_info // 按照类来进行测试子目录的命名 pip_test.get_info // 按照方法来命名测试类文件
安装必要的软件

安装生成归档文件的软件

python -m pip install --user --upgrade setuptools wheel

安装发布上传包

python -m pip install --user --upgrade twine
注册 PYPI 账号

测试账号注册地址,用于测试版本

正式账号注册地址,用于正式版本发布

Note: 测试账号和正式账号注册一次就可以的,但是要分别去认证可发布的邮箱。

打包和发布

生成发布包(生成归档文件)

python setup.py sdist bdist_wheel

注册包

twine register dist/exampe_pip_package.whl

发布

发布到测试环境

twine upload --repository-url https://test.pypi.org/legacy/ dist/*

发布到正式环境

twine upload --repository-url https://upload.pypi.org/legacy/ dist/*

发布说明

E:\selfDatas\exampe_pip_package>twine upload --repository-url https://test.pypi. org/legacy/ dist/* Enter your username: 输入用户名不是邮箱 Enter your password: 输入密码 Uploading distributions to https://test.pypi.org/legacy/ ……

包管理

包已经上传成功的话,可以登录 PyPI 网站 可以在右侧导航栏看到管理入口。 点击包名进去后你可以对你的包进行管理。

发布成功后安装(pip install 方式)

测试包的安装

pip install -i https://test.pypi.org/simple/ exampe-pip-package

正式版本的安装

pip install exampe-pip-package

更新包,可以使用 --upgrade 参数来更新

pip install exampe-pip-package --upgrade
安装包后的使用

import 方式使用

>>> from exampe_pip_package import pip_test >>> example = pip_test() >>> example.get_info() Hello, this is just a pip package example. Package name is exampe_pip_package
发布成功后安装(requirements 方式使用)

目录结构

E:. main.py # 需要使用包的代码 requirements.txt # 需要使用到包的包名 run.sh # 安装包并执行文件

详见 requirements 方式使用

免授权方式发布

在 Home 目录下创建文件 ~/.pypirc,内容如下

[distutils] index-servers = pypi [pypi] repository: https://pypi.python.org/pypi username: <username> password: <pass> # 不设置的话,发布时会提示手动输入的
可能遇到的错误

错误的用户验证信息,你需要创建一个用户验证文件 ~/.pypirc。请参阅上文。

Upload failed (403): Invalid or non-existent authentication information.

你需要先注册你的包才可以开始上传,运行注册命令:python setup.py register

Upload failed (403): You are not allowed to edit 'xxx' package information

你的 PyPI 账户还没完成邮箱验证,你需要去注册邮箱找到一封验证邮件完成验证后再重试失败的步骤。

Server response (401): Incomplete registration; check your email

你的 setup.py 文件中的 classifier 信息有误,请按官网的正确分类书写classifier.

Server response (400): Invalid classifier "Topic :: Software Development :: Utilities"

你还没打包就开始了上传命令,建议打包和上传的操作放在一起做,比如:twine upload dist/*

error: No dist file created in earlier command

网络问题,请再次尝试

error: Upload failed (499): Client Disconnected

每次必须使用不同的版本号,所以建议先在测试版测试好了,再在正式版发布的。

Upload failed (400): File already exists
更多相关信息,见官方文档More info
本文由作者按照 CC BY 4.0 进行授权