Jupyter Not Defteri kaydetmiyor: Gönderide '_xsrf' bağımsız değişkeni eksik


147

Yaklaşık 26 saattir jupyter not defterlerinde bir komut dosyası çalıştırıyorum; Bilgisayarımı başka hiçbir şey için kullanmadım, ancak tamamlanması ~ 30 saat sürecek olan bu programı çalıştırmam gerekiyor. Yaklaşık 21 saat içinde, tasarrufu durdurdu ve terminalimde şunlar vardı:

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

burada [file.ipynb] jupyter defterimin konumudur. Ayrıca şöyle diyor:

'_xsrf' argument missing from post

yine not defterinin sağ üst kısmında. Program hala çalışıyor ve Jupyter dizüstü bilgisayarı yeniden başlatmak istemiyorum ve son tarihim olduğu için programı tekrar çalıştırmak zorunda kaldım, yapabileceğim başka bir şey var mı?

Google chrome kullanıyorum, ancak başka bir gönderinin önerdiği gibi, kodumda LastPass uzantısı veya herhangi bir '%' karakteri yok.

Herhangi bir yardım için teşekkürler!


15
Bir arama yaparsanız, bu konuda çevrimiçi tartışmalar var. Gördüğüm bir öneri de aynı not defterini yeni bir tarayıcı penceresinde açarak sorunu çözmektir. Daha sonra bu yeni pencereyi kapatabilir ve önceki pencerede çalışmaya devam edebilirsiniz.
AlexK

Teşekkürler @AlexK, bu MBP'mdeki aynı sorunu çözüyor.
RandomWalker

Yanıtlar:


274

Bulduğum en kolay yol şuydu:

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

Sadece aynı çekirdekte başka bir (çalışmayan, var olan) dizüstü bilgisayarı açın ve sorun sihirli bir şekilde ortadan kalkar; Daha önce _xsrfhatayı gösteren not defterlerini yeniden kaydedebilirsiniz .

Jupyter ana sayfasını zaten kapattıysanız, Jupyter'in başlatıldığı terminalde ona bir bağlantı bulabilirsiniz.


18
Bu benim günümü kurtardı. Bu çözüme rastlamasaydım 4 günlük iş kaybedilirdi. Teşekkür ederim!
Hari Dattada

13
Yeni bir defter açmam gerekmedi. Bunun yerine ağacı yeniden açtım ve çekirdeği yeniden bağladım. Bir noktada çekirdeği de yeniden başlattım.
user650654

1
Defter listesini yenileyene kadar yeni bir not defteri açmama bile izin verilmedi. Bundan sonra yeni bir defter açtım ve hata ortadan kalktı ...
Pavindu

1
Geçici çözümün not defterinin daha önce oluşturulmasını gerektirdiğine dikkat edin, bu nedenle çalışmayan başka bir not defteri açın, yeni bir tane oluşturmayın veya çalışan bir not defteri açmayın; her ikisi de aynı hatayı doğuracaktır.
mirekphd

5
Stackoverflow'u bu yüzden seviyorum
Albert Chen

70

Karşılaştığım çözüm çok basit görünüyor ama işe yaradı. / Tree aka Jupyter ana sayfasına gidin ve tarayıcıyı yenileyin. Çalıştı.


3
Bu benim için çalıştı, oysa başka bir dizüstü bilgisayar açma çözümü benim durumumda başarısız oldu.
DISC-O

Tanrıya şükür, hangi gönderilere oy verdiğimi görebiliyorum, bu yüzden unutup bir yıl sonra geri döndüğümde hangi çözümü kullanacağımı biliyorum.
eric

7

Her gün jupyter defterler kullanıyorum ve bu sorunu daha önce hiç yaşamadım ... bugüne kadar. Dizüstü bilgisayarı bütün gün açık tuttum, ancak hiçbir şey çalıştırmıyordu ve daha sonra '_xsrf' argument missing from POSTsağ üstteki hata mesajıyla otomatik kaydetmeyi herhangi bir neden olmadan durdurdum . Bilginize - bu bir python3 not defteri.

Bu sorunun nedenini bilmiyorum, ancak yakın zamanda python3 sürümümü 3.7.2'ye yükselttim ve tüm site paketlerimi birkaç gün önce en son sürümlerine yükselttim, bu da muhtemelen nedeni olabilir.

Çözüme gelince, @AlexK'in yorumunda önerildiği gibi, aynı not defterini yeni bir pencerede açtım (aslında farklı bir tarayıcı)

jupyter notebook list

giriş belirteci ile URL'yi almak için terminalde.

Bu, defteri tekrar açıp kaydedilebilir hale getirmeme neden oldu, ancak son başarılı otomatik kayıttan bu yana girmiş olduğum bilgiler eksikti. Neyse ki, bozuk örneğim hala açıktı ve kaydetmekten ayrı çalışıyordu, bu yüzden bilgileri kopyalayıp yapıştırabildim ve ardından kaydet düğmesine bastım. Yani, bunu denerseniz bozuk örneği açık tutun!


