1

我在使用v0.81 包时遇到问题。pandas-datareader为了解决我的问题,我必须通过运行以下命令将包升级到更新的 0.9 版本;

conda install -c anaconda pandas-datareader

不幸的是,当我稍后尝试使用命令升级 conda 包时conda update --allpandas-datareader被降级回 v0.81。v0.81 来自 conda-forge 频道。我想要的是来自 anaconda 频道的 v0.9。

下面是我想要的。

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

下面不是我想要的

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

如何在我运行时强制 conda 始终将 pandas-datareader 升级到 anaconda 频道中的最新版本conda update --all

我在 Windows 10 上使用 python anaconda 2020_07 版本。

4

1 回答 1

3

指定最低版本

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频道anaconda::pandas-datareader的事实。pandas-datareader

封装固定

否则,封装固定可能是另一种选择。


[1]可以使用 来检查明确的规范conda env export --from-history

[2]请注意,某些标志可能会在没有警告的情况下覆盖显式规范,例如--update-deps.

于 2020-12-21T01:20:27.470 回答