如何在Airflow Dockerfile的虚拟环境中安装指定Python库并解决报错
解决方案
你的报错是因为Airflow基础镜像中,pip被默认配置为使用--user选项安装包,但虚拟环境内不允许这种安装方式。以下两种方法可以解决:
方法一:直接调用虚拟环境的pip安装(推荐)
不需要通过source激活虚拟环境,直接使用虚拟环境目录下的pip命令安装,这样能绕过全局的pip配置:
FROM apache/airflow:2.4.3-python3.8 USER root RUN apt-get update \ && apt-get install -y --no-install-recommends \ vim \ gcc \ g++ \ libsasl2-dev \ libc6-dev \ git \ && apt-get autoremove -yqq --purge \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* USER airflow RUN python -m virtualenv dbt_venv && \ dbt_venv/bin/pip install dbt-core
方法二:安装时强制禁用--user选项
如果坚持用source激活虚拟环境的方式,在pip install时加上--no-user参数,覆盖默认配置:
FROM apache/airflow:2.4.3-python3.8 USER root RUN apt-get update \ && apt-get install -y --no-install-recommends \ vim \ gcc \ g++ \ libsasl2-dev \ libc6-dev \ git \ && apt-get autoremove -yqq --purge \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* USER airflow RUN python -m virtualenv dbt_venv && source dbt_venv/bin/activate && \ pip install --no-user dbt-core
补充说明
两种方法都能满足你“仅在虚拟环境安装包,无需持久激活”的需求。后续你需要使用dbt时,直接调用dbt_venv/bin/dbt即可,不需要提前激活虚拟环境。
内容的提问来源于stack exchange,提问作者user3595632
相关产品推荐
相关产品推荐

