如何打包Python应用以便可以使用pip安装?
我正在利用空闲时间写一个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
应该就足够了。
这篇博客文章在这个话题上提供了很好的信息: 打包一个可重用的Django应用
还有另一篇详细的概述,对我帮助很大: Python打包用户指南
特别是关于如何包含你的静态文件(模板)的提示,这一点一开始可能不太明显。
是的,你可以在你的 setup.py
文件中指定所需的包,这些包在安装你的应用时会自动下载。
例如:
install_requires = [
'django-profiles',
'django-uni-forms',
],
显然,现在我们有两个地方定义了依赖关系,但这并不意味着这些信息是重复的: setup.py 和 requirements.txt
通过这种设置,你的包应该可以通过 pip
安装。
正如Pierre在评论中提到的,现在Django的官方文档中也有相关的部分: 打包你的应用
还有这篇“完全不完整”的指南,真的很好地概述了如何打包和上传一个包到PyPI: 分享你的心血:PyPI快速入门