python 3 : Large Application Structure

标签 python python-3.x

<分区>

编辑以提供更清晰的问题

是否有推荐的或标准的方法来组织大型 python 应用程序——例如,需要不同子目录中的多个文件才能清楚地组织项目。

我能找到的所有文档都在谈论包,在我看来,在任何其他语言中,包都是所谓的库。即主程序包含/需要的代码。包中的 setup.py 增加了这种困惑,因为它看起来应该是整个应用程序的主要程序/脚本,但用于将模块“安装”为库。

简而言之,将代码组织为应用程序(您实际运行的程序)的标准/建议。不是库/包(应用程序包含/使用的东西)

最佳答案

组织大型应用程序的一种方法(不是唯一的方法)是结合使用 virtualenvbuildout

virtualenv让您创建一个独立的 Python 环境。这很重要,因为任何大型 Python 应用程序都将依赖于一堆包(有些是您自己编写的,有些是您从其他地方安装的)。当您的系统 python 已经安装了版本 3.2.1 时,您不希望您的应用程序需要包的版本 1.2.3,因此您需要将您的应用程序与正在运行的任何其他应用程序隔离开来。

buildout很有用,因为它允许您定义应用程序的所有依赖项并从头开始重复构建它。

使用 buildout 的项目目录结构如下所示:

project/
   bootstrap.py
   buildout.cfg
   .installed.cfg
   parts/
   develop-eggs/
   bin/
       buildout
       mypython
   eggs/
   downloads/

bootstrap.py 文件是构建的标准文件,它创建包含本地 python 和 buildout 命令的 bin 文件夹。 bin\buildout 然后使用 buildout.cfg(这是您实际必须创建的唯一文件)下载并安装您的应用程序所需的所有其他内容。 .installed.cfg 保存已运行命令的记录,因此如果 buildout.cfg 已更新并且您重新运行 bin/buildout它可以卸载不再需要的任何东西并安装任何新东西。

Plone 和 Django 等大型 Python 项目使用 buildout,参见 http://jacobian.org/writing/django-apps-with-buildout/获取描述它的好博文。

关于 python 3 : Large Application Structure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17812302/

相关文章:

python - 类型 = 类别的列上的数据框子集

python - 如何声明与数据类类型相同的python数据类成员字段

python - 从 Selenium IDE 将测试导出为 python

python - 字符串中的"\n"无法正常工作

python - 为什么我的正向先行断言会消耗字符串并且无法正确匹配?

python - 具有相同对象的 Discord 机器人扩展

Python - 运行 pygame

python - python 中的 "reduce"函数在 "namedtuple"上不起作用?

python - 无法点击 map 上的标志

python3 : Cannot Import cv2 : DLL load failed after installing opencv_contrib modules