如何打包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快速和肮脏

  • python中有一个函数将一个单词分解成一个列表?
  • Pythonexception的最佳实践?
  • 如何在不违反默认行为的情况下覆盖Python中的__getattr__?
  • 在amazon ec2 linux微型实例上安装scipy在virtualenv上遇到麻烦
  • 如何更改matplotlib图上的字体大小
  • 为什么这不是Python中的语法错误?
  • 从父函数分配variables:“分配前引用的本地variables”
  • 如何将SqlAlchemy结果序列化为JSON?
  • 使用SciPy或NumPy生成具有指定权重的离散随机variables
  • 有matplotlib散点图matrix的函数吗?
  • APT命令行界面 - 像是/否input?