我想使用pipenv来运行一些依赖于名为airflow的python包的测试 . 不幸的是,当我尝试安装该软件包时,我得到了一个我无法理解的错误 .

我使用docker容器构建了一个小问题演示 . 这是Dockerfile:

FROM python:3.6-stretch

WORKDIR /tmp

# Define build args
ARG http_proxy
ARG https_proxy
ARG no_proxy

RUN apt-get update && \
    apt-get -y install default-jdk

# Detect JAVA_HOME and export in bashrc.
# This will result in something like this being added to /etc/bash.bashrc
#   export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
RUN echo export JAVA_HOME="$(readlink -f /usr/bin/java | sed "s:/jre/bin/java::")" >> /etc/bash.bashrc

# Upgrade pip
RUN pip install --upgrade pip

# Install core python packages
RUN pip install pipenv

我使用以下方法构建映像并运行容器:
docker build -t pipenvtest .
docker run -it pipenvtest bash

连接到容器后,我运行:
pipenv --python 2.7
pipenv install --dev airflow

哪个失败了这个错误:

安装airflow ... Traceback(最近一次调用最后一次):文件“/ usr / local / bin / pipenv”,第11行,在sys.exit(cli())文件“/usr/local/lib/python3.6 /site-packages/pipenv/vendor/click/core.py“,第722行,在调用返回self.main(* args,** kwargs)文件”/usr/local/lib/python3.6/site-packages/ pipenv / vendor / click / core.py“,第697行,在主rv = self.invoke(ctx)文件中”/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py “,第1066行,在调用return _process_result(sub_ctx.command.invoke(sub_ctx))文件”/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py“,第895行,在调用return ctx.invoke(self.callback,** ctx.params)文件“/usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py”,第535行,在调用中返回回调(* args,** kwargs)文件“/usr/local/lib/python3.6/site-packages/pipenv/cli.py”,第435行,安装selective_upgrade = selective_upgrade,文件“/ usr / local / lib / python3.6 / site-packages / pipenv / core.py“,第1971行,在do_install中pypi_mirror = p ypi_mirror,文件“/usr/local/lib/python3.6/site-packages/pipenv/core.py”,第1375行,在pip_install package_name.split(' - hash')[0] .split(' - trusted-host')[0]文件“/usr/local/lib/python3.6/site-packages/pipenv/vendor/requirementslib/models/requirements.py”,第704行,在from_line行,extras = _strip_extras(行)TypeError:'module'对象不可调用

奇怪的是,我可以在我的本地机器上成功安装 airflow 但是当我尝试在这个容器中执行它时,它会失败 . 我需要让它在容器中工作,因为我们在容器内运行CI测试 .

我希望有人可以诊断为什么这不起作用 . 我怀疑容器图像有问题,但我不知道它可能是什么 .