美文网首页
无处安放的Py插件,如何正确使用setup.py打包发布

无处安放的Py插件,如何正确使用setup.py打包发布

作者: 虐心笔记 | 来源:发表于2019-12-15 10:27 被阅读0次

    Python 有非常丰富的第三方库和插件可以使用,最常用的方式安装python的相关插件和库时,我们一般使用“pip install  模块名。很多开发者会把自己写的一些公用方法库或者插件上传至 Pypi ,发布一个属于自己的插件,要想向 Pypi 仓库提交自己开发的包,分为几个步骤。下面详细会描述整个打包分发的过程;

一、setup.py 说明

 编写第三方插件,首要是编写 setup.py 文件,有兴趣的可以看下之前下载的一些第三库的源代码文件,目录下面一般都会有setup.py, 在本地可以  python setup.py install  直接安装。setup.py 文件其实就是打包配置文件.描述了一些相关信息,比如是谁发布的,依赖包有哪些,主函数入口描述等配置信息,当然也可以自定义一些 Command 命令.

name : 项目名称

version: (-V) 项目版本号

author : 发布人

author_email: 发布人的邮箱地址

url: 可以放上程序的 GitHub 地址

license: 授权信息

description: 简单描述

long_description: 程序的详细描述,一般直接引用 README.md 文件即可

platforms: 适用的软件平台列表

classifiers: 所属分类列表

keywords: 关键字列表

packages: 需要处理的包目录(包含__init__.py的文件夹),默认find_packages()

cmdclass: 自定义 cmd 命令

data_files: 打包时需要打包的数据文件、图片、配置文件

package_dir : 描述 setuptools 哪些目录下的文件被映射到哪个源码包   

install_requires : 需要安装的依赖包

entry_points: 动态发现服务和插件,主函数功能入口。console_scripts 指定了命令行工具的名称。

comet.fms = comet.comet:MainRun , =号前面comet.fms 就是工具包的名称,=号后面comet.comet:MainRun 就是程序的入口地址,当然也可以指定多个,用逗号分隔即可 ;

    上面只描述了一些常用的参数,有兴趣的可以去 官方文档 查阅;


二、打包发布Pipy

1. 首先去 Pipy 仓库 注册账号用于代码上传,详细的注册过程,这里就不描述了。

2. 注册包信息,对应项目的根目录下面执行以下命令

python setup.py register

    输入刚才注册的账号密码信息,然后注册该包.Pipy上面就有一个仓库.可以存放不同版本的comet.fms

3. setuptools、wheel 安装至最新:

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

4. 安装twine 至最新版本:

python -m pip install --user --upgrade twine

5. 生成源文件:此命令应输出大量文本,完成后应在dist目录中生成两个文件

python setup.py sdist bdist_wheel

官网说:该tar.gz文件是源归档,而该.whl文件是 内置发行版。较新的pip版本优先安装内置发行版,但如果需要,将回落到源归档文件中。您应该始终上传源档案,并为项目兼容的平台提供内置档案。在这种情况下,我们的示例包在任何平台上都与Python兼容,因此仅需要一个内置发行版。

6. 上传源文件、whl至PyPi:

python -m twine upload dist/*

看到上面的显示,那么就是上传成功了。下面去看下 Pipy 仓库是否有代码存在了。

四、问题总结

但是过程中一般可能会遇到一些常用问题,以下解决方法来自网络各种 博客 和自身实践,如果以下问题并不能解决问题,请直接复制 response 报错信息百度,肯定有解决方案。

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

   缺少 ~/.pypirc 文件, 参考一下官网

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

    运行注册命令:python setup.py register,之后再进行上传

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

    检查下邮件

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

    setup.py文件中的classifier信息有误,参考一下官网的分类

5.classifier.error: No dist file created in earlier command

    确认下是否还没生成源文件就开始上传了。

6.error: Upload failed (499): Client Disconnected

   排查下是否是网络问题,重试几次。

7. Upload failed (400): File already exists

    版本号重复,每次上传之前记得更新版本号。

以上内容均来自网络和本人学习过程总结,如有问题可以给我留言。

相关文章

网友评论

      本文标题:无处安放的Py插件,如何正确使用setup.py打包发布

      本文链接:https://www.haomeiwen.com/subject/jolknctx.html