Pipenv игнорировать подчиненную зависимость

Используя Pipenv, как мне предотвратить pipenv install от установки определенных зависимостей (зависимостей зависимостей)?

В частности, я хочу установить пакет тензорного потока как зависимость от моего пакета, но я не хочу устанавливать пакет tenorboard, который является зависимостью от тензорного потока, даже если он на самом деле не нужен.

Я могу как-то обойти эту проблему, удалив пакет tenorboard после установки, но это не удаляет все пакеты, в которые пакет tenorboard включается как зависимости (например, werkzeug).

Более полное, но сложное решение было бы посмотреть на pipenv graph чтобы выяснить, какие зависимости появляются только под тензорной панелью (и больше ничего не нужны), но, может быть, есть более простое решение?

1 ответ

В настоящее время,pipenvне поддерживает это. Есть несколько обходных путей (как вы упомянули):

  1. Добавьте следующееscriptчтобы , а затем запуститьpipenv run pip-install:
            [scripts]
    # requirements.txt identifies the package to install w/o deps, e.g. tensorflow
    pip-install  = "pip install --no-deps -r requirements.txt"
    

ИЛИ 2. УстановитеPIP_NO_DEPS=1в.env, а затем позвонитеpipявно установить родительский пакет:

      pipenv run pip install tensorflow

В каждом из этих случаев вам все равно нужно будет добавить необходимые зависимости вPipfile/Pipfile.lock;pipdeptreeиjqможет быть полезно для этого:

      # note: jq must be installed using the system package manager
pipenv install "pipdeptree"

pipdeptree --json-tree |  # format the dependency tree as JSON
  jq '.[] | select(.key == "tensorflow") |  # filter to the target package
    .dependencies[] | select( .key != "tensorboard" ) |  # select all deps except tensorboard
    "\( .key )\( .required_version )"' |  # and output the req to install with pipenv
  xargs pipenv install

Третий вариант — раскошелитьсяtensorflow, удалитьtensorboardзависимость, иpip install git+https://github.com/the-fork-of/tensorflow.git.

Другие вопросы по тегам