出于某种原因,我决定升级setuptools
,运行conda install -c anaconda setuptools
时弹出的所谓包计划如下:
The following packages will be downloaded:
package | build
---------------------------|-----------------
certifi-2019.3.9 | py37_0 155 KB anaconda
pip-19.1.1 | py37_0 1.8 MB anaconda
python-3.7.2 | h8c8aaf0_10 17.7 MB anaconda
setuptools-41.0.1 | py37_0 680 KB anaconda
wheel-0.33.4 | py37_0 57 KB anaconda
wincertstore-0.2 | py37_0 13 KB anaconda
------------------------------------------------------------
Total: 20.4 MB
The following NEW packages will be INSTALLED:
pip anaconda/win-64::pip-19.1.1-py37_0
The following packages will be UPDATED:
certifi 2018.11.29-py36_0 --> 2019.3.9-py37_0
python pkgs/main::python-3.6.4-h6538335_1 --> anaconda::python-3.7.2-h8c8aaf0_10
setuptools pkgs/main::setuptools-38.4.0-py36_0 --> anaconda::setuptools-41.0.1-py37_0
wheel pkgs/main::wheel-0.30.0-py36h6c3ec14_1 --> anaconda::wheel-0.33.4-py37_0
The following packages will be SUPERSEDED by a higher-priority channel:
wincertstore pkgs/main::wincertstore-0.2-py36h7fe5~ --> anaconda::wincertstore-0.2-py37_0
然而,升级破坏了我的代码的其他部分,这是真正需要的,不能更新。因此,我决定回滚到以前的状态。最新的修订conda list --revisions
是:
2019-02-12 15:10:38 (rev 12)
bzip2 {1.0.6 (conda-forge) -> 1.0.6 (anaconda)}
ca-certificates {2018.03.07 -> 2019.1.23 (anaconda)}
certifi {2018.11.29 -> 2018.11.29 (anaconda)}
conda {4.5.12 -> 4.6.2 (anaconda)}
nbconvert {5.3.1 -> 5.4.0 (anaconda)}
openssl {1.1.1a -> 1.1.1 (anaconda)}
snappy {1.1.7 (conda-forge) -> 1.1.7 (anaconda)}
vc {14.1 -> 14.1 (anaconda)}
vs2015_runtime {14.15.26706 -> 15.5.2 (anaconda)}
yaml {0.1.7 (conda-forge) -> 0.1.7 (anaconda)}
zlib {1.2.11 (conda-forge) -> 1.2.11 (anaconda)}
+defusedxml-0.5.0 (anaconda)
2019-05-17 16:52:29 (rev 13)
certifi {2018.11.29 (anaconda) -> 2019.3.9 (anaconda)}
pip {9.0.1 -> 19.1.1 (anaconda)}
python {3.6.4 -> 3.7.2 (anaconda)}
setuptools {38.4.0 -> 41.0.1 (anaconda)}
wheel {0.30.0 -> 0.33.4 (anaconda)}
wincertstore {0.2 -> 0.2 (anaconda)}
现在的问题是,当我执行conda install --revision 12
时,我得到以下错误:
PackagesNotFoundError: The following packages are missing from the target environment:
- anaconda::certifi==2018.11.29=py36_0
你知道怎么回滚吗?
多谢
4条答案
按热度按时间cl25kdpy1#
看起来您正在通过发出一系列
conda install
命令来维护您的环境。您可以继续这样做,并在命令行中指定其他版本。但我建议您改用这种方法:创建如下所示的
environment.yml
文件。根据需要添加其他内容。
使用
conda env update
安装软件包。(使用which python
,您可以看到它们的安装位置。)这种方法的一个优点是你可以很容易地从
rm -rf ~/miniconda3/envs/myproject/
(或者安装它们的任何地方),然后从conda env update
重新安装。这通常可以解决版本问题,或者至少提供了一个关于应该放宽哪些版本约束以允许可行解决方案的提示。编辑
我个人喜欢我的环境中的.yml文件中的
>=
约束。当事情出错时,坚持使用现代版本有利于社区支持,并且有利于更新的速度,因为conda将只有少数现代版本需要考虑,而不是试图弄清楚python2可能如何使用依赖约束。它帮助我了解更新。然后在引入新的deps后重新运行自动化单元测试。或者,如果需要,您可以定期存储
==
约束以锁定快照,例如bzip2 == 1.0.6
。如果您尚未执行此操作,您 * 仍然 * 可以使用bzip2 >= 1.0.5
checkout 旧快照,并使用全局搜索和替换进行编辑。将>=
更改为==
。这将设置时间机器上的控件,以便在时间上回到一些一致的旧dep版本集。如果你的conda env update
运行显示出一些粗糙的边缘,考虑核武器的环境,并重新填充它从头开始。通常一个干净的安装这样会运行得更顺利。xt0899hw2#
为了防止有人遇到类似的情况,这是我所做的,公平地说,它实际上不是一个回滚。而且,我的conda环境似乎真的被我在最初的帖子中提到的升级搞得一团糟,因为当我做
conda update conda
时,我收到了以下错误:我的麻木也坏了,谁知道还有什么...。
我按照Kale Franz在此链接中描述的步骤操作:https://github.com/conda/conda/issues/7714#issuecomment-417553149
为了完整起见,我在下面附上他的回答的截图:
运行Kale在他的帖子中建议的命令,我得到了一个很长的导致不一致的包的列表。我是一个很长的列表,我只是在最前面的几行下面粘贴:
名单结束后,消息继续如下:
现在一切看起来都很好,如果我做
conda list --revisions
,我最近的两个修订是:carvr3hs3#
我同意J_H的观点,最好的办法是把你的environment.yml保存在你的代码版本系统(Git)中,然后在出现问题的时候你可以删除你的环境,用
conda env create -f environment.yml
重新创建它(但不是用conda env update
)。mrwjdhj34#
我遇到了一个类似的问题,我无法角色回旧版本。
我在以下样式中收到了类似的错误消息
将通道添加到命令中会有所帮助