我们可以从180多个成功发布的Python软件案例中学到什么。

我很高兴地发布一些很棒的Python应用程序,这是一个手工整理的180多个项目的列表,所有这些都是:

1.带有在线源代码仓库的免费软件。

2.用Python实现它们的大部分功能。

3.众所周知的,或至少在一个特定领域中非常流行。

4.在相关平台上持续维护或仍然运行良好。

5.已经打包好的应用程序,而不是库或框架。

这个软件列表主要专注于那些不需要使用pip或PyPI安装的软件,其受众大多不是开发人员。本列表收集了很多这样的软件,当然还有少数是例外的,具体数量请查看此列表(地址:https://github.com/mahmoud/awesome-python-applications#awesome-python-applications)。

那么,我为什么要花费数周时间来归类整理这些开源Python应用程序呢?

更多Python视频、源码、资料加群683380553免费获取

除了节日的喜悦,还有三大原因。

目录

  1. 目标#1:更好的开发周期
  2. 目标#2:更完整的Python生产循环
  3. 目标#3:构建Python生态基础
  4. 接下来的步骤

目标#1:更好的开发流程

从我开始讨论Python打包问题以来,人们就一直在问我,哪种打包技术最适合他们的软件。这一次又一次地让我感到震惊,如果不搞清楚交付的基础问题,那么人们开发程序的时候能走多远?在探索这个问题时,我遇到了一个更基本的问题:

为什么那么多人从基本原理开始(博客文章和Stack Overflow)构建应用程序?

Python难道不是软件界鼎鼎大名的名字之一吗?不是有许多成功的、实际应用的应用程序是用Python编写的吗?你的应用程序完全独特的机会有多大?

因此,出色的Python应用程序实际上是为回答棘手的开发问题开辟了一个新的流程。

在构建应用程序时,扫描此列表以找到那些最符合你的项目需求的项目。然后,使用该应用程序作为回答自己问题的指南。这对于有关架构、部署和测试的抽象问题尤其有效。

回到学校,我从MediaWiki源代码中学到的架构和软件开发知识比从任何课程中学到的都多。它一直激励着我直到今天。APA是实现面向实际用户的工作应用程序的整体教育的下一步。

简而言之,虽然我们可能没有时间来编写它们,但是每个生产应用程序都抵得上1000篇博客文章。

目标#2:更完整的Python生产循环

我们Python程序员也是软件用户。但与其他软件用户不同的是,我们知道如何将问题归档,甚至可能对我们选择的应用程序做出重大贡献。

如果可能的话,选择Python软件,我们就更接近于参与其中。对于未来的应用程序开发人员来说,还有什么更好的入门方法呢?

我很愿意看到更多的开发人员与他们没有意识到是用Python开发的软件产生联系。当我知道我最喜欢的应用程序之一, Deluge,大量使用twisted后,这极大地鼓舞了我对Twisted做出贡献。使用自由软件会创造更多的自由软件。

目标#3:构建Python生态基础

随着科技的发展,软件越来越复杂。底层实现开发人员与应用程序开发人员已经分离开来,随着时间的推移,这将导致更糟糕的软件。当应用程序得不到开发人员的关注时,这个问题就更加复杂了。大多数APA条目都有两位数或者三位数的关注,除非该软件的目标用户是很专业的技术人员。APA中的软件很少由PyPI分发,因此下载统计数据也不能帮助我们。即使有帮助,底层库的关注数据也远不如应用软件的数据好看。同时,由于自由软件项目不能离开大量的捐赠或会议赞助,因此这些底层库由于难以宣传,又进而导致了经济上难以为继。

这些应用程序代表了Python的免费和有生命力的部分中最好的部分。它们不仅是实用和自豪的源泉,而且在精神和实践上需要我们的支持。我真诚地希望APA将有助于Python社区关注实用应用程序的开发。

具体来说,这意味着什么?敏锐的眼睛会注意到列表是如何进行结构化的。这不仅是为了保持一致性,也是一次对数据集API的尝试。我们必须考虑到库和应用程序之间的关系,并且来探索我们的生态系统。

我知道我在这里有点冒险,度量标准并不是一切,但是将Python FOSS生态系统作为科学发布框架的模拟来探索将是非常有趣的。我们是否可以通过将库视为“文章”,将应用程序视为“期刊”来获得或多或少的开发人员赫芬达尔指数(h-index)?添加一些应用程序用户基础近似值(通过社会替代计量学和其他方法)可以让我们更深入地了解实际应用的效果。

接下来的步骤

如果这篇文章看起来比我通常写的短,那是因为它确实是对列表本身的介绍。在进行研究的过程中,我被几个项目的代码库缠住了,你也会被缠住的。

如果我们错过了一个项目,请在GitHub上开启一个问题或PR。如果你和我一样对此感到兴奋,可以考虑帮助解决一些悬而未决的问题。仍然有许多应用程序特性需要研究:许可证、Python版本、框架等等。和往常一样,关注本博客(和代码仓库)的更新,因为我们会有更多的发现!