在Airflow中安装需要运行gcc的包(python-lzo)

643ylb08  于 2023-10-19  发布在  Python
关注(0)|答案(1)|浏览(154)

我在airflow Dockerfile中尝试pip inatall需要root权限的包时遇到错误。
软件包为python-lzo。巨蟒3.7,气流2.3.0。
我得到的错误是一个已知的:“尝试以root身份运行pip”,并承认这是一个已知的问题/事实,根据这里的气流文档。
我试着设置环境变量as this solution声明,它仍然不工作。
下面的示例将PyPI中的lxml python包添加到映像中。当通过pip添加包时,你需要使用airflow用户而不是root。尝试以root身份安装pip软件包将失败,并显示相应的错误消息。
他们说你必须以“airflow”用户而不是“root”用户的身份运行pip。
但是,我需要的包名为“python-lzo”,它需要运行gcc,而gcc只能以root身份运行。
如果Airflow需要root权限的gcc,有没有其他方法可以在Airflow上安装python-lzo?
有些人建议我编译python-lzo库并在本地计算机上运行gcc,然后以某种方式将其上传到Dockerfile,但我在那里很迷茫,因为我不明白这是怎么可能的,当在本地编译它时,这意味着它依赖于我的操作系统,我希望DAG在Linux上运行(我有Windows)。
dockerfile:

From artifactory.whatever
Copy requirements.txt
Copy pip.ini ~/.pip/pip.conf
Copy mylibrary.whl
Env PIP_CONFIG_FILE ~/.pip/pip.conf
USER root
Run pip install mylibrary

mylibrary是我使用poetry编译的.whl,在需求中有python-lzo库。

b09cbbtk

b09cbbtk1#

您可以将gccliblzo2-dev安装为root,然后将pip安装为airflow

USER root

RUN apt-get update
RUN apt-get -y install gcc liblzo2-dev

USER airflow
RUN pip install --no-cache-dir "apache-airflow==${AIRFLOW_VERSION}" python-lzo --user

相关问题