如何打包Python应用以便可以使用pip安装?

96 投票
1 回答
39136 浏览
提问于 2025-04-16 14:01

我正在利用空闲时间写一个django应用程序,这是为了我们公司举办的足球竞猜比赛。我想趁这个机会好好学习一下virtualenv、pip、打包、django 1.3,以及如何写一个容易分发的应用程序。到目前为止,一切都挺顺利。

现在我进入了打包的环节。很多在GitHub上的django应用程序基本上都是以类似的方式打包的。我会用django-uni-forms作为例子。

我假设MANIFEST.insetup.py是pip工作所需的唯一文件,这个假设对吗?如果不对,还有哪些其他的组件是必要的呢?

这些打包所需的文件一般是自动生成的,还是需要手动制作?依赖关系可以描述并安装吗?我的应用程序依赖于django-uni-forms,我在应用程序中有一个requirements.txt文件,里面列出了这个依赖;但这个打包系统能处理这些吗?

我需要遵循哪些步骤来打包我的应用程序,以便pip能够安装它和任何依赖项?

1 个回答

90

是的,MANIFEST.insetup.py 应该就足够了。

这篇博客文章在这个话题上提供了很好的信息: 打包一个可重用的Django应用

还有另一篇详细的概述,对我帮助很大: Python打包用户指南

特别是关于如何包含你的静态文件(模板)的提示,这一点一开始可能不太明显。

是的,你可以在你的 setup.py 文件中指定所需的包,这些包在安装你的应用时会自动下载。

例如:

    install_requires = [
        'django-profiles',
        'django-uni-forms',
    ],

显然,现在我们有两个地方定义了依赖关系,但这并不意味着这些信息是重复的: setup.py 和 requirements.txt

通过这种设置,你的包应该可以通过 pip 安装。


正如Pierre在评论中提到的,现在Django的官方文档中也有相关的部分: 打包你的应用

还有这篇“完全不完整”的指南,真的很好地概述了如何打包和上传一个包到PyPI: 分享你的心血:PyPI快速入门

撰写回答