我试图在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用户无法访问这些文件。
答案 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 。