如何打包 python 应用程序以使其可 pip 安装?
Posted
技术标签:
【中文标题】如何打包 python 应用程序以使其可 pip 安装?【英文标题】:How do I package a python application to make it pip-installable? 【发布时间】:2011-07-18 16:01:00 【问题描述】:我在业余时间编写了一个 django 应用程序,用于我们在工作中举办的足球小费比赛。我想我会明智地利用这段时间,并快速了解 virtualenv、pip、打包、django 1.3 以及如何编写一个易于再分发的应用程序。到目前为止,一切顺利。
我负责包装部分。例如,GitHub 上的许多 django 应用程序大多(大致)以相同的方式捆绑在一起。我以django-uni-forms 为例。
我做的一个假设是 MANIFEST.in
和 setup.py
是 pip 完成其工作所需的唯一部分。那是对的吗?如果我的假设是错误的,还需要哪些其他组件?
所需的打包文件一般是生成的,还是手工制作的?可以描述依赖关系然后安装吗?我的应用程序依赖于django-uni-forms
,我将它列在我的应用程序中的requirements.txt
文件中,我曾经使用它来安装依赖项;但这是包装系统可以处理的事情吗?
我需要遵循哪些步骤来打包我的应用程序以使 pip 能够安装它和任何依赖项?
【问题讨论】:
【参考方案1】:是的,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 在 cmets 中指出的,现在 Django 的官方文档中也有一个相关部分:Packaging your app
然后是这个“完全不完整”的指南,它确实很好地概述了打包和上传包到 PyPI:Sharing Your Labor of Love: PyPI Quick And Dirty
【讨论】:
官方文档中现在也有解释How to package a Django app的部分以上是关于如何打包 python 应用程序以使其可 pip 安装?的主要内容,如果未能解决你的问题,请参考以下文章
从 Play 商店更新我的应用程序后,如何在 Android 上保存 QSettings 文件的内容以使其可读?
如何调整 sklearn 中 plot_tree 图的大小以使其可读?
jquery-select2 - 将 select2 添加到现有的下拉代码中以使其可搜索