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

问题描述:

我在业余时间写了一个django应用程序,用于我们在工作中运行的脚踢比赛。我想明智地使用这个时间,并加快virtualenv,pip,打包,django 1.3以及如何编写一个可轻松重新分发的应用程序。到现在为止还挺好。如何打包python应用程序使其可以pip安装?

我可以达到包装的一部分。例如,GitHub上的很多django应用程序大都是以大致相同的方式捆绑在一起的。我将以django-uni-forms为例。

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

通常是生成必需的包装文件还是手工制作?可以描述依赖关系并安装吗?我的应用程序取决于django-uni-forms,并且我在我的应用程序中使用我用来安装依赖项的requirements.txt文件中列出了它。但这是包装系统可以照顾的东西吗?

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

是的,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

+4

此外,现在有一部分解释[如何打包Django应用程序](https://docs.djangoproject.com/en/dev/intro/reusable-apps/#packaging-your -app)在官方文档中 – 2013-10-04 09:23:51