Неожиданный токен # в JSON в позиции 0 при открытии файла ipynb в vscode - PullRequest
2 голосов
/ 04 августа 2020

У меня есть файл ipynb (блокнот jupyter), который я открываю в vscode с расширением python. Я получаю сообщение об ошибке в заголовке

Unexpected token # in JSON at position 0

, которое я вообще не понимаю, поскольку файл должен интерпретироваться как python файл.

Я могу изменить расширение на .py и открыть его с помощью vscode, но у меня нет декораторов для запуска / отладки ячеек, таких как определение здесь (https://code.visualstudio.com/docs/python/jupyter-support-py).

Я знаю файл правильный, потому что я использовал его в другой установке vscode на другом компьютере и отлично работает.

Я понятия не имею, что может быть неправильно настроено в моей среде ... Любые вершины были бы действительно полезны.

Вот фактический код python, который у меня вызывает указанную ошибку в моей реальной среде.

issue.ipynb

# %%
import world as w
import world_eg as weg
import world_case1 as wc1
import simulator_static as simulation
import numpy as np
from scipy.optimize import minimize
import matplotlib.pyplot as plt```

From the error, I understand that is parsing the file as a JSON file and the first line, which contains the #, fails. 

Ответы [ 2 ]

0 голосов
/ 12 августа 2020
Файлы

.ipynb на самом деле не являются файлами Python исходного кода - они закодированы как файлы JSON. Если вы создадите новую записную книжку, а затем переименуете расширение файла или откроете его в каком-либо текстовом редакторе, вы увидите структуру базового файла JSON.

Когда VS Code пытается интерпретировать ваш файл, он попытка синтаксического анализа источника Python как объекта JSON, что, очевидно, завершится неудачей и приведет к иначе crypti c ошибке неожиданного токена.

Другими словами, невозможно преобразовать Python скрипт в блокнот, просто изменив расширение файла. Копирование и вставка кода вручную будет работать, или вы можете попробовать поискать в Google какой-нибудь инструмент, например https://github.com/remykarem/python2jupyter

0 голосов
/ 04 августа 2020

Это происходит, когда вы делаете запрос к серверу и анализируете ответ как JSON, но это не JSON. JSON должно начинаться с допустимого JSON значения - объекта, массива, строки, числа или false / true / null. Причина root в том, что сервер вернул HTML или другую строку, отличную от JSON.

Я пробовал ваш код в своем проекте и ничего плохого. все выглядит нормально. Проверьте сеть Jupyter Server, попробуйте перезапустить vscode и воссоздать новый файл juypter и посмотреть, исчезнет ли проблема.

enter image description here

[edit]

like the above screenshot shows, type # %% will add a new cell. Equally, when you open a .ipynb file, if python extension distinguishes the # %%, button run cell | debug cell will be displayed automatically for you to do further test.

введите описание изображения здесь

вы можете скопировать свой код без # %% в новый созданный пустой файл juypter, затем нажмите кнопку export as и выберите Python Script, чтобы получить кнопку Run Cell | Debug Cell.

ИЛИ переустановите расширение python и повторите попытку.

...