广泛使用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
更新后我注意到的一件事是,为了激活/停用环境,我不得不使用conda activate/deactivate <env>
而不是source activate/deactivate <env>
。
之后,我在新环境中使用代码,没有任何问题。
今天,我试图激活所使用的主要环境,但首先要求我使用以下方法“初始化”我的外壳:
conda init bash
之后,我激活了我的“常规”环境:
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实验室是我使用的主要工具:\
答案 0 :(得分:1)
通常的做法是仅在单个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。
答案 1 :(得分:1)
@FrancescoLS似乎您安装了较旧版本的Conda(?),因为CHANGELOG表示在Conda {{1}中已弃用source activate
,而赞成conda activate
}(这在Anaconda的“ How to Get Ready for the Release of conda 4.4”帖子中也有提及)。
这实际上不是任何可行的“答案”,但是似乎您并不孤单地在Conda更新中打破人们的环境。
我认为可以肯定地说,很难在升级过程中保持虚拟环境的完整性,而在跨虚拟环境维护者(Conda)进行重大升级时,这样做就更加困难。这是我亲自尝试使用v4.4.0
或通过Poetry在本机Python 3 venv
虚拟环境中维护所有项目虚拟环境的原因之一,因为它们是(或至少曾经)比必须通过Conda较慢的求解器来更快地恢复它们),然后仅在需要引入多个外部二进制应用程序时才诉诸于使用Conda。
您是否能够为您的工作创建一个新的Conda环境以有效地恢复它(也许从您自己的pip
文件在该环境中恢复)?