Ipython Notebook仅以root身份运行

时间:2015-10-28 20:27:49

标签: ipython root ipython-notebook jupyter

我试图在iPython中导入笔记本(更新后的Jupyter)。但由于某种原因,我只能以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

操作系统:在3.13.0-37-generic Kernel上运行的Linux Mint x64

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

2 个答案:

答案 0 :(得分:3)

好的,让我猜一下。

当您第一次运行ipython notebook时,它位于root之下。因此,Jupyter使用的一些文件从一开始就是以root用户身份创建的。现在毫不奇怪,无论何时以非root用户身份运行Jupyter,他都无法写入导致您看到错误的文件。

在日志中看到的特殊情况中,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

以root身份。

答案 1 :(得分: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