web-dev-qa-db-fra.com

ipython lit une mauvaise version de python

J'ai eu des problèmes avec Python, iPython et les bibliothèques. Les points suivants montrent la chaîne de la problématique. J'exécute Python 2.7 sur Mac Lion. 

  1. iPython ne lit pas les bibliothèques de scipy, matplotlib, mais lit numpy. 
  2. Pour résoudre ce problème, j'ai essayé d'installer la version du code source de Python. Cela ne m'a posé que plus de problèmes, car j'ai maintenant deux versions différentes: 2.7.1 et 2.7.2.
  3. J'ai remarqué que l'exécution de Python utilise la version 2.7.2 et importe scipy, matplotlib et numpy, mais sur iPython, la version 2.7.1 n'ouvre pas scipy ou matplotlib. 

J'ai essayé plusieurs choses que j'ai rencontrées sur d'autres blogs. Mais aucun d'entre eux n'a aidé, et malheureusement, je ne sais pas trop ce que je fais avec certains d'entre eux. Par exemple: J'ai essayé de désinstaller et de réinstaller ipython avec easy_install et pip. J'ai également essayé de tout réinstaller via homebrew et de modifier le chemin .bash_profile.

92
Diego

Ok solution rapide: 

which python

vous donne /usr/bin/python, non? Faire

which ipython

et je parie que ce sera /usr/local/bin/ipython. Regardons à l'intérieur:

Edit 9/7/16 - Le fichier ressemble maintenant à ceci:

cat /usr/local/bin/ipython

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from IPython import start_ipython

if __== '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(start_ipython())

Et le mien fonctionne correctement ainsi, mais ma situation n'est pas exactement la même que celle du PO.


Réponse originale - 30/09/13:

cat /usr/local/bin/ipython

#!/usr/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.12.1','console_scripts','ipython'
__requires__ = 'ipython==0.12.1'
import sys
from pkg_resources import load_entry_point

if __== '__main__':
    sys.exit(
        load_entry_point('ipython==0.12.1', 'console_scripts', 'ipython')()
    )

Aha - ouvrez /usr/local/bin/ipython dans votre éditeur (avec privilèges) et modifiez la première ligne en 

#!/usr/local/bin/python

enregistrer, démarrez iPython, devrait indiquer qu’il utilise la version que vous souhaitez maintenant. 

136
Manuel Ebert

Qu'en est-il de l'utilisation d'un serveur virtuel? J'aime vraiment beaucoup. Peut-être que ce n'est pas le moyen le plus rapide, mais je pense que c'est très clair.

Lorsque vous créez virtualenv, vous pouvez spécifier le chemin d'accès Python avec l'indicateur -p.

pour python 2.7

$ virtualenv -p /usr/bin/python2.7 venv2.7
$ source venv2.7/bin/activate
(venv2.7)$ pip install ipython
(venv2.7)$ ipython

pour python 3.4

$ virtualenv -p /usr/bin/python3.4 venv3.4
$ source venv3.4/bin/activate
(venv3.4)$ pip install ipython
(venv3.4)$ ipython
9
pvieytes

Premièrement, je m'assurerais que vous utilisez le bon python. A l'invite de commande, tapez:

which python
python -V

Le premier vous indiquera le chemin, le second vous indiquera la version Python que vous utilisez.

6
macduff

Ma solution est simple, stupide mais fonctionne.

J'utilise python -V pour m'assurer de la version

$ python -V
Python 2.7.10

puis faire un alias dans .bash_profile

$ vi ~/.bash_profile

Ajouter une ligne

alias ipython="python -m IPython"

alors vous obtiendrez une ipython en python 2.7. ????

(Au fait, ma ipython est installée via homebrew, un ipython sera exécuté par défaut en python 3.)

$ brew install ipython
2
Johnny

extrêmement pertinent: http://conda.pydata.org/docs/troubleshooting.html#Shell-command-location .

des problèmes se posent en raison du 'hachage' et des variables de chemin d'accès de Shell. 

1
orsonady

Une méthode similaire utilisant pyenv

pyenv install 3.4.5
pyenv local 3.4.5
pip install ipython
ipython

Maintenant, il affichera la version correcte de python

Python 3.4.5
1
Avikd

Poster le commentaire de @ Matt comme réponse juste pour qu'il soit plus visible

python -m IPython

