Ipython: 无法打开或创建新的 Jupyter 笔记本

创建于 2015-11-17  ·  33评论  ·  资料来源: ipython/ipython

我最近在笔记本电脑上新安装了 Ubuntu 14.04,并通过 anaconda 安装了 IPython 4。 但是,我无法打开或加载任何笔记​​本,包括那些在我的桌面上可以正常打开的笔记本。 当我尝试加载笔记本时,出现以下错误: An unknown error occurred while loading this notebook. This version can load notebook formats v4 or earlier. See the server log for details.

终端给出:

Unhandled error in API request
Traceback (most recent call last):
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/traitlets/traitlets.py", line 432, in __get__
    value = obj._trait_values[self.name]
KeyError: 'db'

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/notebook/base/handlers.py", line 436, in wrapper
    result = yield gen.maybe_future(method(self, *args, **kwargs))
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/tornado/gen.py", line 870, in run
    value = future.result()
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/tornado/concurrent.py", line 215, in result
    raise_exc_info(self._exc_info)
  File "<string>", line 3, in raise_exc_info
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/tornado/gen.py", line 230, in wrapper
    yielded = next(result)
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/notebook/services/contents/handlers.py", line 126, in get
    path=path, type=type, format=format, content=content,
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/notebook/services/contents/filemanager.py", line 350, in get
    model = self._notebook_model(path, content=content)
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/notebook/services/contents/filemanager.py", line 310, in _notebook_model
    self.mark_trusted_cells(nb, path)
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/notebook/services/contents/manager.py", line 447, in mark_trusted_cells
    trusted = self.notary.check_signature(nb)
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/nbformat/sign.py", line 220, in check_signature
    if self.db is None:
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/traitlets/traitlets.py", line 439, in __get__
    value = self._validate(obj, dynamic_default())
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/nbformat/sign.py", line 126, in _db_default
    db = sqlite3.connect(self.db_file, **kwargs)
sqlite3.OperationalError: unable to open database file 

当我尝试创建一个新笔记本时,我收到另一个错误消息, Unexpected error while saving file: Dropbox/iPython Notebooks/Untitled.ipynb [Errno 13] Permission denied: '/home/ryan/.local/share/jupyter/notebook_secret'这似乎提供了更多信息,但我对 Linux/python/所有这些东西都比较陌生。

终端给出:

Error while saving file: Dropbox/iPython Notebooks/Untitled.ipynb [Errno 13] Permission denied:     '/home/ryan/.local/share/jupyter/notebook_secret'
Traceback (most recent call last):
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/traitlets/traitlets.py", line 432, in __get__
    value = obj._trait_values[self.name]
KeyError: 'secret'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/notebook/services/contents/filemanager.py", line 387, in save
    self.check_and_sign(nb, path)
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/notebook/services/contents/manager.py", line 431, in check_and_sign
    self.notary.sign(nb)
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/nbformat/sign.py", line 245, in sign
    signature = self.compute_signature(nb)
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/nbformat/sign.py", line 195, in compute_signature
    hmac = HMAC(self.secret, digestmod=self.digestmod)
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/traitlets/traitlets.py", line 439, in __get__
    value = self._validate(obj, dynamic_default())
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/nbformat/sign.py", line 173, in _secret_default
    self._write_secret_file(secret)
  File "/home/ryan/anaconda3/lib/python3.5/site-packages/nbformat/sign.py", line 179, in _write_secret_file
    with io.open(self.secret_file, 'wb') as f:
PermissionError: [Errno 13] Permission denied: '/home/ryan/.local/share/jupyter/notebook_secret'

有人建议我包含python -c "import IPython; print(IPython.sys_info())"的输出,所以这里是:

{'commit_hash': 'f534027',
 'commit_source': 'installation',
 'default_encoding': 'UTF-8',
 'ipython_path': '/home/ryan/anaconda3/lib/python3.5/site-packages/IPython',
 'ipython_version': '4.0.0',
 'os_name': 'posix',
 'platform': 'Linux-3.19.0-33-generic-x86_64-with-debian-jessie-sid',
 'sys_executable': '/home/ryan/anaconda3/bin/python',
 'sys_platform': 'linux',
 'sys_version': '3.5.0 |Anaconda 2.4.0 (64-bit)| (default, Oct 19 2015, '
                '21:57:25) \n'
                '[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]'}

如前所述,我不是计算问题的专家。 我希望我没有做蠢事。 我尝试卸载并重新安装 anaconda、不同版本的 python、重新启动计算机,我还尝试了在https://github.com/ipython/ipython/issues/2097和这里找到的解决方案https://github.com /ipython/ipython/issues/8294因为它们看起来很相似。

