我正在业余时间为我们在工作中举办的足球倾倒比赛编写一个Django应用程序.我想我应该明智地利用这段时间,快速了解viralenv、pip、打包、Django 1.3,以及如何编写易于重新分发的应用程序.到现在为止还好.

我已经准备好包装部分了.例如,GitHub上的许多Django应用程序大多是(大致)以同样的方式Bundle 在一起的.我将以django-uni-forms为例.

我的一个假设是,MANIFEST.insetup.py是pip完成其工作所需的唯一部件.对吗?如果我的假设是错误的,还需要哪些组件?

所需的打包文件通常是生成的,还是手工制作的?可以描述依赖项,然后再安装吗?我的应用程序依赖于django-uni-forms,我在应用程序中的requirements.txt文件中列出了它,我用它来安装依赖项;但这是包装系统可以解决的问题吗?

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

推荐答案

是的,MANIFEST.insetup.py应该足够了.

这篇博客文章确实提供了一些关于这个话题的好信息:

下面是另一个很好的、详细的概述,它对我帮助很大: Python Packaging User Guide

尤其是将静电文件(模板)包含在内的提示非常重要,因为这在一开始可能并不明显.

是的,您可以在您的setup.py中指定所需的软件包,这些软件包在安装您的应用程序时会自动获取.

例如:

    install_requires = [
        'django-profiles',
        'django-uni-forms',
    ],

显然,现在我们有两个地方定义了依赖关系,但这并不一定意味着这些信息是重复的:setup.py vs requirements.txt

有了这个设置,你的软件包应该可以通过pip安装.


正如Pierre在 comments 中指出的那样,现在Django的官方文档中也有一个相关的部分:Packaging your app

还有这个"完全不完整"的指南,它对打包和上传包到PyPI:Sharing Your Labor of Love: PyPI Quick And Dirty给出了一个很好的概述

Django相关问答推荐

使用django直接计算geohash而不创建模型

在Django管理中仅显示外键的特定值

Django和静态文件

基于Django类的视图:除非登录,否则拒绝访问future 日期

Django prefetch_related 与 3 个不直接相关的模型

Django ModelForm 没有指定模型类

在 Django 管理员中嵌套内联?

使用 Python / Django 的 Google API 示例的 Oauth

Django -- User.DoesNotExist 不存在?

django模板中的vscode html自动格式

测试 Django 信号的正确方法

UnicodeEncodeError:ascii编解码器无法编码字符

Django - 配置不当:模块django.contrib.auth.middleware

Django unique_together 与可为空的 ForeignKey

Django模板转换为字符串

Django:在还原(迁移)后try 访问数据库时权限被拒绝

找不到 msguniq.确保您安装了 GNU gettext 工具 0.15 或更新版本. (Django 1.8 和 OSX ElCapitan)

Django - 在设置中使用反向 url 映射

Django 用户配置文件

如何使用 Django/nginx 部署仅限 HTTPS 的站点?