3

'Kaydet' butonuna tıkladığımda bu hata veriyor. Bu yazıda ve diğer web sitelerinde verilen cevaplara dayanarak çözümü buldum. Jupyter dizüstü bilgisayarım pip'ten kuruldu. Bu yüzden Windows komut satırına 'jupyter notebook' yazarak erişiyorum.

(1) yeni bir komut penceresi açın, ardından yeni bir Jupyter not defteri açın. eski not defterine yeniden kaydetmeyi deneyin, bu sefer hata 'başarısız: yasak'

(2) Sonra eski not defterinde 'farklı indir'i tıklayın, yeni bir pencere açılarak size jetonu soracaktır.

görüntü açıklamasını buraya girin

(3) başka bir komut penceresi açın, ardından başka bir Jupyter not defteri açın, 'jupyter not defteri listesi' yazın, 'token =' öğesinden sonra ve önce :: gördüğünüz kutuya kodu kopyalayın. Bu zamandan tasarruf edebilirsiniz. Başarısız olursa, listedeki başka bir jetonu deneyebilirsiniz


Bu benim için yaptı, teşekkürler! Sadece son adımı açıklığa kavuşturmak istedim - ne demek istediğini anlamam bir dakikamı aldı. Komut jupyter notebook listarasında görünen karakterlerin uzun bir dizedir kısmı uzun bir URL, tükürmek olacak token=ve ::. Bu karakter dizisini kopyalayıp 2. adımdaki "parola veya belirteç" kutusuna yapıştırın ve orijinal jupyter not defterindeki "yasak" hatası ortadan kalkacaktır.
Jorge Aurelio Menendez

2

Bu sorunu çözmek için 1 geçici çözüm şudur:

  1. Kaydedemediğiniz dizüstü bilgisayarı şuraya giderek indirin: Dosya -> Farklı İndir -> Defter (ipynb).

  2. Jupyter tarayıcısının kullanıcı arayüzünde indirilen dosyaya tıklayarak indirilen not defterini açın

Şimdi, bu not defterini Jupyter kullanıcı arayüzünden kaydedebilmeniz (veya yeniden adlandırabilmeniz) gerekir.


Başka bir defter açmak benim için çözmedi, ancak bu çözdü (yani nb'yi indirdi)
Alex

2

Benim için işe yarayan tek çözüm şuydu:

  1. Chrome'da yeni bir sekme açtım
  2. Yapıştırdım: http: // localhost: 8888 /? Token = ......
  3. sonra orijinal defterime gittim ve onu kaydedebildim

1

Nvidia docker'daki bir imajı kullanarak aynı sorunu yaşadım (hem dizüstü bilgisayarları hem de .py modüllerini kaydetmek imkansız). Çözüm, hiçbir şey yazmadan jupyter içinde bir terminal açmak, ancak dosyalar kaydedildikten sonra çıkış yapmaktı. Aynı tarayıcı / jupyter örneğinde yapıldı.

Makine İşletim Sistemi: Ubuntu 18.04


1

Benim durumumda, bu sorun 'Çekirdek' (dizüstü bilgisayarların üstünde gösterilir) ve ardından 'Yeniden Bağlan' tıklanarak çözüldü.


0

Geliştirici ayarını açın ve konsolu tıklayın ve aşağıdakileri yazın

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

Ardından, Dizüstü Bilgisayarı kaydetmeyi deneyin. Daha önce kaydedilmeyen not defteri şimdi kaydedilecek.


0

Bu en kolay yol.

Yeni bir defter açmam gerekmedi. Bunun yerine ağacı yeniden açtım ve çekirdeği yeniden bağladım. Bir noktada çekirdeği de yeniden başlattım. - user650654 9 Eki 2019, 0:17


Aksi takdirde, her zaman "Topluluk wiki" yanıt seçeneği vardır
Vega


-1

Jupyter Lab kullanılırken en çok oylanan cevap işe yaramıyor gibi görünüyor. Ancak bu var. URL'yi yeni bir sekmeye kopyalayın, 'lab' yerine 'ağaç' yazın ve sayfayı yüklemek için enter tuşuna basın. Oturumunuz için yeni bir csrf belirteci oluşturacak ve gitmekte fayda var!

Gelecekte işinizi kaybetme endişesinden kaçınmak için varsayılan olarak Ayarlar> Belgeleri Otomatik Kaydetme'yi etkinleştirmenizi öneririm. Düzenli olarak kaydeder, bu nedenle herhangi bir zaman aşımı olmadan her şeyin güncel olması gerekir.

Yeni bir defter açmam gerekmedi. Bunun yerine ağacı yeniden açtım ve çekirdeği yeniden bağladım. Bir noktada çekirdeği de yeniden başlattım. - user650654 9 Eki 2019, 0:17

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.