如何打包python应用程序以使其可以进行pip安装?

时间:2011-03-19 07:53:53

标签: python django dependencies pip

我正在业余时间写一个django应用程序,用于我们在工作中进行的小费小费比赛。我认为我会明智地利用这段时间,并加快virtualenv,pip,packaging,django 1.3的速度,以及如何编写一个易于重新分发的应用程序。到目前为止,非常好。

我喜欢包装部分。例如,GitHub上的许多django应用程序大多以相同的方式捆绑(大致)。我将以django-uni-forms为例。

我正在做的一个假设是,MANIFEST.insetup.py是pip需要完成其工作的唯一必需部分。那是对的吗?如果我的假设是错误的,还需要哪些其他组件?

是否通常会生成所需的包装文件,还是手工制作?是否可以描述依赖关系并进行安装?我的应用程序依赖于django-uni-forms,我将它列在我的应用程序中的requirements.txt文件中,我用它来安装依赖项;但这是包装系统可以照顾的东西吗?

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

1 个答案:

答案 0 :(得分:88)

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

这篇博文真的有关于这个主题的一些很好的信息: Packaging a Django reusable app

这是另一个很好的,详细的概述,对我有很大帮助: Python Packaging User Guide

特别是包含静态文件(模板)的提示非常重要,因为这可能一开始并不明显。

是的,您可以在setup.py中指定在安装应用时自动提取的所需包。

例如:

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

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

使用此设置,您的包应该可以通过pip安装。


皮埃尔在评论中指出,现在Django官方文档中也有相关部分:Packaging your app

然后有这个“完全不完整”的指南,它真的很好地概述了打包并将包上传到PyPI:Sharing Your Labor of Love: PyPI Quick And Dirty