怎么将自己写的包打包上传到PyPi供其他人下载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么将自己写的包打包上传到PyPi供其他人下载相关的知识,希望对你有一定的参考价值。

参考技术A

打包和上传依赖wheel和twine这两个包。

比方说我们想写这样一个包,这个包只有一个功能,那就是打印程序员佛祖字符画。

这个包就提供了一个佛祖字符画和一个打印函数。

__main__.py 让这个包可以被 python -m 直接运行,而 __main__.py 其实也就只干了一件事,那就是调用 print_buddha 打印字符画。

打包项目你需要学习以下知识

加星的是必须的,其他的可有可无不影响打包和上传PyPi,就是不规范而已。

最基本的 setup.py

然后我们试一下打包:

这是个组合命令,意思是先打sdist,再打bdist_wheel。

sdist打出来的是tar.gz格式压缩包,里面就是包源文件,可以供直接解压然后 python setup.py install 安装。

bdist_wheel打出来的是whl格式文件,这是pip官方安装包文件格式。

注意:egg格式已经过时了,现在PyPi的包都是用whl格式。

PiPy上传规范是同时要tar.gz和whl两个格式的包。

注意:打了星的是必须参数

描述性参数只是作为PKG_INFO用的,没有什么特殊作用,就是描述用的,用来供pip和PyPi管理的,因此看上面就可以了。

setup.py 需要提供以上参数数据用来搜集需要打到包里的文件:
注意:打了星的是重要参数

根据上面的说明,我们来演练一下。首先项目要做些修改和添加一些功能。

接着修改setup.py:

注意: data_files 、 scripts 这两个参数不享受 package_dir 的效果,必须指定根目录下相对路径。

打包看看:

试一下安装:

我们去PYTHON_HOME看看我们的包被安装到哪里。

我们的包各种文件都被安装到了我们想要的位置。

试一下命令行调用 buddha.bat :

python里导入 buddha 模块:

python里导入 single_module 模块:

例子:

更加详细的说明可以去参考官方文档《 setuptools documeng: Building and Distributing Packages with Setuptools 》

到 PyPi 官网注册一个账号,通过各种验证通。

将dist下的tar.gz和whl文件上传到PyPi。

会提示输入用户名密码,照着做就行。

上传成功后就会出现在PyPi和你的项目页里。

你无法重新上传覆盖版本,所以如果你的包有bug或者有修改,你必须修改setup.py里的version,然后再打一次包上传。

PyPI 可以直接从 GitHub 提供包吗?

【中文标题】PyPI 可以直接从 GitHub 提供包吗?【英文标题】:Can PyPI serve packages directly from GitHub? 【发布时间】:2015-01-09 15:01:34 【问题描述】:

是否有任何方法可以将 PyPI 存储库直接链接到 GitHub 存储库,从而使最新版本的文件可供下载,而不是每次都上传文件?

【问题讨论】:

【参考方案1】:

不,PyPI 只提供上传到它的包。 pip 可以从 PyPI 以外的其他来源安装:

pip install https://github.com/sopython/sopython-site/tarball/master

pip install git+ssh://git@github.com/sopython/sopython-site@master#egg=sopython-site

【讨论】:

以上是关于怎么将自己写的包打包上传到PyPi供其他人下载的主要内容,如果未能解决你的问题,请参考以下文章

Java中如何导入自己写的包

如何将自己的Python代码打包发布到pypi上

Python 第三方包上传至 PyPI 服务器

Python 库打包分发简易指南

如何将 conda 骨架与未上传到 pypi 的包一起使用?

Pypi 发布自己的包