Notatnik Jupyter nie zapisuje: brak argumentu „_xsrf” w poście


164

Od około 26 godzin uruchamiam skrypt na notebookach jupyter; Tak naprawdę nie używałem komputera do niczego innego, ale musi on uruchomić ten program, który zajmie około 30 godzin. Po około 21 godzinach przestał zapisywać, a mój terminal miał to:

403 PUT /api/contents/[file.ipynb] (::1): '_xsrf' argument missing from POST

gdzie [file.ipynb] to lokalizacja mojego notatnika Jupyter. Mówi również:

'_xsrf' argument missing from post

ponownie w prawej górnej części notatnika. Program nadal działa i nie chcę ponownie uruchamiać notebooka jupyter i muszę ponownie uruchamiać program, ponieważ mam termin, czy mogę coś jeszcze zrobić?

Używam Google Chrome, ale nie mam rozszerzenia LastPass ani żadnych znaków „%” w moim kodzie, jak sugerował inny post.

Dzięki za pomoc!


16
Jeśli przeprowadzisz wyszukiwanie, odbywają się dyskusje online na ten temat. Jedna z sugestii, którą widziałem, to otwarcie tego samego notatnika w nowym oknie przeglądarki, co rozwiązuje problem. Następnie możesz zamknąć to nowe okno i kontynuować pracę w poprzednim.
AlexK

Dzięki @AlexK, to rozwiązuje ten sam problem na moim MBP.
RandomWalker

Odpowiedzi:


311

Najłatwiejszy sposób, jaki znalazłem, jest następujący:

https://github.com/nteract/hydrogen/issues/922#issuecomment-405456346

Po prostu otwórz inny (niedziałający, istniejący) notatnik na tym samym jądrze i problem zniknie w magiczny sposób; możesz ponownie zapisać notatniki, które poprzednio wyświetlały _xsrfbłąd.

Jeśli zamknąłeś już stronę główną Jupyter, link do niej możesz znaleźć na terminalu, z którego Jupyter został uruchomiony.


22
To uratowało mi dzień. Gdybym nie natrafił na takie rozwiązanie, straciłbym 4 dni pracy. Dziękuję Ci!
Hari Dattada

14
Nie musiałem otwierać nowego notatnika. Zamiast tego ponownie otworzyłem drzewo i ponownie podłączyłem jądro. W pewnym momencie zrestartowałem również jądro.
user650654

1
Nie pozwolono mi nawet otworzyć nowego notatnika, dopóki nie odświeżę listy notatników. Po tym otworzyłem nowy notatnik i błąd zniknął ..
Pavindu

2
Zwróć uwagę, że obejście wymaga wcześniejszego utworzenia notatnika, więc otwórz inny istniejący niedziałający notatnik, nie twórz nowego ani nie otwieraj działającego, co spowodowałoby ten sam błąd.
mirekphd

5
Dlatego uwielbiam stackoverflow
Albert Chen

80

Rozwiązanie, które znalazłem, wydaje się zbyt proste, ale zadziałało. Przejdź do strony głównej / tree znanej jako Jupyter i odśwież przeglądarkę. Pracował.


3
U mnie to zadziałało, podczas gdy rozwiązanie umożliwiające otwarcie kolejnego notatnika zawiodło w moim przypadku.
DISC-O

Dzięki Bogu widzę, które posty głosowałem za głosem, więc wiem, którego rozwiązania użyć, gdy zapomnę i wrócę za rok.
eric

7

Codziennie korzystam z notebooków jupyter i nigdy wcześniej nie spotkałem się z tym problemem ... aż do dzisiaj. Miałem notebook otwarty przez cały dzień, ale nic nie działał, a potem bez wyraźnego powodu zatrzymałem automatyczne zapisywanie z '_xsrf' argument missing from POSTkomunikatem o błędzie w prawym górnym rogu. FYI - to jest notatnik python3.

Nie znam przyczyny tego problemu, ale niedawno zaktualizowałem moją wersję python3 do 3.7.2 i zaktualizowałem wszystkie moje pakiety witryn do ich najnowszej wersji kilka dni temu, co może być przyczyną.

Jeśli chodzi o rozwiązanie, jak zasugerował komentarz @AlexK, otworzyłem ten sam notatnik w nowym oknie (a właściwie w innej przeglądarce), używając

jupyter notebook list

w terminalu, aby uzyskać adres URL z tokenem logowania.

Spowodowało to, że miałem ponownie otwarty i zapisany notatnik, ale brakowało informacji, które wprowadziłem od ostatniego udanego automatycznego zapisywania. Na szczęście moja zepsuta instancja nadal była otwarta i działała niezależnie od zapisywania, więc mogłem po prostu skopiować i wkleić informacje, a następnie kliknąć Zapisz. Więc nie zamykaj uszkodzonej instancji, jeśli spróbujesz tego!


3