Charge ipython en tant que module avec le python accessible en premier sur le chemin. Dans mon cas, j'en avais un pré-installé et un autre que j'ai ajouté de breuvage. Cela fonctionne parfaitement.

1
sh87

La solution la plus simple à laquelle je pouvais penser, qui ne nécessite aucune manipulation d’environnements, de fichiers installés ou autre, repose sur les faits

  1. L'exécutable ipython est en réalité un script Python.
  2. Le package IPython est installé séparément pour chaque interpréteur avec lequel vous avez exécuté pip intall.

Si la version de Python que vous utilisez a un paquet IPython installé, vous pouvez simplement faire

/path/to/desired/python $(which ipython)

Cela exécutera le script ipython avec l'interpréteur souhaité au lieu de celui répertorié dans Shebang.

1
Mad Physicist

Je suis tombé sur le même problème, mais voici la seule solution qui a fonctionné pour moi sur OSX 12, Sierra.

ipython se lançait toujours pour python 3.6 mais j'en avais besoin pour 2.7. Je n'ai pas pu trouver de script de démarrage ipython pour la version 2.7, ni le module IPython à exécuter avec python -m. Aucun de brew instally ipythonpip install ipython ou pip2 install ipython n'a pu me procurer la version 2.7. Alors je l'ai eu manuellement.

brew install ipython@5 installe la version 2.7 à partir de ici mais ne la mettra pas sur votre $PATH car il sait que le nom est en conflit avec un autre paquet .ln -s /usr/local/Cellar/ipython@5/5.5.0_1/bin/ipython /usr/local/bin/ipython2 corrigera ceci et laissez-vous simplement lancer ipython2 depuis votre invite de shell

En ce qui me concerne, étant donné que je voulais vraiment utiliser ipython pour la version 2.7, j’ai également exécuté les commandes suivantes.

ln -s /usr/local/Cellar/ipython/6.2.1/bin/ipython /usr/local/bin/ipython3
rm -f /usr/local/bin/ipython
ln -s /usr/local/bin/ipython2 /usr/local/bin/ipython
0
Jeremy Paige

Toutes les réponses mentionnées ici n’aident pas à résoudre le problème si vous utilisez anaconda ou un autre wrapper d’environnement virtuel.

Cette réponse est basée sur l'hypothèse que vous utilisez l'anaconda.

Supposons que vous vous trouvez dans un environnement Python 3 et que lors de la création d'un bloc-notes sur un bloc-notes jupyter, il affiche "Python 2" au lieu de "Python 3".

En effet, "ipython" est essentiellement un script exécuté. Dans ce script, il indique la version python utilisée pour exécuter la commande. Tout ce que vous avez à faire est de changer cette ligne pour que ipython utilise la version de python souhaitée.

Commencez par arrêter le serveur ipython et obtenez l'emplacement de l'exécutable python de l'environnement actuel à l'aide de la commande "which python"

Ma sortie est:

/home/sourabh/anaconda2/envs/py3/bin/python

Maintenant, récupérez l’emplacement exécutable d’ipython en utilisant la commande "which ipython"

le mien est :

/home/sourabh/anaconda2/envs/py2/bin/python

Notez qu'il utilise une version différente de python, ie. python à partir d’un environnement spécifique exécutant une version différente de python, c’est-à-dire exécutant python à partir d’un environnement différent.

Naviguez maintenant vers le répertoire anaconda2/bin (pour les utilisateurs de anaconda 3, il devrait s'agir de anaconda3/bin) et recherchez le fichier "ipython". dans cette édition, la première ligne doit être dirigée vers la version actuelle de python que vous voulez. c'est-à-dire la sortie de "quel python", c'est-à-dire:

#!/home/sourabh/anaconda2/envs/py3/bin/python

Notez que j'ai changé mon environnement python de py2 (exécutant python 2.7) à py3 (exécutant python 3.5).

Enregistrez le fichier. Et lancez jupyter notebook, l’option "Python 3" doit maintenant être visible lors de la création d’un nouveau carnet.

À votre santé!

0
100rabh

Votre problème est de faire en sorte qu'ipython utilise le bon python.

le problème est donc de faire en sorte qu'ipython utilise le bon python (qui a les bibliothèques installées comme scipy) 

J'ai écrit une solution ici:

Comment faire que iPython utilise Python 2 au lieu de Python 3

0
Harish Kayarohanam