Подтвердить что ты не робот

Anaconda обновить все возможные пакеты?

Я попробовал conda search --outdated, есть много устаревших пакетов, например scipy - 0.17.1, но самое последнее - 0.18.0. Однако, когда я делаю conda update --all. Он не будет обновлять пакеты.

обновление 1

conda update --all --alt-hint

Fetching package metadata .......
Solving package specifications: ..........

# All requested packages already installed.
# packages in environment at /home/user/opt/anaconda2:
#

обновление 2

Я могу обновить эти пакеты отдельно. Я могу сделать conda update scipy. Но почему я не могу обновить их все за один раз?

4b9b3361

Ответ 1

TL; DR: конфликты зависимостей: Обновление одного требует (согласно его требованиям), чтобы понизить рейтинг другого

Вы правы:

conda update --all

на самом деле путь. Conda всегда пытается обновить пакеты до последней версии в серии (скажем, Python 2.x или 3.x).

Конфликты зависимостей

Но возможно, что существуют конфликты зависимостей (которые препятствуют дальнейшему обновлению). Конда обычно очень явно предупреждает, если они происходят.

например X требует Y & lt; 5.0, поэтому Y никогда не будет> = 5.0

Вот почему вы не можете "обновить" их все.

Разрешающая

Чтобы добавить: возможно, это могло бы работать, но более новая версия X, работающая с Y> 5.0, недоступна в conda. Возможна установка с помощью pip, поскольку в pip доступно больше пакетов. Но имейте в виду, что pip также устанавливает пакеты, если существуют конфликты зависимостей и что это обычно нарушает вашу среду conda в том смысле, что вы больше не можете надежно устанавливать с conda. Если вы сделаете это, сделайте это в крайнем случае и после того, как все пакеты были установлены с помощью conda. Это скорее взлом.

Безопасный способ, которым вы можете попробовать, - это добавить conda-forge в качестве канала при обновлении (добавьте -c conda-forge в качестве флага) или любой другой канал, который содержит ваш пакет, если вам действительно нужна эта новая версия. Таким образом, conda также ищет в этих местах доступные пакеты.

С учетом вашего обновления: вы можете обновить их по отдельности, но это будет включать не только обновление, но и понижение версии другого пакета. Скажем, чтобы добавить к примеру выше:

X> 2.0 требует Y & lt; 5,0, X & lt; 2.0 требует Y> 5.0

Таким образом, обновление Y> 5.0 подразумевает снижение X до & lt; 2.0 и наоборот.

(это, конечно, педагогический пример, но на самом деле он такой же, обычно только с более сложными зависимостями и суб-зависимостями)

Таким образом, вы все еще не можете обновить их все, выполнив обновления по отдельности; зависимости просто не могут быть удовлетворены, поэтому раньше или позже при обновлении будет произведено понижение версии уже обновленного пакета. Или нарушите совместимость пакетов (что вам обычно не нужно!), Что возможно только путем явного вызова ignore-dependencies и force-command. Но это только для того, чтобы разобраться с проблемами, определенно не для обычного пользователя!

Ответ 2

Чтобы ответить точнее на вопрос:

conda (которая является conda для миниконды как для Anaconda) обновляет все, кроме ТОЛЬКО в определенной версии пакета → основной и дополнительный. Это парадигма.

В документации вы найдете "ПРИМЕЧАНИЕ: Conda обновляется до самой высокой версии в своей серии, поэтому Python 2.7 обновляется до самой высокой из доступных в серии 2.x и до 3.6 обновлений до самой высокой из доступных в серии 3.x". документ

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

conda update -n ENVIRONMENT --all

Если вы хотите обновить только почти все, вы можете создать файл пин-кода

echo "conda ==4.0.0" >> ~/miniconda3/envs/py35/conda-meta/pinned
echo "numpy 1.7.*" >> ~/miniconda3/envs/py35/conda-meta/pinned

перед запуском обновления.

Если позже вы захотите проигнорировать файл в вашем env для обновления, вы можете сделать следующее:

conda update --all --no-pin

Вы не должны делать обновление --all. Тем не менее, если вам это нужно, вы можете проверить это в клонированной среде.

Первым шагом всегда должно быть резервное копирование текущей спецификации:

conda list -n py35 --explicit 

(но даже в этом случае не всегда имеется ссылка на доступный источник - например, для расширений jupyterlab)

Далее вы можете клонировать и обновить:

conda create -n py356 --clone py35

conda activate py356
conda config --set pip_interop_enabled True # for conda>=4.6
conda update --all

conda config


Наконец, если вам действительно нужно работать с пакетами, которые несовместимы из-за его зависимостей, это возможно с такими технологиями, как NixOS/nix-pkgs.

Ответ 3

Представьте себе граф зависимостей пакетов, когда количество пакетов увеличивается, вероятность возникновения конфликта при обновлении/добавлении пакетов значительно выше. Чтобы избежать этого, просто создайте новую среду в Анаконде.

Будьте скромны, устанавливайте только то, что вам нужно. Для меня я установил следующие пакеты в моей новой среде:

  • панд
  • scikit учиться
  • Matplotlib
  • ноутбук
  • keras

И у меня есть 84 пакета в общей сложности.

Ответ 4

Если вы работаете в MS Windows, вы можете использовать Anaconda Navigator. нажмите на среду, в раскрывающемся списке она "установлена" по умолчанию. Вы можете выбрать "обновляемый" и начать оттуда

Ответ 5

Для обновления всех возможных пакетов я использовал conda update --update-all

Оно работает!

Ответ 6

обновление conda --all

обновить все пакеты без ответа

Конда обновление --all -y

Ответ 7

Я решил эту проблему с помощью conda и pip.

Во-первых, я бегу:

conda uninstall qt and conda uninstall matplotlib and conda uninstall PyQt5

После этого я открыл cmd и запустил этот код, который

pip uninstall qt, pip uninstall matplotlib, pip uninstall PyQt5

Наконец, вы должны установить matplotlib в pip с помощью этого кода, который pip install matplotlib