我在业余时间编写了一个 django 应用程序,用于我们在工作中举办的足球小费比赛。我想我会明智地利用这段时间,并快速了解 virtualenv、pip、打包、django 1.3 以及如何编写一个易于再分发的应用程序。到目前为止,一切顺利。
我负责包装部分。例如,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
安装.
正如 Pierre 在评论中指出的,现在 Django 的官方文档中也有一个相关部分:Packaging your app
然后是这个“完全不完整”的指南,它确实很好地概述了打包和上传包到 PyPI:Sharing Your Labor of Love: PyPI Quick And Dirty
关于python - 如何打包 python 应用程序以使其可 pip 安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5360873/