joppot

コピペで絶対動く。説明を妥協しない

サーバ プログラミング

pythonのfabricでファイルを分割しfabfileに読み込む方法

投稿日:2014年11月2日 更新日:


ogoier

概要

皆さんこんにちはcandleです。今回はfabricで分割したpythonファイルを読み込んでみましょう。
fabricはfabfile.pyというファイルに実行したいコマンドを書くのですが、
いくつかファイルを分割したい場合があります。
例えば、共通する設定を記述したり、メソッドをまとめたファイルを作成したり、グローバル変数を書いたファイルを作ったりします。
そのように、分たファイルを読み込む方法を紹介します。

前提

fabricのがインストールされている


ファイルを読み込む

まずは基本となるfabfile.pyを用意します。

touch fabfile.py

fabfile.pyにはfabricAPIのインポートの設定を書いておきます。

# -*- encoding:utf-8 -*-
from fabric.api import *
from fabric.colors import *

ネットワークの設定は各自の環境に合わせておいてください。
fabricdeffff

次に、別のpythonファイルを用意します。
例えば、共通のグローバル変数を書くファイルを作ってみましょう。

touch global_value.py

そのファイルにグローバル変数を作ってみましょう。

# -*- encoding:utf-8 -*-

HELLO_FILE = "~/hello.txt"

batako

保存しましょう。

fabfile.pyにglobal_value.pyを読み込みます。

私はpythonネイティブプログラマーじゃ無いので、この方法が本当にベストなのか分からないのですが、一応動くのでこれでやっています。
fabfile.pyに下のコードを加えます。

execfile("./global_value.py")

fabricinportfile

先ほどのHELLO_FILEグローバル変数が使えるか試してみましょう。

fabfile.pyに下の内容を加えます。

def show_global_value():
    print(HELLO_FILE)

showglobalvaluefunc

printしているのは先ほど、global_value.pyで書いたグローバル変数です。
保存しましょう。

実行して確認する

show_global_valueを実行します。

fab -l
fab show_global_value

fabricglobalresult

外部ファイルを読み込んだ先のグローバル変数を参照できていますね。

まとめ

応用としては、冒頭にも書いた様に、sshやmysqlの設定を外部ファイルにしたり、グローバル変数別ファイルにしたり、共通して使う関数を別ファイルにしたりするとよいでしょう。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-サーバ, プログラミング
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Rails pluginでengineを使ったgemの作り方[5](view helper編)

概要 みなさんこんにちはcandleです。今回はgemのview helperの作り方です。 helperというのは様はgemにすることで便利になる関数を作るとというイメージです。 よくあるのが、こん …

phpでcompassを使った開発の仕方

概要 みなさんこにちはcandleです。今回はphpでcompassを使いたいと思います。 compassは別名scssともいいます。 compassはphpのライブラリが既にあります。 しかし、その …

AWSのLoad Blancer越しのアクセスをapacheのカスタムログを使用して取得し、かつfluentdで取得する方法

概要 みなさんこんにちはcandleです。今回はELB越しのapacheのアクセスをカスタムログを使用した場合にfluentdで如何にして取るかを紹介します。 fluentdがapacheのacces …

CentOS6.5にcakephp2.5.6をインストールする

概要 みなさんこんにちはcandleです。今回はCentOSのapacheサーバー上にcakephpを導入してみましょう。 前提 CentOSにapacheがインストールされている mysqlがインス …

scikit-learnの4つの関数で機械学習などのデータを前処理する

概要 皆んさんこんにちはcandleです。今回はpythonの機械学習ライブラリ『scikit-learn』を使い、データの前処理をしてみます。 scikit-learnでは変換器と呼ばれるものを使い …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー