Почему pip постоянно не может установить pytest-django? Каталог .dist-info не найден - PullRequest
2 голосов
/ 02 июля 2019

У меня есть установщик док-контейнера, который не может установить этот pytest-django == 3.4.8 из requirements.txt. Если я закомментирую это, все остальное устанавливается правильно. Пробовал все: от сноса установки и восстановления до обновления пипа, до удаления кеша пипа и ничего еще. Любая помощь приветствуется!

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

Файл Docker, о котором идет речь:

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

Временное решение Я удалил pytest-django == 3.4.8 из require.txt, который позволяет завершить процесс установки пакета. Затем я вошел в окно и проверил pip show pytest, который не дает результата. Поэтому я вручную устанавливаю pytest == 4.6 и pytest-django == 3.4.8, и это работает. К сожалению, это не доходит до сути того, почему это терпит неудачу во-первых ..

1 Ответ

0 голосов
/ 03 июля 2019

Исправление сводится к обновлению пипа и символической ссылки в DockerFile:

RUN pip install -U pip
RUN rm /usr/bin/pip
RUN ln -s /usr/local/bin/pip /usr/bin/pip
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...