我正在嘗試創建一個模塊來保存Fabric文件的配置。這個配置文件將保存項目相關的設置,所以我可以爲我們所有的項目使用相同的fabfile。Python模塊變量依賴關係
我想fabfile看起來像這樣:
import config
from fabric.api import local
def deploy(env='staging'):
config.env = env
local("xcopy {project_dir} {deploy_target} /u /r /y".format(project_dir=config.project_dir,
deploy_target=config.deploy_target))
#Ok, this will be more involved than that, but it is enough to explain my problem
和配置文件看起來像這樣:
env = 'staging'
project_dir = r'c:\some\unimportant\path'
deploy_target = r'c:\some\target\path\based\on\{env}'.format(env=env)
所以我可以使用: fab deploy
或fab deploy:staging
部署到分期環境和fab deploy:production
部署到生產環境。
我想弄清楚當env變量發生變化時,如何更新模塊中的變量。
我希望我的配置文件儘可能簡單,理想情況下只是變量賦值,但如果真的需要,我可以使用一些函數。設置文件中會有很多變量,所以使用global關鍵字更新函數中的值看起來會非常難看。
是否配置文件需要在部署時它被永久改變,或者是確定的,如果部署完成後,這些值將恢復爲默認值?後者應該很容易,但前者要複雜得多。 – Blckknght
配置文件在每個項目的基礎上是唯一的。 config.py模塊中的設置基本上已經設置好了。他們不會經常改變。每個項目通常只有2-3個環境。路徑非常相似,只有幾個字符在改變,有時候是一個服務器名稱,但這是關於它的。 – Martin
如果它們在部署後返回到它們的默認值,這是可以的,因爲fabfile中的所有命令都會採用一個env參數,它將在配置模塊中相應地設置值(如果我設法實現我想要做的)。 – Martin