2017-07-13 16 views
2

エアフローが使用するdagディレクトリの外部にある共通コードを移動することができませんでした。私はairflow sourceを見て、imp.load_sourceを見つけました。エアフロー相対外部/ダグディレクトリのインポート

imp.load_sourceを使用して、dagディレクトリの外に存在するモジュールをロードできますか?以下の例では、共通ディレクトリからfooまたはbarのいずれかをインポートしています。

── airflow_home 
    |──── dags 
    │ ├── dag_1.py 
    │ └── dag_2.py 
    ├── common 
     ├── foo.py 
     └── bar.py 
+0

ん同じアプリモジュールのすべてのこれらのフォルダの一部?または異なるモジュール。同じアプリケーションモジュールからのすべての場合には、相対パスを使用してインポートすることができます。 – Haranadh

+0

@ハラナードはい。ダイアグラムを更新してairflow_homeディレクトリを表示しました。 –

+0

私はコメントで答えることができませんでした。私は詳細な答えを投稿しました。よかったら。 upvoteしてください。 :) – Haranadh

答えて

1

すべての3つのフォルダに__init__.pyファイルを追加するだけです。それは動作するはずです。 私のフォルダ構造内のすべてのフォルダは__init__.pyです。私はコードを実行し、出力を見ることができます。

from stackoverflow.src.questions.airflow_home.common.bar import bar_test 

def main(): 
    bar_test() 

main() 

私は私のpycharmから実行しているコードのこの平和:

── airflow_home 
    ├── __init__.py 
    |──── dags 
    │ ├── __init__.py 
    │ ├── dag_1.py 
    │ └── dag_2.py 
    ├── common 
     ├── __init__.py 
     ├── foo.py 
     └── bar.py 

dag_1.pyコードのようになりますよう

例のフォルダ構造がある可能性があります。 私pycharmであなたのairflow_homeのフォルダパスはstackoverflow/src/questions/airflow_home/

そしてbar.pyコードである

def bar_test(): 
    print "bar hara" 
+0

@ connor-ameres;この回答が役立つことを願っています。そうであれば。私の答えを受け入れてください。あなたの設定で動作していないかどうか教えてください。 – Haranadh

関連する問題