2011-04-15 123 views
0

我在我的工作场所发布了一个包;它被大约10人使用。我有一个非常快速的开发/测试/发布周期(有时一天两次),并且我开始在我的环境中出现增加的混乱。我想用诸如virtualenvsetuptools之类的工具来管理这个环境,但我似乎没有得到我想要的地方。例如,我想在开发中使用“测试”数据库,但发布到“真实”数据库。沿着线的东西:Python环境管理(开发/发布)

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

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

我希望代码保持干净和分离,所以我宁愿不编码像上面介绍的解决方案。

那么,你将如何创建一个工作流来管理这个?我不想依赖环境变量和__file__声明(但也许我应该?)。

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

+0

__file__有什么问题? ) – 2011-04-15 02:31:28

+0

@Mike Ramirez:我猜它没什么问题,但它似乎太依赖于文件夹结构。如果我从'/ sw/conf /''更改为''/ allconf/conf /''会怎么样?然后我必须更新所有的'__file__''计算。我想我宁愿给一条路。 – Escualo 2011-04-15 02:35:56

+0

如果你把'__file__'的计算放在一个地方,那么任何移动只会是一个改变。也许作为一个DEBUG变量? – 2011-04-15 02:43:51

回答

2

我宁愿不依赖于环境变量和文件语句(但也许我应该?)。

您应该。

你应该使用三件事。

  1. 环境变量。

  2. 配置文件。

  3. 命令行参数。

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

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

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

+0

它不是一个命令行程序,它是用户在Python(实际上是许多模块)中导入以在其自己的脚本中处理任务的模块。 – Escualo 2011-04-15 04:20:46

+0

我按照你的观点(2)倾向于“environment.conf”文件。 – Escualo 2011-04-15 04:23:40

+0

@Arrieta:如果它可以由其他脚本配置,那么它应该没有配置。使用你的模块**的脚本必须提供** all **配置作为参数和参数。 – 2011-04-15 10:03:53