更新 conda 后 conda 环境损坏
conda environment broken after updating conda
在广泛使用 conda 一段时间后,我昨天被要求更新它,现在看起来有些问题。我必须承认,我不是幕后发生的事情的专家,所以请耐心等待 :)
安装 conda 后,我使用 pip
安装各种软件包。
昨天我开始研究 git 教程中的一些代码,该教程建议创建一个临时环境来使用:
conda env create -f binder/environment.yml
在这一步,我被建议更新 conda,因为我使用的是旧版本。我在我的终端中找不到该特定消息(即我找不到我之前使用的 conda 版本),但这是我现在检查 conda 版本时得到的信息:
(base) francesco ~$ conda list conda
# packages in environment at /Users/francesco/anaconda3:
#
# Name Version Build Channel
_anaconda_depends 2019.03 py36_0
anaconda custom py36_1
anaconda-client 1.7.2 py36_0
anaconda-navigator 1.8.7 py36_0
anaconda-project 0.8.4 py_0
conda 4.8.3 py36_0
conda-build 3.10.5 py36_0
conda-env 2.6.0 h36134e3_0
conda-package-handling 1.6.0 py36h1de35cc_0
conda-verify 3.4.2 py_1
更新后我注意到的一件事是,为了 activate/deactivate 环境,我不得不使用 conda activate/deactivate <env>
而不是 source activate/deactivate <env>
。
之后我在新环境中使用代码没有任何问题。
今天我试图激活我工作的主要环境,但我被要求 "init" 我的 shell 首先是:
conda init bash
之后我激活了我的 "usual" 环境:
conda activate testenv
我尝试启动 Jupyter Lab,但出现此错误:
(testenv) francesco ~$ jupyter lab
Error executing Jupyter command 'lab': [Errno 2] No such file or directory
这是怎么回事?为什么 Jupyter Lab 在我通常的环境中不再工作?
我检查了 testenv
中的安装,一切正常:
(testenv) francesco ~$ conda list | grep jup
jupyter 1.0.0 py37_7
jupyter_client 5.2.4 py37_0
jupyter_console 6.0.0 py37_0
jupyter_core 4.4.0 py37_0
(testenv) francesco ~$ pip list | grep jup
jupyter 1.0.0
jupyter-client 5.2.4
jupyter-console 6.0.0
jupyter-core 4.4.0
(testenv) francesco ~$
有人知道这是怎么回事吗?这对我来说是个大问题,因为 conda/jupyter 实验室是我工作的主要工具 :\
通常的做法是只在单个 Conda 环境中安装 Jupyter(如果是 Anaconda 用户,通常是 base env),并始终从那里启动 Jupyter。要在 Jupyter 中使用其他 Python 环境,您需要在这些环境中安装 ipykernel
,例如
conda install -n testenv ipykernel
并且,为了避免必须注册额外的环境,建议在 Jupyter 环境中安装 nb_conda_kernels
,例如
conda install -n base nb_conda_kernels
附带说明一下,使用 Pip 安装东西会使环境不稳定。我强烈建议学习并遵守 the documented best practices.
@FrancescoLS 看来您可能安装了旧版本的 Conda(?)作为来自 Anaconda 的 CHANGELOG indicates that source activate
was deprecated in favor of conda activate
in Conda v4.4.0
(as is also noted in this "How to Get Ready for the Release of conda 4.4" post]。
这确实不是 "answer" 任何可操作的方式,但似乎您并不是唯一一个破坏人们环境的 Conda 更新。
- superuser: Conda update conda does extra stuff and destroy my anaconda install
- Conda Issue #8842: Conda Deletes All Modules During Update
- 还有很多。 :/
我认为可以肯定地说,在升级期间保持虚拟环境安全完好是很难做到的,而在跨虚拟环境维护者 (Conda) 进行重大升级时更难。这是我个人尝试将所有项目虚拟环境维护在本地 Python 3 venv
虚拟环境 pip
或通过 Poetry (因为它们(或至少曾经是)way 比必须通过 Conda 的较慢的求解器更快地恢复)然后只有在我需要引入多个外部二进制文件时才求助于使用 Conda应用程序。
您是否能够为您的工作创建一个新的 Conda 环境来有效地恢复它(也许从您自己的 environment.yml
环境文件)?
在广泛使用 conda 一段时间后,我昨天被要求更新它,现在看起来有些问题。我必须承认,我不是幕后发生的事情的专家,所以请耐心等待 :)
安装 conda 后,我使用 pip
安装各种软件包。
昨天我开始研究 git 教程中的一些代码,该教程建议创建一个临时环境来使用:
conda env create -f binder/environment.yml
在这一步,我被建议更新 conda,因为我使用的是旧版本。我在我的终端中找不到该特定消息(即我找不到我之前使用的 conda 版本),但这是我现在检查 conda 版本时得到的信息:
(base) francesco ~$ conda list conda
# packages in environment at /Users/francesco/anaconda3:
#
# Name Version Build Channel
_anaconda_depends 2019.03 py36_0
anaconda custom py36_1
anaconda-client 1.7.2 py36_0
anaconda-navigator 1.8.7 py36_0
anaconda-project 0.8.4 py_0
conda 4.8.3 py36_0
conda-build 3.10.5 py36_0
conda-env 2.6.0 h36134e3_0
conda-package-handling 1.6.0 py36h1de35cc_0
conda-verify 3.4.2 py_1
更新后我注意到的一件事是,为了 activate/deactivate 环境,我不得不使用 conda activate/deactivate <env>
而不是 source activate/deactivate <env>
。
之后我在新环境中使用代码没有任何问题。
今天我试图激活我工作的主要环境,但我被要求 "init" 我的 shell 首先是:
conda init bash
之后我激活了我的 "usual" 环境:
conda activate testenv
我尝试启动 Jupyter Lab,但出现此错误:
(testenv) francesco ~$ jupyter lab
Error executing Jupyter command 'lab': [Errno 2] No such file or directory
这是怎么回事?为什么 Jupyter Lab 在我通常的环境中不再工作?
我检查了 testenv
中的安装,一切正常:
(testenv) francesco ~$ conda list | grep jup
jupyter 1.0.0 py37_7
jupyter_client 5.2.4 py37_0
jupyter_console 6.0.0 py37_0
jupyter_core 4.4.0 py37_0
(testenv) francesco ~$ pip list | grep jup
jupyter 1.0.0
jupyter-client 5.2.4
jupyter-console 6.0.0
jupyter-core 4.4.0
(testenv) francesco ~$
有人知道这是怎么回事吗?这对我来说是个大问题,因为 conda/jupyter 实验室是我工作的主要工具 :\
通常的做法是只在单个 Conda 环境中安装 Jupyter(如果是 Anaconda 用户,通常是 base env),并始终从那里启动 Jupyter。要在 Jupyter 中使用其他 Python 环境,您需要在这些环境中安装 ipykernel
,例如
conda install -n testenv ipykernel
并且,为了避免必须注册额外的环境,建议在 Jupyter 环境中安装 nb_conda_kernels
,例如
conda install -n base nb_conda_kernels
附带说明一下,使用 Pip 安装东西会使环境不稳定。我强烈建议学习并遵守 the documented best practices.
@FrancescoLS 看来您可能安装了旧版本的 Conda(?)作为来自 Anaconda 的 CHANGELOG indicates that source activate
was deprecated in favor of conda activate
in Conda v4.4.0
(as is also noted in this "How to Get Ready for the Release of conda 4.4" post]。
这确实不是 "answer" 任何可操作的方式,但似乎您并不是唯一一个破坏人们环境的 Conda 更新。
- superuser: Conda update conda does extra stuff and destroy my anaconda install
- Conda Issue #8842: Conda Deletes All Modules During Update
- 还有很多。 :/
我认为可以肯定地说,在升级期间保持虚拟环境安全完好是很难做到的,而在跨虚拟环境维护者 (Conda) 进行重大升级时更难。这是我个人尝试将所有项目虚拟环境维护在本地 Python 3 venv
虚拟环境 pip
或通过 Poetry (因为它们(或至少曾经是)way 比必须通过 Conda 的较慢的求解器更快地恢复)然后只有在我需要引入多个外部二进制文件时才求助于使用 Conda应用程序。
您是否能够为您的工作创建一个新的 Conda 环境来有效地恢复它(也许从您自己的 environment.yml
环境文件)?