问题:如何打包python应用程序使其可点子安装?
我在业余时间正在编写django应用程序,以参加我们正在上班的小费竞赛。我认为我会明智地使用这段时间,并逐步了解virtualenv,pip,打包,django 1.3以及如何编写易于重新分发的应用程序。到目前为止,一切都很好。
我要负责包装部分。例如,GitHub上的许多django应用程序大多(大致)以相同的方式捆绑在一起。我将以django-uni-forms为例。
我所做的一个假设是,MANIFEST.in
和setup.py
是pip完成工作所需的唯一必需的部分。那是对的吗?如果我的假设是错误的,还需要哪些其他组件?
是否通常生成了所需的包装文件,或者是手工制作的?可以描述依赖项然后再安装吗?我的应用程序依赖django-uni-forms
,并且在requirements.txt
我用来安装依赖项的应用程序中的文件中列出了它;但这是包装系统可以解决的问题吗?
我需要遵循哪些步骤来打包我的应用程序,以使pip能够安装它和任何依赖项?
回答 0
是的,MANIFEST.in
而且setup.py
应该是足够的。
这篇博客文章确实具有有关此主题的一些很好的信息: 打包Django可重用应用程序
这是另一个很好的详细概述,对我有很大帮助: Python打包用户指南
尤其是包含静态文件(模板)的提示很重要,因为起初可能并不明显。
是的,您可以在setup.py
其中指定所需的软件包,这些软件包在安装应用程序时会自动获取。
例如:
install_requires = [
'django-profiles',
'django-uni-forms',
],
显然,现在我们在两个地方定义了依赖项,但这并不一定意味着这些信息是重复的:setup.py与requirements.txt
通过此设置,您的软件包应可通过安装pip
。
正如Pierre在评论中指出的那样,Django的官方文档中现在还有一个相关的部分: 打包您的应用
然后是这个“完全不完整”的指南,它确实很好地概述了打包并将程序包上载到PyPI:分享您的爱的劳动:PyPI的快速与肮脏