为什么pip始终无法安装pytest-django? .dist-info目录未找到错误

时间:2019-07-02 20:39:31

标签: python django python-2.7 pip

我有一个docker容器安装程序,该安装程序始终无法从requirements.txt安装此pytest-django == 3.4.8。如果我将其注释掉,则其他所有内容均会正确安装。尝试了所有操作,从拆除安装和重建到升级pip到删除pip缓存,仍然一无所获。任何帮助表示赞赏!

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 209, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 335, in run
    prefix=options.prefix_path,
  File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 732, in install
    **kwargs
  File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 837, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 1039, in move_wheel_files
    isolated=self.isolated,
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 346, in move_wheel_files
    assert info_dir, "%s .dist-info directory not found" % req
AssertionError: pytest>=3.6 .dist-info directory not found

有问题的DockerFile:

FROM ubuntu:16.04

RUN echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | debconf-set-selections

# Set the locale
RUN apt-get clean && apt-get update && apt-get install -y locales
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

# Install our package dependencies
RUN apt-get update && apt-get install -y \
  git \
  autoconf \
  automake \
  bison \
  build-essential \
  curl \
  git-core \
  libc6-dev \
  libcurl4-openssl-dev \
  libffi-dev \
  libgdbm-dev \
  libreadline6-dev \
  libsqlite3-dev \
  libssl-dev \
  libtool \
  libxml2-dev \
  libxslt-dev \
  libyaml-dev \
  libxmlsec1-dev \
  ncurses-dev \
  ntpdate \
  openssl \
  pkg-config \
  python-pip \
  python-dev \
  sqlite3 \
  unzip \
  libsasl2-dev \
  zlib1g \
  zlib1g-dev \
  vim \
  apt-transport-https \
  awscli \
  libwww-perl \
  libdatetime-perl \
  unzip \
  g++ \
  dnsmasq \
  python3-pip \
  jq \
  htop \
  cron \
  libfreetype6 \
  libfreetype6-dev \
  libfontconfig \
  libx11-dev \
  libxrender-dev \
  zlib1g-dev \
  fontconfig \
  libmagickwand-dev \
  wget \
  openjdk-8-jre-headless \
  mupdf \
  mupdf-tools \
  pdftk \
  imagemagick \
  tesseract-ocr \
  tesseract-ocr-eng \
  libtesseract-dev \
  libleptonica-dev \
  msttcorefonts

# Create our /srv directory
WORKDIR /srv

# Copy dependencies
COPY . /srv

# Copy WKHTMLTOPDF
COPY ./wkhtmltox /opt/wkhtmltox

# Copy our AWS Credentials file
COPY ./.aws /root/.aws

# Install our python dependencies
RUN pip install -r /srv/git/django/requirements.txt
RUN pip install django_extensions

临时解决方法 我从Requirements.txt中删除了pytest-django == 3.4.8,该更新允许软件包安装过程完成。然后我进入框并检查pip show pytest,它没有产生任何结果。所以我手动安装pytest == 4.6和pytest-django == 3.4.8,它可以工作。不幸的是,这并没有引起它为什么会失败的原因。

1 个答案:

答案 0 :(得分:0)

修复程序归结为更新DockerFile中的pip和符号链接:

RUN pip install -U pip
RUN rm /usr/bin/pip
RUN ln -s /usr/local/bin/pip /usr/bin/pip