conda-forge: почему Conda непоследовательно хочет понизить NumPy? - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь отдать предпочтение пакетам от CondaForge (для доступности и совместимости).Однако Conda, похоже, хочет отдать предпочтение версиям базовых библиотек (например, NumPy) из других каналов.

Например, когда я пытаюсь установить новую библиотеку, Conda предлагает понизить NumPy, но если я попрошу ота же библиотека и NumPy , Conda больше не советует понижать рейтинг.Почему?

$ conda install -c conda-forge beautifulsoup4
The following NEW packages will be INSTALLED:
    beautifulsoup4: 4.6.3-py36_0 conda-forge
The following packages will be UPDATED:
    numpy-base: 1.14.3-py36h0ea5e3f_1 --> 1.15.0-py36h3dfced4_0
The following packages will be DOWNGRADED:
    blas: 1.1-openblas conda-forge --> 1.0-mkl
    numpy: 1.15.1-py36_blas_openblashd3ea46f_1 conda-forge [blas_openblas] --> 1.15.0-py36h1b885b7_0
    scikit-learn: 0.19.2-py36_blas_openblasha84fab4_201 conda-forge [blas_openblas] --> 0.19.1-py36hedc7406_0
    scipy: 1.1.0-py36_blas_openblash7943236_201 conda-forge [blas_openblas] --> 1.1.0-py36hc49cb51_0
Proceed ([y]/n)? n

$ conda install -c conda-forge beautifulsoup4 numpy
The following NEW packages will be INSTALLED:
    beautifulsoup4: 4.6.3-py36_0 conda-forge
Proceed ([y]/n)? y

Есть ли предпочтение, которое даст лучшее поведение?

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Это происходит потому, что у вас есть два канала (conda-forge и defaults), каждый из которых содержит NumPy (и его зависимости), но, возможно, с разными номерами версий / сборок.

Например, допустим, вы хотите установить SciPy (зависит от NumPy), а состояние мира:

  • conda-forge: NumPy v1.14 и SciPy v1.0
  • по умолчанию: NumPy v1.15 и SciPy v1.0

И у вас есть conda-forge выше значений по умолчанию в вашем порядке каналов. Если вы скажете conda install scipy, то Conda получит SciPy из conda-forge (потому что это самый большой номер версии). При сканировании зависимостей SciPy он заметит, что по умолчанию доступна более новая версия NumPy. Считая, что это полезно, Conda установит более новую версию NumPy по умолчанию, даже если она уже была установлена ​​из conda-forge. Если есть пакеты, от которых зависит NumPy, то их необходимо понизить, чтобы это работало, пусть будет так.

Говоря вместо этого, conda install scipy numpy или conda config --add pinned_packages conda-forge::numpy вы пропускаете поиск зависимостей для этой части графика, что затем заставляет решатель Conda переходить на другой канал.

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

Тем не менее, Conda v4.6 (которая еще не вышла) добавит понятие "строгий приоритет канала". Это будет гарантировать, что решатель ищет пакеты в порядке канала, указанном первым, и только переходит к другому каналу, если зависимость не может быть найдена.

Это решит многие из этих безудержных проблем с обновлением / понижением, с которыми мы все жили.

0 голосов
/ 31 мая 2019

Вы можете прочитать документацию conda-forge http://conda -forge.org / docs / user / tipsandtricks.html # множественные каналы

Просмотр ваших каналов и приоритетов $conda config --describe channel_priority

Решение состоит в том, чтобы добавить канал conda-forge поверх значений по умолчанию в файле .condarc при использовании пакетов conda-forge и активировать строгий приоритет канала с помощью:

$ conda config --set channel_priority strict

Вот как будет выглядеть файл .condarc:

$ cat .condarc channel_priority: strict channels: - conda-forge - defaults

В дополнение к приоритету канала, мы рекомендуем всегда устанавливать ваши пакеты в новой средевместо корневого окружения от анаконды / миниконды.Использование envs облегчает отладку проблем с пакетами и обеспечивает стабильность вашего корневого env.

0 голосов
/ 13 сентября 2018

Это на самом деле не объясняет, почему это происходит, но исправление:

$ conda config --add pinned_packages conda-forge::numpy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...