Ipython: Impossible d'ouvrir ou de créer de nouveaux blocs-notes Jupyter

Créé le 17 nov. 2015  ·  33Commentaires  ·  Source: ipython/ipython

J'ai récemment installé Ubuntu 14.04 sur mon ordinateur portable et installé IPython 4 via anaconda. Cependant, je ne peux ouvrir ou charger aucun bloc-notes, y compris ceux qui s'ouvrent correctement sur mon bureau. Lorsque j'essaie de charger un bloc-notes, j'obtiens l'erreur suivante : An unknown error occurred while loading this notebook. This version can load notebook formats v4 or earlier. See the server log for details.

Le terminal donne :

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 

Lorsque j'essaie de créer un nouveau bloc-notes, j'obtiens une autre erreur qui dit, Unexpected error while saving file: Dropbox/iPython Notebooks/Untitled.ipynb [Errno 13] Permission denied: '/home/ryan/.local/share/jupyter/notebook_secret' Cela semble plus informatif, mais je suis relativement nouveau sur Linux/python/tout ça.

Le terminal donne :

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'

Il a été suggéré que j'inclue la sortie de python -c "import IPython; print(IPython.sys_info())" , alors voici :

{'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)]'}

Comme mentionné, je ne suis pas un expert en informatique. J'espère que je ne fais pas quelque chose de stupide. J'ai essayé de désinstaller et de réinstaller anaconda, différentes versions de python, de redémarrer l'ordinateur, et j'ai également essayé les solutions trouvées ici https://github.com/ipython/ipython/issues/2097 et ici https://github.com /ipython/ipython/issues/8294 car ils semblent similaires.

Commentaire le plus utile

J'ai résolu ce problème en changeant la propriété du répertoire ~/.local/share/jupyter de root à user. Je ne sais pas pourquoi ce problème s'est produit, car il ne s'est pas produit sur mes autres systèmes, alors c'est peut-être un bogue et je vais laisser cela ici.

Tous les 33 commentaires

J'ai résolu ce problème en changeant la propriété du répertoire ~/.local/share/jupyter de root à user. Je ne sais pas pourquoi ce problème s'est produit, car il ne s'est pas produit sur mes autres systèmes, alors c'est peut-être un bogue et je vais laisser cela ici.

Je viens de faire une nouvelle installation et j'ai rencontré le même problème.

Ce correctif fonctionne toujours.

J'ai utilisé "sudo" avant "jupyter notebook --ip 0.0.0.0", et cela a fonctionné pour moi.

@metallikapo quand je fais la même chose, et si j'ouvre un terminal, je suis connecté en tant que root. Pas bon.

Oui, nous ne recommandons pas d'exécuter le serveur notebook avec sudo . Cela entraînera également l'exécution de tout le code de vos blocs-notes en tant que root. Changer le fichier/répertoire approprié qui appartiendra à votre utilisateur, comme @rtdew1 l'a trouvé, est une meilleure chose à faire. Je ne sais pas comment cette situation se présente.

J'ai utilisé sudo jupyter notebook sous mac, cela a également fonctionné pour mon système.

@metallikapo merci beaucoup

J'ai utilisé sudo jupyter notebook sous mac, cela a également fonctionné pour mon système.

@metallikapo merci beaucoup

Encore une fois, nous ne recommandons pas l'exécution avec sudo, et le notebook 5.0 refusera de démarrer en tant que root par défaut, ce n'est donc pas une solution.

Quelle commande as-tu utilisé ? bloc-notes jupyter pour ouvrir le bloc-notes ? J'ai également le même problème avec jupyter notebook . Mais l'utilisation de la commande jupyter-notebook résout le problème pour moi.

comment changer la propriété de jupyter notebook cependant?

Alors quelle est la meilleure solution ? @Carreau

La meilleure solution consiste à corriger les autorisations afin que Jupyter puisse s'exécuter dans votre compte d'utilisateur habituel. Il est difficile de donner des instructions précises pour cela, car différentes choses peuvent mal tourner et provoquer des erreurs similaires. Mais en général, vous voudrez faire quelque chose comme ceci :

  1. Regardez le message d'erreur « Autorisation refusée » que vous obtenez et voyez à quel fichier il fait référence. S'il se trouve dans votre répertoire personnel ( /home/username sur Linux ou /Users/username sur Mac), ces instructions s'appliquent. Si c'est ailleurs, le problème peut être différent.
  2. Ouvrez un terminal et cd dans le dossier contenant ce fichier.
  3. Exécutez ls -l pour voir tous les fichiers qui s'y trouvent. Si le fichier est là, vous verrez probablement que son propriétaire est root , au lieu de votre propre nom d'utilisateur. C'est le problème le plus courant. Si le fichier n'est pas là, il ne peut probablement pas le créer - montez d'un niveau et essayez la même chose sur le répertoire.
  4. Exécutez sudo chown username:username filename pour remplacer le propriétaire (et le groupe) du fichier par votre propre utilisateur. Si vous faites cela sur un répertoire, utilisez le drapeau -R pour modifier également tous les fichiers qu'il contient.

Vous pouvez aussi probablement le faire à partir d'un gestionnaire de fichiers, mais il en existe de nombreux différents, nous ne donnerons donc pas d'instructions.

