我想使用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
哪个会因以下错误而失败:
安装气流...
追溯(最近一次通话):
中的文件“ / 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)
在invoke中的文件“ /usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py”,行1066 返回_process_result(sub_ctx.command.invoke(sub_ctx))
在invoke中的文件“ /usr/local/lib/python3.6/site-packages/pipenv/vendor/click/core.py”,行895
返回ctx.invoke(self.callback,** ctx.params)
在invoke中的文件“ /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行
optional_upgrade = selective_upgrade,
do_install中的文件“ /usr/local/lib/python3.6/site-packages/pipenv/core.py”,第1971行
pypi_mirror = pypi_mirror, pip_install中的文件“ /usr/local/lib/python3.6/site-packages/pipenv/core.py”,行1375
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
行,附加项= _strip_extras(行)
TypeError:“模块”对象不可调用
奇怪的是,我可以在本地计算机上成功安装airflow
,但是当我尝试在此容器中安装它时,它会失败。我需要在容器中运行它,因为我们在容器内运行CI测试。
我希望有人可以诊断为什么这不起作用。我怀疑容器图像有问题,但是我不知道它可能是什么。