Запретить conda автоматически понижать версию пакета python

У меня были проблемы с ​​pandas-datareader пакетом v0.81. Чтобы решить мою проблему, мне пришлось обновить пакет до более новой версии 0.9, выполнив следующую команду;

conda install -c anaconda pandas-datareader

К сожалению, когда я позже попытался обновить пакеты conda с помощью команды conda update --all, версия pandas-datareader понизилась до версии 0.81. v0.81 с канала conda-forge. Я хочу v0.9 от канала anaconda.

Ниже то, что я хочу.

https://anaconda.org/anaconda/pandas-datareader

Ниже не то, что я хочу

https://anaconda.org/conda-forge/pandas-datareader

Как заставить conda всегда обновлять pandas-datareader до последней версии на канале anaconda, когда я запускаю conda update --all?

Я использую версию python anaconda 2020_07 в Windows 10.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
1 169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Укажите минимальную версию

Conda достаточно мощный, чтобы анализировать минимальные версии, и он помнит, что они были указаны. Если вы предпочитаете как минимум 0,9, вам просто нужно указать это с помощью

conda install 'pandas-datareader>=0.9'

или

conda install pandas-datareader[version='>=0.9']

После того, как вы запустите это, оно будет добавлено в ваши явные спецификации1, и это должно заблокировать по крайней мере эту версию pandas-datareader, в том числе в последующих conda update --all запусках. 2Этот ответ содержит более полное описание системы Conda MatchSpec, который охватывает объем того, что может быть указано.

Технические характеристики канала

Хотя это не то, чего на самом деле хочет OP, возможно, стоит уточнить, почему произошло переключение каналов и как можно явно указать канал. Флаг --channel|-c добавляет (и устанавливает приоритет) канал только во время команды, с которой он используется. Он не сообщает Conda, что конкретный пакет должен поступать из этого канала. Следовательно, поскольку OP, вероятно, имеет приоритет conda-forge по умолчанию в своей глобальной / пользовательской конфигурации (см. conda config --show channels), запуск conda update --all просто переключится обратно на последнюю загруженную сборку.

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

conda install anaconda::pandas-datareader

Затем это добавит anaconda::pandas-datareader в явные спецификации, и это должно зафиксировать тот факт, что ожидается, что pandas-datareader будет поступать из канала анаконды.

Закрепление пакета

В противном случае другим вариантом может быть закрепление пакета.


[1] One can check explicit specifications with conda env export --from-history.

[2] Be aware that some flags may override explicit specifications without warning, such as --update-deps.

Спасибо за отличный ответ. Я проверил путем тестирования, что conda install 'pandas-datareader>=0.9' решит проблему. Отмечен как правильный ответ.

guagay_wk 21.12.2020 03:39

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