【问题标题】:How do I package a python application to make it pip-installable?如何打包 python 应用程序以使其可 pip 安装?
【发布时间】:2017-05-29 09:55:25
【问题描述】:

我在业余时间编写了一个 django 应用程序,用于我们在工作中进行的足球小费比赛。我想我会明智地利用这段时间,了解 virtualenv、pip、打包、django 1.3 以及如何编写一个易于再分发的应用程序。到目前为止,一切顺利。

我负责包装部分。例如,GitHub 上的许多 django 应用程序大多(大致)以相同的方式捆绑在一起。我以django-uni-forms 为例。

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

所需的打包文件一般是生成的,还是手工制作的?可以描述依赖关系然后安装吗?我的应用程序依赖于django-uni-forms,我将它列在我的应用程序中的requirements.txt 文件中,我曾经使用它来安装依赖项;但这是包装系统可以处理的事情吗?

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

【问题讨论】:

    标签: python django dependencies pip


    【解决方案1】:

    是的,MANIFEST.insetup.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 在 cmets 中指出的,现在 Django 的官方文档中也有一个相关部分:Packaging your app

    然后是这个“完全不完整”的指南,它确实很好地概述了打包和上传包到 PyPI:Sharing Your Labor of Love: PyPI Quick And Dirty

    【讨论】:

    猜你喜欢
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    相关资源
    最近更新 更多