最有用的评论

我通过将 ~/.local/share/jupyter 目录的所有权从 root 更改为 user 解决了这个问题。 我不知道为什么会出现这个问题,因为它在我的其他系统上没有发生,所以也许这是一个错误,我将把它留在这里。

所有33条评论

我通过将 ~/.local/share/jupyter 目录的所有权从 root 更改为 user 解决了这个问题。 我不知道为什么会出现这个问题,因为它在我的其他系统上没有发生,所以也许这是一个错误,我将把它留在这里。

我刚刚进行了全新安装并遇到了同样的问题。

此修复程序仍然有效。

我在“jupyter notebook --ip 0.0.0.0”之前使用了“sudo”,它对我有用。

@metallikapo当我做同样的

是的,我们不建议使用sudo运行笔记本服务器。 这也会导致笔记本中的所有代码以 root 身份运行。 正如@rtdew1发现的那样,将相关文件/目录更改为您的用户拥有是更好的做法。 我不确定这种情况是如何产生的。

我在 mac 中使用了 sudo jupyter notebook,它也适用于我的系统。

@metallikapo非常感谢

我在 mac 中使用了 sudo jupyter notebook,它也适用于我的系统。

@metallikapo非常感谢

同样,我们不建议使用 sudo 运行,并且 notebook 5.0 默认拒绝以 root 身份启动,因此这不是解决方案。

你用的什么命令? jupyter notebook打开笔记本? 我对jupyter notebook也有同样的问题。 但是使用命令jupyter-notebook代替我解决了这个问题。

你如何更改 jupyter notebook 的所有权?

那么更好的解决方案是什么? @Carreau

更好的解决方案是修复权限,以便 Jupyter 可以在您的常规用户帐户中运行。 很难为此给出准确的说明,因为有不同的事情可能会出错并导致类似的错误。 但总的来说,你会想要做这样的事情:

  1. 查看您收到的“权限被拒绝”错误消息,并查看它所指的文件。 如果它在您的主目录下(Linux 上/home/username ,Mac 上/Users/username ),则这些说明适用。 如果它在其他地方,问题可能会有所不同。
  2. 打开终端,将cd转到包含该文件的文件夹。
  3. 运行ls -l以查看那里的所有文件。 如果文件在那里,您可能会看到它的所有者是root ,而不是您自己的用户名。 这是最常见的问题。 如果文件不存在,它可能无法创建它 - 上一级并在目录上尝试相同的操作。
  4. 运行sudo chown username:username filename将文件的所有者(和组)更改为您自己的用户。 如果您在目录上执行此操作,请使用-R标志也更改其中的所有文件。

您也可以从文件管理器执行此操作,但是有很多不同的管理器,因此我们不会给出说明。

