Airflow运行DAG遇ModuleNotFoundError:缺失dateutil.easter模块(已装python-dateutil)
Airflow DAG导入错误:找不到'dateutil.easter'模块的解决建议
我在Airflow中运行一个测试Selenium的DAG时,遇到DAG导入错误,报错提示找不到dateutil.easter模块。但我的机器已经通过pip3安装了python-dateutil 2.7.3版本,以下是相关代码:
def get_header_title(): url_web = 'https://www.google.com/search' driver.get(url_web) driver.execute_cdp_cmd('Network.setUserAgentOverride', { "userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'}) user_agent = driver.execute_script("return navigator.userAgent;") print(user_agent) time.sleep(3) driver.implicitly_wait(5) #search_field = WebDriverWait(driver, 5).until( # EC.presence_of_element_located((By.XPATH, '//*[contains(@class, "gLFyf gsfi")]'))) # search_field = driver.find_element(By.XPATH, '//*[contains(@class, "gLFyf gsfi")]') #time.sleep(time_to_sleep) print("we've crossed the element") search_field = driver.find_element(By.XPATH, "//*[contains(@title, 'Search')]") time.sleep(2) driver.implicitly_wait(5) try: search_field.click() except StaleElementReferenceException: print(" error clicking search") time.sleep(0.5) driver.implicitly_wait(5) search_field.send_keys("astronaut") time.sleep(0.5) driver.implicitly_wait(5) search_field.send_keys(Keys.ENTER) time.sleep(0.75) title = driver.title print(title) default_args = { 'owner': 'airflow', 'retries': 5, 'retry_delay': timedelta(minutes=2) } with DAG( 'selenium_test', default_args=default_args, description = 'Selenium test DAG', schedule_interval=None, start_date=days_ago(2), tags=['selenuium_test'] ) as dag: selenium_test_operator = PythonOperator( task_id='selenium_test', python_callable=get_header_title, dag=dag )
解决建议
- 检查Airflow的Python环境:通过
airflow info命令查看Airflow使用的Python路径,确认该路径下是否安装了python-dateutil。如果没有,用该路径的pip重新安装,例如:/path/to/airflow/python -m pip install python-dateutil==2.7.3 - 升级python-dateutil版本:2.7.3版本可能存在兼容性问题,尝试升级到稳定版本,执行
pip3 install --upgrade python-dateutil - 修复Airflow依赖:Airflow核心依赖python-dateutil,若模块损坏,可尝试重新安装Airflow核心包,或者完整重新安装Airflow
- 确认虚拟环境:如果使用了虚拟环境,确保Airflow运行时已激活对应环境,或者在虚拟环境内重新安装python-dateutil
- 手动验证导入:进入Airflow使用的Python环境,执行
import dateutil.easter,确认模块是否能正常导入,排查环境不一致问题
内容的提问来源于stack exchange,提问作者fsaa
相关产品推荐
相关产品推荐

