2017-07-13 16 views
2

我無法將通用代碼移到氣流使用的dag目錄之外。我查看了airflow source,發現imp.load_source氣流相對導入外部/ dag目錄

是否可以使用imp.load_source來加載dag目錄之外的模塊?在下面的例子中,這將從公共目錄導入foo或bar。

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

做相同的應用程序模塊的所有這些文件夾中的一部分?或不同的模塊。以防萬一來自同一個應用程序模塊,您可以使用相對路徑來導入。 – Haranadh

+0

@Haranadh是的。我更新了圖表以顯示airflow_home目錄。 –

+0

我無法在評論中回答。我發佈了我的詳細答案。如果你喜歡它。請註冊。 :) – Haranadh

回答

1

只需在所有3個文件夾中添加__init__.py文件即可。它應該工作。 Infact我的文件夾結構中的每個文件夾都有__init__.py。我可以運行代碼並查看輸出。

示例文件夾結構,可能是因爲:

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

dag_1.py代碼可以爲:

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

def main(): 
    bar_test() 

main() 

這個代碼的和平我從我的pycharm運行。 在我pycharm你airflow_home的文件夾路徑是stackoverflow/src/questions/airflow_home/

而且bar.py代碼

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

@ connor-ameres;希望這個答案有幫助。如是。請接受我的回答。讓我知道它是否在您的設置不起作用。 – Haranadh