web-dev-qa-db-fra.com

La console IPython dans Spyder extrêmement lente dans Anaconda

J'essaie Anaconda/Spyder après avoir utilisé l'installation standard IDLE/Python pendant plusieurs années. La console (et l'explorateur de variables) deviennent de plus en plus lents au cours de chaque session de travail, avec chaque script et chaque commande interactive que j'exécute. Finalement, il faut quelques minutes pour obtenir une réponse à des commandes simples telles que print, puis il ne répond plus complètement et je le ferme. C'est assez perturbant pour mon travail. 

Mac OSX 10.13.6

conda version : 4.5.11
conda-build version : 3.15.1
python version : 3.7.0.final.0

qt 5.9.6
spyder 3.3.1 
ipython 7.1.1

J'utilise fréquemment matplotlib. Chaque fois que possible, j'utilise plt.ioff () au début d'un script et/ou plt.close ('all') à la fin. Désactiver complètement la prise en charge de matplotlib dans les préférences n’aide en rien et ce n’est pas une solution permanente. Python n'utilise nulle part près de tout mon processeur ou de ma RAM.

3
andbeonetraveler

Ce n’est donc pas une solution tout à fait satisfaisante, mais cela semble être une solution temporaire raisonnable. Si vous rétrogradez votre version de spyder à la version 3.1.X, vous pourrez utiliser la console python plutôt que la console Ipython, et cela semble fonctionner pour moi. Pour cela, lancez simplement: 

conda install spyder=3.1

dans le terminal pendant que votre environnement de choix est actif. Ce n'est pas idéal, car les développeurs ont supprimé la console python pour une raison spécifique, comme indiqué dans cette question, Comment ajouter une console python dans spyder . En outre, la rétrogradation de cette quantité peut avoir des effets imprévus sur les autres packages utilisés par votre code et peut entraîner d'autres problèmes, mais jusqu'à présent, c'est la seule solution que j'ai pu trouver. 

2
JJR4

Autant que je sache, le problème semble être lié à la dernière version majeure du noyau ipython. Épingler la version d'ipykernel à la version 4.10.0 l'a résolu pour moi. Pour ce faire, ajoutez une ligne contenant ipykernel 4.* dans le fichier ~/anaconda3/conda-meta/pinned. Créez le fichier s'il n'existe pas encore. Puis conda update ipykernel qui sera rétrogradé à 4.10.0. Travaillé pour moi!

4
Sjoerd

La réponse de @ JJR4 n'a pas fonctionné pour moi (semble fonctionner pour les autres). Une autre solution consiste à taper la commande %connect_info magic dans la console IPython Spyder, qui affichera les informations JSON pour connecter une autre console au noyau.

La sortie de la commande magique explique comment se connecter, mais trois options sont disponibles.

Collez le JSON ci-dessus dans un fichier et connectez-vous avec:

$> jupyter <app> --existing <file>

ou, si vous êtes local, vous pouvez vous connecter avec juste:

$> jupyter <app> --existing <kernel>.json

ou même simplement:

$> jupyter <app> --existing

s’il s’agit du noyau Jupyter le plus récent que vous avez démarré.

J'utilise généralement qtconsole comme application. Une fois que vous avez entré la méthode de connexion choisie dans la ligne de commande, une nouvelle console s'ouvrira et sera connectée au même noyau que la console de Spyder. Pour une raison quelconque, la nouvelle console ne traîne pas même si la console Spyder le fait.

Entrez tout dans la nouvelle console, même runfile()

J'espère que cela t'aides!

UPDATE: La mise à niveau vers ipykernel version 4.10 semble résoudre le problème pour moi. Merci à Carlos Cordoba - Voir la conversation sur GitHub dans le lien ci-dessous.

0
Charlie Roe