2015-10-28 159 views
5

我试图在iPython中导入笔记本(更新后的Jupyter)。但由于某种原因,只有以root用户身份运行,我才能导入任何笔记本电脑。否则,所有笔记本电脑都会出现以下错误。Ipython Notebook仅以root身份运行

加载此笔记本时发生未知错误。此版本 可以加载笔记本格式v4或更早版本。有关详细信息,请参阅服务器日志中的 。

iPython3笔记本虽然能够加载笔记本电脑。 我能做些什么来解决这个问题吗?

[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的详细 服务器信息:

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:在3.13.0-37泛型内核上运行Linux Mint的64

答:公司 KT解决方案工程。我认为我第一次以root身份运行Jupyter,导致KT提到非root用户无法访问这些文件。

+2

第一个明显的问题是:服务器日志说什么? –

+0

哪个Python,Jupyter,OS,...? 如何重现此? – user1836587

+0

@KT。添加了服务器日志 – ritz

回答

3

好的,让我猜这里。

当你跑ipython notebook第一次它是在root。因此,Jupyter使用的一些文件是从一开始就以root身份创建的。现在,当您将Jupyter作为非root用户运行时,他不会写入导致您看到的错误的那些文件。

在日志中看到的特定情况下,Jupyter在写入nbsignatures.db SQLite数据库时遇到问题。该文件应位于Jupyter的DATA_DIR中,通常类似~/.local/share/jupyter

如果你没有这个目录有,你可以找到它运行ipython和这样做,例如:

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

你现在需要做的是确保一切都在该目录由正确的用户拥有,而不是由root用户拥有。这可能意味着做类似

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

作为根。

+0

谢谢,虽然我不记得第一次以root身份启动它,但〜/ .local/share/jupyter中的配置文件确实是root拥有的,可能是在安装过程中生成的。 – agold

0

我刚刚有一个类似的问题。 附加在下面是我的错误消息。

[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" 
    } 

我解决它通过删除文件:nbsignatures.db

由于Jupyter的OSX上的位置是依赖于系统的,使用第一查找文件:

jupyter --data-dir 

然后,取出nbsignatures.db在它。

参考:DatabaseError: database disk image is malformed #9293

相关问题