Python/Jupyter VSCode 中的笔记本未使用正确的环境
Python/Jupyter notebook in VSCode does not use the right environment
情况
我在 Windows10.
上使用 Anaconda 3
我有一个 Visual Studio 代码工作区 (my_workspace
),其中包含一个 Jupyter 笔记本 (my_notebook.ipynb
)。 VSCode 安装了 Python 扩展。
文件 my_workspace/settings.json
包含:
{
"python.pythonPath": "C:\Users\Me\Anaconda3\envs\my_env\python.exe"
}
my_env
是现有的 Anaconda 环境。我可以激活它并在 shell 中使用它,如果我 运行 jupyter lab
在这样的 shell 中,笔记本中的代码可以导入 my_env
的包裹符合预期。
如果我在 VSCode 中打开 my_workspace
,然后在选项卡中打开 my_notebook.ipynb
,VSCode 的状态栏中也会提到 my_env
("Python 3.7.6 64-bit ('my_env': conda)"),当我在 VSCode 的控制台中打开 PowerShell 提示时,my_env
会自动激活(我 运行 conda init
一次)。
问题
当笔记本在 VSCode 中打开时,Jupyter 内核似乎使用 base
环境的 Python 解释器而不是 my_env
中的解释器。导入安装在 my_env
中但未安装在 base
中的包时,出现此错误:
>>> import keras
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'keras'
所有包都会发生这种情况,而不仅仅是 keras
。
在 VSCode 的笔记本选项卡中,如果我点击右上角的解释器名称,然后选择正确的解释器(my_env
中的那个),然后笔记本 运行s 在 my_env
中正确。但是我每次重新打开时都必须这样做 VSCode.
如何使默认内核尊重在 settings.json
中选择的环境?
我认为现在 settings.json
中没有参数可以控制它。我在启动笔记本的环境中遇到了类似的问题,我能够通过修改 IPython 笔记本中的 kernelspec
部分来解决这个问题。
基本上,将笔记本作为 JSON 文件打开并删除 kernelspec
部分。当笔记本从 vscode 启动时,该部分将填充工作空间的默认 python 环境内核。在我的例子中,充满了 pipenv 环境。
就我而言,在创建新环境后,必须重新启动 VS Code 数次,然后它才能找到新环境。看起来好像 VS Code 需要一些时间才能在系统中找到新的 Env。
情况
我在 Windows10.
上使用 Anaconda 3我有一个 Visual Studio 代码工作区 (my_workspace
),其中包含一个 Jupyter 笔记本 (my_notebook.ipynb
)。 VSCode 安装了 Python 扩展。
文件 my_workspace/settings.json
包含:
{
"python.pythonPath": "C:\Users\Me\Anaconda3\envs\my_env\python.exe"
}
my_env
是现有的 Anaconda 环境。我可以激活它并在 shell 中使用它,如果我 运行 jupyter lab
在这样的 shell 中,笔记本中的代码可以导入 my_env
的包裹符合预期。
如果我在 VSCode 中打开 my_workspace
,然后在选项卡中打开 my_notebook.ipynb
,VSCode 的状态栏中也会提到 my_env
("Python 3.7.6 64-bit ('my_env': conda)"),当我在 VSCode 的控制台中打开 PowerShell 提示时,my_env
会自动激活(我 运行 conda init
一次)。
问题
当笔记本在 VSCode 中打开时,Jupyter 内核似乎使用 base
环境的 Python 解释器而不是 my_env
中的解释器。导入安装在 my_env
中但未安装在 base
中的包时,出现此错误:
>>> import keras
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'keras'
所有包都会发生这种情况,而不仅仅是 keras
。
在 VSCode 的笔记本选项卡中,如果我点击右上角的解释器名称,然后选择正确的解释器(my_env
中的那个),然后笔记本 运行s 在 my_env
中正确。但是我每次重新打开时都必须这样做 VSCode.
如何使默认内核尊重在 settings.json
中选择的环境?
我认为现在 settings.json
中没有参数可以控制它。我在启动笔记本的环境中遇到了类似的问题,我能够通过修改 IPython 笔记本中的 kernelspec
部分来解决这个问题。
基本上,将笔记本作为 JSON 文件打开并删除 kernelspec
部分。当笔记本从 vscode 启动时,该部分将填充工作空间的默认 python 环境内核。在我的例子中,充满了 pipenv 环境。
就我而言,在创建新环境后,必须重新启动 VS Code 数次,然后它才能找到新环境。看起来好像 VS Code 需要一些时间才能在系统中找到新的 Env。