Comment réparer ipykernel_launcher.py: erreur: unrecognized arguments en jupyter?
Je suis ce tensorflow tutoriel après deux jours de la configuration de l'environnement, j'ai enfin pu exécuter premade_estimator.py
en utilisant cmd
mais lorsque j'essaie d'exécuter le même code dans une jupyter portable, j'obtiens cette erreur:
usage: ipykernel_launcher.py [-h] [--batch_size BATCH_SIZE] [--train_steps TRAIN_STEPS] ipykernel_launcher.py: error: unrecognized arguments: -f C:\Users\david\AppData\Roaming\jupyter\runtime\kernel-4faecb24-6e87-40b4-bf15-5d24520d7130.json
Une exception s'est produite, utilisez %ct pour voir le traceback.
SystemExit: 2 C:\Anaconda3\envs\python3x\lib\site-packages\IPython\core\interactiveshell.py:2918: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D. warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
J'ai essayé de le fixer sans succès à l'aide de:
pip install --ignore-installed --upgrade jupyter
pip install ipykernel
python -m ipykernel install
conda install notebook ipykernel
ipython kernelspec install-self
Toute idée sera d'apprécier! Merci!
Vous devez vous connecter pour publier un commentaire.
Je l'ai eu! la raison pour laquelle nous obtenons l'erreur est parce que ce code est à l'aide de
argparse
et ce module est utilisé pour écrire convivial interfaces de ligne de commande, de sorte qu'il semble, il a un conflit avec Jupyter Portable.J'ai trouvé la solution dans ce page:
Ce que nous avons à faire est de:
Supprimer ou commenter ces lignes:
et remplacer
args
pour un dictionnaire à l'aide de la bibliothèque
easydict
de cette façon:Avec
easydict
nous pouvons accéder dict valeurs des attributs pour les arguments.Mise à jour
Après tout, cette année, la plongée profonde en python, j'ai trouvé la solution de cette question est que la façon la plus simple (On n'a pas besoin d'utiliser une bibliothèque externe ou une méthode).
argparse
est juste l'une des nombreuses façons de passer des arguments à un script en python à partir du terminal. Quand j'ai essayé de le faire dans un jupyter notebook évidemment, cela n'allait pas marcher. Il nous suffit de remplacer dans la fonction directement les paramètres comme:Maintenant, si nous avons une longue liste de paramètres pour la fonction, on peut utiliser
*args
ou**kargs
.*args
passer un tuple comme paramètres dans la fonction, dans ce cas, en particulier, il sera:**kargs
passer un dictionnaire comme arguments de la fonction:simplement google et vous trouverez une très bonne explication sur la façon de les utiliser, ici, on la documentation que j'ai utilisé pour cette étude.
parser.parse_args(args=[])
, parce queparse_args()
va passer_sys.argv[1:]
commeargs
's de paramètre par défaut, remplacer par la liste vide[]
résoudre ce problème.Une solution plus élégante serait:
au lieu de
Je viens de tomber sur ce problème aujourd'hui et a trouvé un moyen rapide, stupide solution consiste à insérer un argument processeur pour la
-f
argument que qtconsole/ipython passe bien et nous ne nous attendions pas. À la fin de l'parser.add_argument
je l'ai mis dans:Je n'utilise pas le
-f
paramètre, donc il n'y a pas de perte pour moi.Je préfère ne pas re-concevoir un plus grand argument de traitement de cadre tout simplement parce que de ipython régulièrement dans le flux de travail sur un ordinateur particulier...
Avez-vous essayé :
All requested packages already installed.
argparse
pour voir si il y a le problème.