2017-04-12 37 views
1

使用Apache氣流他們安裝插件通過修改sys.modules這樣的:獲取Pycharm看到動態生成的Python模塊

sys.modules[operators_module.__name__] = operators_module 

這是他們如何從他們的plugins文件夾Python類通過

from airflow.operators.plugin_name import Operator需進口

儘管類Operator裏面存在

airflow/plugins/Operators.py

這使得PyCharm無法理解上述導入語句,因爲它是生成模塊/模塊名稱的非傳統方式。

有什麼辦法讓PyCharm擁有像這樣的情況下的模塊/包別名?

回答

1

通過在插件目錄中搜索AirflowPlugin子類,然後將存儲在這些子類的屬性中的操作符等綁定到位於airflow命名空間下的新模塊,Airflow加載插件。

解決代碼轉換課程爲模塊超出PyCharm的能力,所以,除非你想通過添加插件目錄sys.path並直接將內容導入覆蓋此行爲,最好的解決辦法就是通過Settings -> Editor -> Inspections -> Python -> Unresolved references並添加白名單氣流創建模塊airflow.operators.plugin_nameIgnore references列表。然後,使用這樣的模塊:

from airflow.operators import plugin_name 
task = plugin_name.Operator() 

將不會再引發任何錯誤,儘管您仍然不會獲得代碼完成的好處。