如何打包Python应用程序使其可以安装?
我在业余时间正在写一个Django应用程序,来进行一个我们正在运行的脚踢比赛。 我想明智地使用这个时间,并加快virtualenv,pip,包装,django 1.3,以及如何编写一个可重新分发的应用程序。 到现在为止还挺好。
我在包装部分。 GitHub上的很多django应用程序大多都是以大致相同的方式捆绑在一起的。 我将以django-uni-forms为例。
我正在做的一个假设是MANIFEST.in
和setup.py
是pip需要完成的唯一必需工作。 那是对的吗? 如果我的假设是错误的,还需要其他什么组件?
通常是生成必需的包装文件还是手工制作? 可以描述依赖关系,然后安装吗? 我的应用程序依赖于django-uni-forms
,并且在应用程序中的一个requirements.txt
文件中列出了我用来安装依赖关系的文件。 但这是包装系统可以照顾的东西吗?
我需要遵循什么步骤打包我的应用程序,使得pip能够安装它以及任何依赖项?
是的, MANIFEST.in
和setup.py
应该足够了。
这个博客文章确实有一些关于这个主题的好消息: 打包一个Django可重用的应用程序
这是另一个很好的,详细的概述,帮助了我很多: Python打包用户指南
特别是包含静态文件(模板)的提示非常重要,因为这可能一开始并不明显。
是的,你可以在你的setup.py
指定需要的软件包,在安装你的应用程序时会自动获取这些软件包。
例如:
install_requires = [ 'django-profiles', 'django-uni-forms', ],
显然现在我们有两个地方定义了依赖关系,但这并不一定意味着这些信息是重复的: setup.py vs requirements.txt
有了这个设置你的包应该可以通过pip
安装。
正如皮埃尔在评论中指出的那样,现在在Django官方文档中也有一个相关部分: 打包你的应用程序
然后就是这个“完全不完整”的指南,真正给出了一个关于包装和上传PyPI的很好的概述: 分享你的爱的劳动:PyPI快速和肮脏