摘要(tldr)
如果希望'python3'内核始终在启动它的环境中运行Python安装,请删除用户'python3'内核,该内核优先于当前环境所处的环境:
jupyter kernelspec remove python3
完整解决方案
对于以下情况,我将发布一种替代且更简单的解决方案:
- 您已经创建了一个conda环境
- 此环境已安装了jupyter(还安装了ipykernel)
- 当您运行命令
jupyter notebook
并通过单击“新建”下拉菜单中的“ python3”来创建新笔记本时,该笔记本将从基本环境而非当前环境执行python。
- 您希望这样做,以便在任何环境中使用“ python3”启动新笔记本时都可以从该环境中执行Python版本,而不是从基础版本开始。
对于解决方案的其余部分,我将在环境中使用名称“ test_env”。另外,请注意,“ python3”是内核的名称。
当前投票最高的答案确实有效,但是还有另一种选择。它说要执行以下操作:
python -m ipykernel install --user --name test_env --display-name "Python (test_env)"
无论您jupyter notebook
从哪个环境启动,这都将为您提供使用test_env环境的选项。但是,使用“ python3”启动笔记本仍将使用基本环境中的Python安装。
可能发生的是存在一个用户python3内核。运行命令jupyter kernelspec list
以列出所有环境。例如,如果您有Mac,则会返回以下信息(我的用户名为Ted)。
python3 /Users/Ted/Library/Jupyter/kernels/python3
Jupyter在这里所做的事情是通过三种不同的途径搜索内核。它从用户到环境,再到系统。有关在每个操作系统中搜索路径的更多详细信息,请参见本文档。
上面的两个内核都在用户路径中,这意味着无论您从哪个环境启动jupyter笔记本电脑,它们都将可用。这也意味着,如果在环境级别存在另一个“ python3”内核,那么您将永远无法访问它。
对我来说,从启动笔记本的环境中选择“ python3”内核应该在该环境中执行Python更为有意义。
您可以通过在操作系统的Env搜索路径中查找来查看是否有另一个“ python3”环境(请参见上面文档的链接)。对于我(在Mac上),我发出了以下命令:
ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels
我确实在那里列出了“ python3”内核。
感谢这个GitHub问题注释(请看第一个响应),您可以使用以下命令删除User'python3'环境:
jupyter kernelspec remove python3
现在,当您运行时jupyter kernelspec list
,假设test_env仍处于活动状态,您将获得以下内容:
python3 /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3
请注意,该路径位于test_env目录中。如果创建一个新环境,安装jupyter,激活它并列出内核,您将在其环境路径中找到另一个“ python3”内核。
用户'python3'内核优先于任何Env'python3'内核。通过删除它,活动环境“ python3”内核被公开,并且每次都可以选择。这消除了手动创建内核的需要。对于需要将自己隔离到单个环境中的软件开发而言,这也更有意义。运行与主机环境不同的内核似乎并不自然。
似乎默认情况下也未为所有人安装此用户“ python3”,因此并非所有人都遇到此问题。
conda install ipykernel
在该环境中运行。