2015-10-28 16 views
5

Stavo cercando di importare un blocco appunti in iPython (Jupyter dopo l'aggiornamento). Ma per qualche ragione, sono in grado di importare qualsiasi notebook solo se eseguo come utente root. Altrimenti, ottengo il seguente errore per tutti i notebook.Notebook Ipython Funzionante solo come root

Si è verificato un errore sconosciuto durante il caricamento del notebook. Questa versione può caricare i formati notebook v4 o precedenti. Vedere il registro del server per i dettagli di .

Tuttavia, il notebook iPython3 è in grado di caricare i notebook. C'è qualcosa che posso fare per risolvere questo problema?

[W 23:04:29.100 NotebookApp] 404 GET /static/components/MathJax/config/Safe.js?rev=2.5.3 (127.0.0.1) 40.67ms referer=http://localhost:8889/notebooks/Challenges/German%20Credit%20Dataset%20Classification%20-%20Challenge%201/GermanCreditCardClassification.ipynb 
[E 23:04:29.377 NotebookApp] Unhandled error in API request 
    Traceback (most recent call last): 
     File "/usr/local/lib/python2.7/dist-packages/notebook/base/handlers.py", line 436, in wrapper 
     result = yield gen.maybe_future(method(self, *args, **kwargs)) 
     File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 870, in run 
     value = future.result() 
     File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 215, in result 
     raise_exc_info(self._exc_info) 
     File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 230, in wrapper 
     yielded = next(result) 
     File "/usr/local/lib/python2.7/dist-packages/notebook/services/contents/handlers.py", line 129, in get 
     path=path, type=type, format=format, content=content, 
     File "/usr/local/lib/python2.7/dist-packages/notebook/services/contents/filemanager.py", line 348, in get 
     model = self._notebook_model(path, content=content) 
     File "/usr/local/lib/python2.7/dist-packages/notebook/services/contents/filemanager.py", line 308, in _notebook_model 
     self.mark_trusted_cells(nb, path) 
     File "/usr/local/lib/python2.7/dist-packages/notebook/services/contents/manager.py", line 447, in mark_trusted_cells 
     trusted = self.notary.check_signature(nb) 
     File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 220, in check_signature 
     if self.db is None: 
     File "/usr/local/lib/python2.7/dist-packages/traitlets/traitlets.py", line 439, in __get__ 
     value = self._validate(obj, dynamic_default()) 
     File "/usr/local/lib/python2.7/dist-packages/nbformat/sign.py", line 126, in _db_default 
     db = sqlite3.connect(self.db_file, **kwargs) 
    OperationalError: unable to open database file 
[E 23:04:29.389 NotebookApp] { 
     "Accept-Language": "en-US,en;q=0.8", 
     "Accept-Encoding": "gzip, deflate, sdch", 
     "Connection": "keep-alive", 
     "Accept": "application/json, text/javascript, */*; q=0.01", 
     "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.73 Safari/537.36", 
     "Dnt": "1", 
     "Host": "localhost:8889", 
     "X-Requested-With": "XMLHttpRequest", 
     "Referer": "http://localhost:8889/notebooks/Challenges/German%20Credit%20Dataset%20Classification%20-%20Challenge%201/GermanCreditCardClassification.ipynb" 
    } 
[E 23:04:29.390 NotebookApp] 500 GET /api/contents/Challenges/German%20Credit%20Dataset%20Classification%20-%20Challenge%201/GermanCreditCardClassification.ipynb?type=notebook&_=1449266668869 (127.0.0.1) 134.27ms referer=http://localhost:8889/notebooks/Challenges/German%20Credit%20Dataset%20Classification%20-%20Challenge%201/GermanCreditCardClassification.ipynb 

ipython Dettagli Server Information:

You are using Jupyter notebook. 

The version of the notebook server is 4.0.2 and is running on: 
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] 

Current Kernel Information: 

unable to contact kernel 

OS: x64 Linux Mint in esecuzione su Kernel 3.13.0-37-generic

. Risposta: di KT opere di soluzioni . Penso di aver eseguito Jupyter come root la prima volta che ha causato l'inaccessibilità dei file agli utenti non root come menzionato da KT.

+2

La prima domanda ovvia è: cosa dice il registro del server? –

+0

Quali Python, Jupyter, OS, ...? Come posso riprodurre questo? – user1836587

+0

