在容器内运行时,pipenv安装失败

时间:2018-10-05 20:07:43

标签: python docker pipenv

我想使用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测试。

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

0 个答案:

没有答案