【发布时间】:2019-11-07 23:15:50
【问题描述】:
我在 Ubuntu Linux 18.04 LTS x64 上运行 Anaconda python 发行版,并使用通常的 conda update --all 更新了发行版。之后,命令行消息建议更新 conda 基本默认值。现在由于某种原因,我遇到了几个问题。首先,即使尝试重新安装conda install jupyter,我也无法启动jupyter lab。其次,我收到了这条新警告信息。
WARNING conda.base.context:use_only_tar_bz2(632):
Conda is constrained to only using the old .tar.bz2
file format because you have conda-build installed,
and it is <3.18.3. Update or remove conda-build to
get smaller downloads and faster extractions.
所以我从今天开始查看并找到了这个blog post 关于让 Anaconda 更快。但是该帖子似乎提供了更多信息,并且似乎不建议立即升级。
这是conda info的输出。
active environment : XXX
active env location : XXX
shell level : 2
user config file : ../.condarc
populated config files : ../.condarc
conda version : 4.7.5
conda-build version : 3.17.8
python version : 3.6.6.final.0
virtual packages : __cuda=10.1
base environment : ../anaconda3 (writable)
channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/linux-64
https://repo.anaconda.com/pkgs/r/noarch
package cache : ../.conda/pkgs
envs directories : ../.conda/envs
platform : linux-64
user-agent : conda/4.7.5 requests/2.22.0 CPython/3.6.6 Linux/4.15.0-50-generic ubuntu/18.04.2 glibc/2.27
UID:GID : 1000:1000
netrc file : None
offline mode : False
还有其他人遇到过这个问题吗?我应该删除旧的 anaconda 发行版并下载并安装新版本的 4.7,还是有更简单的修复方法?
更新
所以我确实将此问题发布到 Github 上的 conda 存储库。下面列出了针对此问题的当前问题。根据msarahan,这是问题的根源,只是临时解决方法
https://github.com/conda/conda/issues/8842
anaconda 是一个元包。每个版本由一组版本组成 所有这些都作为一组一起通过了 QA。如果你改变任何 该集合中任何软件包的版本,您不再拥有该版本 元包,因为你已经偏离了那个已知的集合。有一个 该元包的特殊版本,自定义,用于处理 这种约束的放松。 “自定义”版本仅取决于 特定版本的 python - 它消除了所有其他的约束 包。
conda 4.7 以不同的方式构建候选对象以进行添加 从早期的康达版本。它从历史的规格开始, 并尝试在可能的情况下限制事物,以加快解决方案。 当 conda 找到带有“自定义”版本的 anaconda 元包时, 它保留了它,但所有其他依赖项现在都是孤立的。 这就是 conda 删除它们的原因 - 它们在历史上没有规范 这告诉 conda 保留它们。
您可以通过运行
conda install --only-deps anaconda来恢复这些。从那时起,所有这些包都是 被认为是你明确历史的一部分,你不会有更多的 这样的问题。
【问题讨论】:
-
FWIW 我今天早些时候用这种方式炸毁了我的工作环境并花了一天的剩余时间试图修复它 - 到目前为止没有成功
-
@Daniel man 很遗憾听到这个消息。是的,我几乎尝试重新安装所有 anaconda,但随后进入环境文件夹并解决了一些问题
site-packages,它修复了一些问题。但我仍然收到这些警告。为什么他们在没有明确解释或迁移路径的情况下发布这些东西。 -
我的问题有点复杂。在 4.6 中,我使用
pip_interop_enabled: true channel_priority: strict来保持我的环境健全。有了这些设置,4.7 开始想要删除基本包,没有它们,它会变得无可救药地混乱。我最终从头开始重新安装并固定 4.6。