@ KT. Aggiunto il registro del server – ritz

risposta

3

OK, lasciami indovinare qui.

Quando si è eseguito ipython notebook per la prima volta era inferiore a root. Di conseguenza, alcuni dei file utilizzati da Jupyter sono stati creati come root dall'inizio. Non è una sorpresa ora che quando esegui Jupyter come utente non root, non riesce a scrivere su quei file che risultano negli errori che vedi.

Nella particolare situazione che si vede nel registro, Jupyter ha problemi a scrivere nel database SQLite nbsignatures.db. Questo file deve trovarsi in Jdi Jupyter, che è normalmente qualcosa come ~/.local/share/jupyter.

Se non si dispone di questa directory, è possibile scoprirlo eseguendo ipython e facendo questo, ad esempio:

In [1]: from jupyter_core.application import JupyterApp 
In [2]: JupyterApp().data_dir 
Out[2]: u'/home/ubuntu/.local/share/jupyter' 

Quello che dovete fare ora è quello di assicurarsi che tutto in quella directory è di proprietà dell'utente corretto, non di root. Ciò potrebbe significare fare qualcosa come

# chown -R <yourusername>.<yourusername> ~/.local/share/jupyter 

come utente root.

+0

Grazie, anche se non ricordo di averlo avviato la prima volta come root, i file di configurazione in ~ ~/.local/share/jupyter' erano effettivamente di proprietà della root, magari generati durante l'installazione. – agold

0

Ho appena avuto un problema simile. In allegato sono il mio messaggio di errore.

[E 19:32:53.893 NotebookApp] Unhandled error in API request 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/site-packages/notebook/base/handlers.py", line 436, in wrapper 
    result = yield gen.maybe_future(method(self, *args, **kwargs)) 
    File "/usr/local/lib/python2.7/site-packages/tornado/gen.py", line 870, in run 
    value = future.result() 
    File "/usr/local/lib/python2.7/site-packages/tornado/concurrent.py", line 215, in result 
    raise_exc_info(self._exc_info) 
    File "/usr/local/lib/python2.7/site-packages/tornado/gen.py", line 230, in wrapper 
    yielded = next(result) 
    File "/usr/local/lib/python2.7/site-packages/notebook/services/contents/handlers.py", line 126, in get 
    path=path, type=type, format=format, content=content, 
    File "/usr/local/lib/python2.7/site-packages/notebook/services/contents/filemanager.py", line 350, in get 
    model = self._notebook_model(path, content=content) 
    File "/usr/local/lib/python2.7/site-packages/notebook/services/contents/filemanager.py", line 310, in _notebook_model 
    self.mark_trusted_cells(nb, path) 
    File "/usr/local/lib/python2.7/site-packages/notebook/services/contents/manager.py", line 447, in mark_trusted_cells 
    trusted = self.notary.check_signature(nb) 
    File "/usr/local/lib/python2.7/site-packages/nbformat/sign.py", line 220, in check_signature 
    if self.db is None: 
    File "/usr/local/lib/python2.7/site-packages/traitlets/traitlets.py", line 439, in __get__ 
    value = self._validate(obj, dynamic_default()) 
    File "/usr/local/lib/python2.7/site-packages/nbformat/sign.py", line 127, in _db_default 
    self.init_db(db) 
    File "/usr/local/lib/python2.7/site-packages/nbformat/sign.py", line 139, in init_db 
    )""") 
DatabaseError: database disk image is malformed 

[E 19:32:53.895 NotebookApp] { 
     "Accept-Language": "en,zh-CN;q=0.8,zh;q=0.6,zh-TW;q=0.4,fr;q=0.2,es;q=0.2", 
     "Accept-Encoding": "gzip, deflate, sdch", 
     "Connection": "keep-alive", 
     "Accept": "application/json, text/javascript, */*; q=0.01", 
     "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36", 
     "Host": "localhost:8888", 
     "Referer": "http://localhost:8888/notebooks/trajectory_analysis.ipynb", 
     "X-Requested-With": "XMLHttpRequest" 
    } 

ho risolto eliminando un file: nbsignatures.db.

Perché la posizione di Jupyter su OSX è dipendente dal sistema, in primo luogo individuare il file utilizzando:

jupyter --data-dir 

Poi, rimuovere il nbsignatures.db in esso.

Riferimento: DatabaseError: database disk image is malformed #9293.