无法在VSCode、Python和Windows 10中运行Jupyter笔记本

2024-04-18 23:08:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Windows 10计算机上安装了一个现有的香草Python,我不想重新安装Anaconda

在vscode中尝试从ipynb文件运行代码时,出现以下错误:

Error: Jupyter cannot be started. Error attempting to locate jupyter:
at A.startServer (c:\Users\[username]\.vscode\extensions\ms-python.python-2020.2.64397\out\client\extension.js:1:786120)
at async A.ensureServerAndNotebookImpl (c:\Users\[username]\.vscode\extensions\ms-python.python-2020.2.64397\out\client\extension.js:1:785575)
at async A.ensureServerAndNotebook (c:\Users\[username]\.vscode\extensions\ms-python.python-2020.2.64397\out\client\extension.js:1:785376)
at async A.submitCode (c:\Users\[username]\.vscode\extensions\ms-python.python-2020.2.64397\out\client\extension.js:1:782328)
at async A.reexecuteCell (c:\Users\[username]\.vscode\extensions\ms-python.python-2020.2.64397\out\client\extension.js:75:879318)

另外,VSCode还存在以下错误: enter image description here


以下是我尝试过的一些事情:

检查VSCode扩展是否正确安装

不推荐使用“Jupyter”扩展。我安装了来自微软的“Python”插件,其中包含对Jupiter笔记本的支持

Jupyter安装正确

我尝试重新安装jupyter:

> python -m pip install --upgrade pip
> pip install jupyter
> pip install notebook

试图在终端/命令行上运行Jupyter

> jupyter notebook    //didn't work
jupyter : The term 'jupyter' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or   
if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ jupyter
+ ~~~~~~~
+ CategoryInfo          : ObjectNotFound: (jupyter:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

这导致无法找到jupyter可执行文件时出错。 据this post所述,我尝试了以下方法,效果良好:

> python -m notebook

检查是否指向正确的解释器

根据this post,我尝试:

  1. 按Command+Shift+P打开新的命令托盘
  2. 类型>;Python:选择Intepreter启动jupyter笔记本服务器

但是我的计算机上只安装了一个版本的Python,这样做没有什么区别

检查路径

this post中有关于PYTHONPATH的评论,但是由于python目录被正确引用并且python可以从命令行工作,因此我没有进一步研究它

需要注意的一点是pip安装到我的"C:/Users/[username]/appdata/Roaming/Python-38/"文件夹中,而我的Python安装在"C:\Program Files\Python38-32\"


Tags: piptheclientasyncextensionjsusernamejupyter
2条回答

对我来说,另一个解决方案很有帮助。我不太确定问题出在哪里,但不知何故,为确切的工作区存储的状态导致Python扩展崩溃。 VSCode将所有工作区的状态存储在/Code/User/workspaceStorage/下的全局配置文件夹中。查看操作系统的this help paragraph中的settings.json路径,然后只替换路径的末尾。例如,对于Windows,设置路径是%APPDATA%\Code\User\settings.json,因此状态存储是

%APPDATA%/Code/User/workspaceStorage/

在这个目录中,有许多子目录具有一些十六进制名称,很难与工作区关联。查找工作区的id的步骤

  1. 用VSCode打开它
  2. 帮助→ 切换开发人员工具
  3. 在Console选项卡中,执行以下操作以获取工作区id:
vscode.context.configuration()["workspace"]["id"]

然后可以根据工作空间的id删除工作空间存储子文件夹

另一种方法是使用workspaceStorage文件夹内容本身。此文件夹中的每个文件夹都包含一个workspace.json,其中通常包含指向工作区的路径。所以我写了一个小python脚本来帮助我浏览它们。在脚本的末尾,有一个关于删除远程容器的所有工作空间的草案。请根据您的需要随意修改

from glob import glob
import os, json, sys
from shutil import rmtree

if sys.platform.startswith("win32"): path = os.environ["APPDATA"] + '/Code/User/workspaceStorage/' # Windows
elif sys.platform.startswith("darwin"): path = os.environ["HOME"] + '/Library/Application Support/Code/User/workspaceStorage/' # Mac OS
elif sys.platform.startswith("linux"): path = os.environ["HOME"] + '/.config/Code/User/workspaceStorage/' # Linux

for f in glob(path + "*/*.json"):
    with open(f) as fr:
        ws = json.load(fr)
    d = ""
    if "folder" in ws.keys():
        d = ws["folder"]
    elif "workspace" in ws.keys():
        d = ws["workspace"]
    elif "configuration" in ws.keys():
        d = ws["configuration"]["fsPath"]
    ws_path = os.path.dirname(f)
    print(d, ws_path)
    if d.startswith("vscode-remote://attached-container") or d.startswith("vscode-remote://dev-container"):
        print("Inside a container")
        # rmtree(ws_path)

如果您遇到类似问题,请尝试问题中提到的上述步骤

读了这篇文章后,我意识到我也必须映射与pip一起安装的脚本,即使它在我的漫游目录中https://discuss.python.org/t/windows-appdata-roaming-vs-local/2682。花了我这么多时间的困惑

以下是添加变量的步骤:

  1. 转到环境变量(如果您不知道如何使用,这里有一些说明:https://www.techjunkie.com/environment-variables-windows-10/
  2. 在“用户名的用户变量”部分,编辑“路径”变量。(它不能是“系统变量”部分,因为只有您可以访问自己的漫游文件夹)
  3. 添加“C:\Users[username]\AppData\Roaming\Python\Python38\Scripts”(或pip将脚本安装到PATH变量的位置)

最后,重新启动VSCode以更新VSCode的新环境变量。 现在运行ipynb文件中的脚本,它应该可以工作了。它还可能会抱怨它需要其他模块,在这种情况下,您可以使用“pip”来安装它

注意:如果您不受计算机上现有python版本的限制,也不想安装更多,那么您也可以使用python Anaconda发行版。https://www.anaconda.com/distribution/

注意:如果您希望jupyter note适用于所有使用您计算机的用户,则需要配置pip以将安装下载到不在“C:\users[username]”文件夹中的目录,并向其中添加系统变量

相关问题 更多 >