(如果不清楚,请在这些说明中将username替换

我在 pynq FPGA 的 Linux 系统上运行,这完美地解决了我的问题,谢谢! @takluyver

嗨,托马斯,

我在 Jupyter notebook 中执行代码后,遇到了另一个
问题:IPython dir ~/.ipython 不是可写位置,使用临时文件
目录。

你知道出了什么问题吗?

最好的事物,

于丽
计算机科学与工程,
香港中文大学,
香港沙田

2017-11-20 21:01 GMT+08:00 Thomas Kluyver [email protected]

(如果不清楚,请将 username 替换为您自己的用户名
那些说明)


您收到此消息是因为您发表了评论。
直接回复本邮件,在GitHub上查看
https://github.com/ipython/ipython/issues/8997#issuecomment-345688870
或静音线程
https://github.com/notifications/unsubscribe-auth/AbRY_MLFebh-Y8ruW-vIi-e5ZJHy8H4aks5s4XgjgaJpZM4GkQxG
.

检查~/.ipython的权限,并尝试sudo chown username:username ~/ipython ,还要检查:

$ ls -al ~/
drwxr-xr-x    14 <username>  <usergroup>         476 Oct  9 05:30 .ipython

特别是第一列以drwx开头,如果不是,您可能需要sudo chmod o+w ~/.ipython 。 凡o+w手段将W仪式权限至O wner。

最好将该文件夹chown归您的用户所有。 使用chmod 777意味着任何用户都可以读取或写入它。 我们确实在那里存储了一些秘密信息,例如用于跟踪受信任笔记本的数据库。

这个命令对我有用:
cd ~ && sudo chown用户名:用户名.local/share/
记得用你自己的用户名替换用户名

@liwg06
这是正确的做法。 谢谢!

cd ~ && sudo chown用户名:用户名.local/share/

然而,
这对我来说还不够。 我不得不回到 .local。

在 Fedora 的情况下,您可能还想执行以下操作:
sudo chown -R user:user /run/user/1000/jupyter/

适合我的 Debian 解决方案:
在 /run/user/1000/jupyter/ 文件夹中:
chmod -R 0755用户:用户

  • 仅授予读取权限并不能解决我的权限错误。

我遇到了同样的问题,然后我发现当我运行 pip3 install jupyter 命令时,它会在当前目录中安装 jupyter,这是一个根级目录,如果我将该目录的所有者更改为普通用户,那将会很糟糕该目录用于 root ,我刚刚卸载了 jupyter 并将其重新安装在我的主目录中,一切对我来说都很完美

我是一个 win10 用户,尽管我已经是上述目录的所有者,但我还是收到了这个错误。

所以不确定这是否会为每个人解决问题。 我有同样的错误,没有一个解决方案对我有用。 我使用 juypter --path 检查存储 jupyter 的路径。
将有一个按配置、数据和运行时分类的路径列表。 我 cd 进入 config 下的路径,
看起来像这样
c:\users\dn.user\appdata\local\programs\python\python37\etc\jupyter
将目录更改为此处后
我再次运行 jupyter,没有错误。 希望这有助于某人

Windows 用户呢??

也许我应该更好地澄清。 我是 Windows 用户,我使用的是普通命令行

我的意思是我使用的是 AWS WorkSpace,但由于 AWS 工作区的内部结构,我遇到了一些奇怪的文件位置问题!! 后来才知道!! 但是您能否提供解决方案和相对路径来解决文件创建和保存文件的“权限被拒绝”问题!!

Mazior 的方法帮助我修复了它。 谢谢!

与(XuuLiu 在 2017 年 4 月 29 日评论)相同:使用 Ubuntu 18.04 LS,
使用命令 jupyter-notebook 代替我解决了这个问题。

以上都没有解决它,但我 chown 用户所有的 sub /.ipynb-checkpoints 并且成功了。

对于 Windows 用户:

您需要运行 Anaconda 提示以管理员身份

我的记忆是满满的。 我移动了一些东西,现在它工作正常。

  • 和我的问题类似,当我使用jupyter notebook命令启动服务器时,它可以运行。
ubuntu@ip-172-31-48-131:~/ssl$ jupyter notebook
[I 05:32:07.950 NotebookApp] Loading IPython parallel extension
[I 05:32:07.952 NotebookApp] Serving notebooks from local directory: /home/ubuntu/ssl
[I 05:32:07.952 NotebookApp] The Jupyter Notebook is running at:
[I 05:32:07.952 NotebookApp] https://(ip-172-31-48-131 or 127.0.0.1):8888/
[I 05:32:07.952 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
  • 但是我在 Chrome 浏览器中通过 localhost URL 访问服务器,然后出现错误。
ERROR:asyncio:Exception in callback BaseAsyncIOLoop._handle_events(4, 1)
handle: <Handle BaseAsyncIOLoop._handle_events(4, 1)>
Traceback (most recent call last):
  File "/usr/lib/python3.6/asyncio/events.py", line 145, in _run
    self._callback(*self._args)
  File "/usr/local/lib/python3.6/dist-packages/tornado/platform/asyncio.py", line 122, in _handle_events
    handler_func(fileobj, events)
  File "/usr/local/lib/python3.6/dist-packages/tornado/stack_context.py", line 300, in null_wrapper
    return fn(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/tornado/netutil.py", line 262, in accept_handler
    callback(connection, address)
  File "/usr/local/lib/python3.6/dist-packages/tornado/tcpserver.py", line 263, in _handle_connection
    do_handshake_on_connect=False)
  File "/usr/local/lib/python3.6/dist-packages/tornado/netutil.py", line 565, in ssl_wrap_socket
    context = ssl_options_to_context(ssl_options)
  File "/usr/local/lib/python3.6/dist-packages/tornado/netutil.py", line 540, in ssl_options_to_context
    context.load_cert_chain(ssl_options['certfile'], ssl_options.get('keyfile', None))
PermissionError: [Errno 13] Permission denied
  • 我的系统信息
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:        18.04
Codename:       bionic
  • 我的解决方案:使用sudo jupyter notebook --allow-root命令而不是jupyter notebook命令来启动服务器。(我不知道它为什么起作用,但它确实对我有用。)
# ubuntu@ip-172-31-48-131:~/ssl$ jupyter notebook
 ubuntu@ip-172-31-48-131:~/ssl$ sudo jupyter notebook --allow-root
此页面是否有帮助?
0 / 5 - 0 等级