(Au cas où ce ne serait pas clair, remplacez username par votre propre nom d'utilisateur dans ces instructions)

Je fonctionne sur le système Linux de pynq FPGA et cela résout parfaitement mon problème, merci ! @takluyver

Salut Thomas,

Après avoir exécuté le code dans le bloc-notes Jupyter, j'ai rencontré un autre
problème : IPython dir ~/.ipython n'est pas un emplacement accessible en écriture, en utilisant un temp
annuaire.

Savez-vous ce qui ne va pas ?

Meilleur,

Yu Li
Informatique et Génie,
L'Université chinoise de Hong Kong,
Shatin, Hong Kong

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

(Au cas où ce ne serait pas clair, remplacez le nom d'utilisateur par votre propre nom d'utilisateur dans
ces instructions)

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/ipython/ipython/issues/8997#issuecomment-345688870 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/AbRY_MLFebh-Y8ruW-vIi-e5ZJHy8H4aks5s4XgjgaJpZM4GkQxG
.

Vérifiez les autorisations de ~/.ipython , et essayez sudo chown username:username ~/ipython , vérifiez également que :

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

en particulier que la première colonne commence par drwx si ce n'est pas le cas, vous aurez probablement besoin de sudo chmod o+w ~/.ipython . Où o+w prévoiront la permission de rite W à O ropriétaire.

Il vaut mieux que chown ce dossier appartienne à votre utilisateur. L'utilisation de chmod 777 signifie que tout utilisateur peut le lire ou l'écrire. Nous y stockons des informations secrètes, comme la base de données utilisée pour suivre les blocs-notes de confiance.

cette commande fonctionne pour moi:
cd ~ && sudo chown username:username .local/share/
n'oubliez pas de remplacer le nom d'utilisateur par votre propre nom d'utilisateur

@liwg06
C'était la bonne approche. Merci!

cd ~ && sudo chown username:username .local/share/

CEPENDANT,
cela ne me suffisait pas. J'ai dû refaire jusqu'à .local.

Dans le cas de Fedora, vous pouvez également :
sudo chown -R user:user /run/user/1000/jupyter/

Solution Debian qui me convenait :
Dans le dossier /run/user/1000/jupyter/ :
chmod -R 0755 utilisateur:utilisateur

  • Le simple fait de donner des autorisations de lecture n'a pas corrigé mon erreur d'autorisation.

J'ai rencontré le même problème et j'ai compris que lorsque j'ai exécuté la commande pip3 install jupyter, il installe jupyter dans le répertoire actuel qui était un répertoire de niveau racine, cela aurait été mauvais si je changeais le propriétaire de ce répertoire en utilisateur normal comme ce répertoire était pour root, je viens de désinstaller jupyter et de le réinstaller dans mon répertoire personnel et tout a parfaitement fonctionné pour moi

Je suis un utilisateur de win10 et j'ai eu cette erreur malgré le fait que je sois déjà le propriétaire dudit répertoire.

donc je ne sais pas si cela résoudra le problème pour tout le monde. J'ai eu cette même erreur et aucune des solutions n'a fonctionné pour moi. Je vérifie le chemin où jupyter a été stocké à l'aide de juypter --path.
il y aura une liste de chemins classés par configuration, données et exécution. Je cd dans un chemin sous config,
ressemblait à ça
c:\users\dn.user\appdata\local\programs\python\python37\etc\jupyter
après avoir changé de répertoire ici
Je lance à nouveau jupyter et aucune erreur. j'espère que cela aide quelqu'un

Qu'en est-il de l'utilisateur Windows ??

J'aurais peut-être dû mieux préciser. Je suis un utilisateur Windows et j'ai utilisé ma ligne de commande normale

Je veux dire que j'utilisais AWS WorkSpace et je suis confronté à des problèmes d'emplacement de fichiers étranges en raison de la structure interne de l'espace de travail AWS !! J'ai compris plus tard !! Mais pourriez-vous donner une solution et un chemin relatif pour résoudre le problème « autorisation refusée » pour la création et l'enregistrement du fichier !!

La méthode de Mazior m'a aidé à le réparer. Merci!

Identique à (XuuLiu a commenté le 29 avril 2017) : avec Ubuntu 18.04 LS,
à la place, l'utilisation de la commande jupyter-notebook résout le problème pour moi.

Aucun de ce qui précède ne l'a résolu, mais j'ai chown user tous les sous-points de contrôle /.ipynb et cela a fait l'affaire.

Pour les utilisateurs Windows :

Vous devez exécuter l'invite Anaconda Exécuter en tant qu'administrateur pour vous permettre de créer et de modifier.

Ma mémoire était pleine. J'ai déplacé certains trucs et ça marche bien maintenant.

  • Le problème est similaire au mien. Lorsque j'utilise la commande
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).
  • Mais j'accède au serveur via une URL localhost dans le navigateur Chrome, puis l'erreur se produit.
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
  • Mes informations système
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:        18.04
Codename:       bionic
  • Ma solution : utiliser la commande sudo jupyter notebook --allow-root au lieu de la commande jupyter notebook pour démarrer le serveur. (Je ne sais pas pourquoi cela fonctionne, mais cela a vraiment fonctionné pour moi.)
# ubuntu@ip-172-31-48-131:~/ssl$ jupyter notebook
 ubuntu@ip-172-31-48-131:~/ssl$ sudo jupyter notebook --allow-root
Cette page vous a été utile?
0 / 5 - 0 notes