【问题标题】:Python environment management (devel/release)Python 环境管理(开发/发布)
【发布时间】:2011-04-15 02:19:20
【问题描述】:

我在工作场所发布了一个包裹;它被大约 10 人使用。我有一个非常快速的开发/测试/发布周期(有时一天两次),并且我开始在我的环境中遭受越来越多的混乱。我想用virtualenvsetuptools 之类的工具来管理这个环境,但我似乎没有得到想要的结果。

例如,我想在开发中使用“测试”数据库,但发布到“真实”数据库。大致如下:

if env == "devel":
 dbpath = "/path/to/devel.db"
if env == "release":
 dbpath = "/path/to/real.db"

同样,我有几个不同参数的配置文件用于开发和发布(今天忘记改一个,给整个团队发了几十封邮件!)。

我希望代码保持干净和分离,因此我不希望编写像上面介绍的那样的解决方案。

那么,您将如何创建一个工作流来管理它?我不希望依赖环境变量和__file__ 语句(但也许我应该这样做?)。

抱歉。我知道这不是一个非常聪明的问题,但我想以可靠的方式使用我可以使用的工具。

【问题讨论】:

  • file 有什么问题? )
  • @Mike Ramirez:我想这没什么问题,但它似乎过于依赖文件夹结构。如果我从/sw/conf/ 更改为/allconf/conf/ 会怎样?然后我必须更新所有__file__ 计算。我想我更愿意给出一条路径。
  • 如果您将__file__ 计算放在一个位置,那么任何移动都只是一个变化。也许作为一个 DEBUG 变量?
  • MYPROJROOT = os.path.abspath(os.path.dirname(__file__)) 然后导出 MYPROJROOT 以供系统的其余部分使用。在项目的根目录中完成的一项计算永远不需要更新。
  • @Mike:对于项目根目录,我实际上按照您的建议进行操作。但是,数据库和配置文件不在依赖于项目根目录的位置(我们在“由根管理”位置检查软件,并将我们可以编辑的内容放在其他文件夹中)。

标签: python development-environment production-environment


【解决方案1】:

我不希望依赖环境变量和 file 语句(但也许我应该这样做?)。

你应该。

你应该使用三样东西。

  1. 环境变量。

  2. 配置文件。

  3. 命令行参数。

就像所有其他命令行程序一样。

如果这是一个导入的模块,而不是一个程序,那么它应该没有任何类型的配置。导入模块的所有脚本都必须提供 all 配置作为参数和参数

在任何情况下,导入的模块都不应有自己的配置。

【讨论】:

  • 它不是命令行程序,它是用户在 Python 中导入的模块(实际上是许多模块),用于处理自己脚本中的任务。
  • 根据您的观点 (2),我倾向于使用“environment.conf”文件。
  • @Arrieta:如果它可以被其他脚本配置,那么它应该没有配置。使用您的模块的脚本必须提供所有配置作为参数和参数。
猜你喜欢
  • 2013-09-14
  • 1970-01-01
  • 2016-03-16
  • 1970-01-01
  • 2013-04-21
  • 2011-01-19
  • 2011-05-21
  • 1970-01-01
  • 2011-05-31
相关资源
最近更新 更多