Pipenv игнорировать подчиненную зависимость
Используя Pipenv, как мне предотвратить pipenv install
от установки определенных зависимостей (зависимостей зависимостей)?
В частности, я хочу установить пакет тензорного потока как зависимость от моего пакета, но я не хочу устанавливать пакет tenorboard, который является зависимостью от тензорного потока, даже если он на самом деле не нужен.
Я могу как-то обойти эту проблему, удалив пакет tenorboard после установки, но это не удаляет все пакеты, в которые пакет tenorboard включается как зависимости (например, werkzeug).
Более полное, но сложное решение было бы посмотреть на pipenv graph
чтобы выяснить, какие зависимости появляются только под тензорной панелью (и больше ничего не нужны), но, может быть, есть более простое решение?
1 ответ
В настоящее время,pipenv
не поддерживает это. Есть несколько обходных путей (как вы упомянули):
- Добавьте следующее
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
.