我在业余时间编写了一个django应用程序,为我们在工作中举办的足球小费比赛做准备。我想我应该明智地利用这段时间,快速掌握virtualenv、pip、打包、django 1.3以及如何编写可轻松重新分发的应用程序。到现在为止还好。
我已经准备好包装部分了。例如,GitHub上的许多django应用程序都是以同样的方式(大致)捆绑在一起的。我将以django-uni-forms为例。
我做的一个假设是,MANIFEST.in
和setup.py
是pip完成其工作所需的唯一组件。对吗?如果我的假设是错误的,还需要哪些其他组件?
所需的打包文件通常是生成的,还是手工制作的?是否可以描述依赖关系,然后再进行安装?我的应用程序依赖于django-uni-forms
,并且我将其列在我的应用程序中的requirements.txt
文件中,我使用该文件来安装依赖项;但是打包系统可以处理这件事吗?
我需要遵循什么步骤来打包我的应用程序,以便pip能够安装它和任何依赖项?
发布于 2011-03-20 04:54:30
是的,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
安装。
正如Pierre在评论中指出的那样,现在Django的官方文档中也有一个相关的部分:Packaging your app
然后是这个“完全不完整”的指南,它对打包和上传包到PyPI给出了一个很好的概述:Sharing Your Labor of Love: PyPI Quick And Dirty
https://stackoverflow.com/questions/5360873
复制相似问题