如何打包python应用程序使其可以pip安装?
我在业余时间写了一个django应用程序,用于我们在工作中运行的脚踢比赛。我想明智地使用这个时间,并加快virtualenv,pip,打包,django 1.3以及如何编写一个可轻松重新分发的应用程序。到现在为止还挺好。如何打包python应用程序使其可以pip安装?
我可以达到包装的一部分。例如,GitHub上的很多django应用程序大都是以大致相同的方式捆绑在一起的。我将以django-uni-forms为例。
我正在做的一个假设是MANIFEST.in
和setup.py
是pip需要完成其工作的唯一必需部分。那是对的吗?如果我的假设错误,还需要其他什么组件?
通常是生成必需的包装文件还是手工制作?可以描述依赖关系并安装吗?我的应用程序取决于django-uni-forms
,并且我在我的应用程序中使用我用来安装依赖项的requirements.txt
文件中列出了它。但这是包装系统可以照顾的东西吗?
我需要遵循什么步骤来打包我的应用程序,使pip能够安装它和任何依赖项?
是的,MANIFEST.in
和setup.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
此外,现在有一部分解释[如何打包Django应用程序](https://docs.djangoproject.com/en/dev/intro/reusable-apps/#packaging-your -app)在官方文档中 – 2013-10-04 09:23:51