Kiedy klikam przycisk „zapisz”, pojawia się ten błąd. Na podstawie odpowiedzi w tym poście i innych witrynach internetowych właśnie znalazłem rozwiązanie. Mój notebook jupyter jest instalowany z pip. Dlatego uzyskuję do niego dostęp, wpisując „jupyter notebook” w wierszu poleceń systemu Windows.

(1) otwórz nowe okno poleceń, a następnie otwórz nowy notatnik jupyter. spróbuj ponownie zapisać w starym notatniku, tym razem błąd to „niepowodzenie: zabronione”

(2) Następnie w starym notatniku kliknij „pobierz jako”, pojawi się nowe okno z pytaniem o token.

wprowadź opis obrazu tutaj

(3) otwórz kolejne okno poleceń, a następnie otwórz kolejny notatnik jupyter, wpisz „lista notatników jupyter” skopiuj kod po „token =” i przed: do pola, które właśnie zobaczyłeś. Możesz zaoszczędzić ten czas. Jeśli to się nie powiedzie, możesz wypróbować inny token z listy


Zrobiło to dla mnie, dzięki! Chciałem tylko wyjaśnić ostatni krok - rozszyfrowanie, co masz na myśli, zajęło mi minutę. Polecenie jupyter notebook listwypluje długi adres URL, którego częścią jest długi ciąg znaków pojawiających się między token=a ::. Skopiuj i wklej ten ciąg znaków w polu „hasło lub token” z kroku (2), a błąd „zabroniony” w oryginalnym notatniku jupyter zniknie.
Jorge Aurelio Menendez

3

Jedyne rozwiązanie zadziałało dla mnie:

  1. Otworzyłem nową kartę w chrome
  2. Wkleiłem: http: // localhost: 8888 /? Token = ......
  3. potem poszedłem do mojego oryginalnego zeszytu i udało mi się go zapisać

2

1 obejście tego problemu to:

  1. Pobierz notatnik, którego nie możesz zapisać, przechodząc do: Plik -> Pobierz jako -> Notatnik (ipynb).

  2. Otwórz pobrany notatnik, klikając pobrany plik w interfejsie przeglądarki jupyter

Teraz powinieneś móc zapisać (lub zmienić nazwę) tego notatnika z interfejsu użytkownika jupyter


Otwarcie innego notatnika nie rozwiązało tego za mnie, ale tak się stało (tj. Pobranie NB)
Alex

2

W moim przypadku ten problem został rozwiązany poprzez kliknięcie „Jądro” (widoczne na górze notebooków), a następnie „Połącz ponownie”.

Uwaga Dodano: w niektórych wersjach Jupyter nie ma opcji „Połącz ponownie”.


1

Mam ten sam problem (niemożliwy do zapisania ani notebooków, ani modułów .py) przy użyciu obrazu w dokerze nvidia. Rozwiązaniem było po prostu otwarcie terminala wewnątrz jupyter bez wpisywania czegokolwiek, ale wyjście po zapisaniu plików. Zrobiono to w tej samej instancji przeglądarki / jupyter.

System operacyjny komputera: Ubuntu 18.04


0

Otwórz ustawienie programisty, kliknij konsolę i wpisz następujące polecenie

JSON.parse (document.getElementById ('jupyter-config-data'). TextContent) .token

Następnie spróbuj zapisać Notatnik. Notatnik, który wcześniej nie był zapisywany, zapisze teraz.


0

To najłatwiejszy sposób.

Nie musiałem otwierać nowego notatnika. Zamiast tego ponownie otworzyłem drzewo i ponownie podłączyłem jądro. W pewnym momencie zrestartowałem również jądro. - user650654 9 października 1919 o 0:17


W przeciwnym razie zawsze jest dostępna opcja odpowiedzi „Wiki społeczności”
Double Expresso,

0

Udało mi się go rozwiązać, klikając menu „Kernel” i wybierając „Przerwij”.


0

Najczęściej głosowana odpowiedź nie działa podczas korzystania z Jupyter Lab. Ten jednak ma. Po prostu skopiuj adres URL do nowej karty, zamień „laboratorium” na „drzewo” i naciśnij Enter, aby załadować stronę. Wygeneruje nowy token csrf dla Twojej sesji i gotowe!

Sugerowałbym domyślne włączenie opcji Ustawienia> Automatyczne zapisywanie dokumentów, aby uniknąć martwienia się o utratę pracy w przyszłości. Zapisuje bardzo regularnie, więc wszystko powinno być aktualne, zanim dojdzie do przekroczenia limitu czasu.

Nie musiałem otwierać nowego notatnika. Zamiast tego ponownie otworzyłem drzewo i ponownie podłączyłem jądro. W pewnym momencie zrestartowałem również jądro. - user650654 9 października 1919 o 0:17


0

W moim przypadku mam zamkniętą kartę Strona główna. Po ponownym otwarciu Jupyter, błąd zniknął automatycznie i możemy zapisać plik.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.