如何打包python应用程序以使其可以进行pip安装?

Jos*_*ton 95 python django dependencies pip

我正在闲暇时间写一个django应用程序,用于我们在工作中进行的一场小费比赛.我认为我会明智地利用这段时间,并加快virtualenv,pip,packaging,django 1.3的速度,以及如何编写一个易于重新分发的应用程序.到现在为止还挺好.

我喜欢包装部分.例如,GitHub上的许多django应用程序大多以相同的方式捆绑(大致).我将以django-uni-forms为例.

我正在做的一个假设是,MANIFEST.in并且setup.py是pip需要完成其工作的唯一必需件.那是对的吗?如果我的假设错了,还需要哪些其他组件?

是否通常生成所需的包装文件,还是手工制作?是否可以描述依赖关系并进行安装?我的应用程序依赖于django-uni-forms,我将它列在requirements.txt我的应用程序中的一个文件中,我用它来安装依赖项; 但这是包装系统可以照顾的东西吗?

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

ari*_*rie 88

是的,MANIFEST.in而且setup.py应该是足够的.

这篇博文真的有关于这个主题的一些很好的信息: 打包一个Django可重用的应用程序

这是另一个很好的,详细的概述,它帮助了我很多: Python包装用户指南

特别是包含静态文件(模板)的技巧很重要,因为这可能一开始并不明显.

是的,您可以setup.py在安装应用程序时自动提取所需的包.

例如:

    install_requires = [
        'django-profiles',
        'django-uni-forms',
    ],
Run Code Online (Sandbox Code Playgroud)

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

使用此设置,您的包应该可以通过安装pip.


正如皮埃尔在评论中指出的那样,现在Django的官方文档中还有一个相关部分:打包您的应用程序

然后就是这个"完全不完整"的指南,它真的很好地概述了包装和上传包装到PyPI:分享你的爱的劳动:PyPI快速和肮脏

  • 现在还有一个部分解释[如何打包Django应用程序](https://docs.djangoproject.com/en/dev/intro/reusable-apps/#packaging-your-app)在官方文档中 (4认同)