如何打包Python应用程序使其可以安装?

我在业余时间正在写一个Django应用程序,来进行一个我们正在运行的脚踢比赛。 我想明智地使用这个时间,并加快virtualenv,pip,包装,django 1.3,以及如何编写一个可重新分发的应用程序。 到现在为止还挺好。

我在包装部分。 GitHub上的很多django应用程序大多都是以大致相同的方式捆绑在一起的。 我将以django-uni-forms为例。

我正在做的一个假设是MANIFEST.insetup.py是pip需要完成的唯一必需工作。 那是对的吗? 如果我的假设是错误的,还需要其他什么组件?

通常是生成必需的包装文件还是手工制作? 可以描述依赖关系,然后安装吗? 我的应用程序依赖于django-uni-forms ,并且在应用程序中的一个requirements.txt文件中列出了我用来安装依赖关系的文件。 但这是包装系统可以照顾的东西吗?

我需要遵循什么步骤打包我的应用程序,使得pip能够安装它以及任何依赖项?

One Solution collect form web for “如何打包Python应用程序使其可以安装?”

是的, MANIFEST.insetup.py应该足够了。

这个博客文章确实有一些关于这个主题的好消息: 打包一个Django可重用的应用程序

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

特别是包含静态文件(模板)的提示非常重要,因为这可能一开始并不明显。

是的,你可以在你的setup.py指定需要的软件包,在安装你的应用程序时会自动获取这些软件包。

例如:

  install_requires = [ 'django-profiles', 'django-uni-forms', ], 

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

有了这个设置你的包应该可以通过pip安装。


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

然后就是这个“完全不完整”的指南,真正给出了一个关于包装和上传PyPI的很好的概述: 分享你的爱的劳动:PyPI快速和肮脏

  • pandas文档中的“广播”是什么意思?
  • Python jinja2速记条件
  • Python:什么是半冒号?
  • 如何用matplotlib.pyplot改变图例大小
  • 如何将django QueryDict改为Python Dict?
  • Python:urllib / urllib2 / httplib混淆
  • Python中的assertAlmostEqual对浮点数集合进行unit testing
  • Django:用户login时发出信号?
  • 有没有C#空合并运算符的Python等价物?
  • 单引号与Python中的双引号
  • 连续和非连续数组之间有什么区别?