2012-02-21 21 views
81

He estado teniendo problemas con Python, iPython y las bibliotecas. Los siguientes puntos muestran la cadena de la problemática. Estoy ejecutando Python 2.7 en Mac Lion.ipython lee la versión incorrecta de Python

  1. iPython no lee las librerías de scipy, matplotlib, pero sí muestra numpy.
  2. Para solucionar esto, traté de instalar la versión del código fuente de Python, y solo me dio más problemas ya que ahora tengo dos versiones diferentes: 2.7.1 y 2.7.2
  3. Me di cuenta de que la ejecución de Python usa la versión 2.7. 2 e importa scipy, matplotlib y numpy, pero en iPython la versión es 2.7.1 que no abre scipy o matplotlib.

He intentado varias cosas que he encontrado en otras publicaciones de blog. Pero ninguno de ellos ha ayudado, y desafortunadamente no sé muy bien qué estoy haciendo con algunos de ellos. Por ejemplo: Intenté desinstalar y reinstalar ipython con easy_install y pip. También intenté reinstalar todo a través de homebrew y modificando la ruta .bash_profile.

+3

El script 'ipython' está "vinculada" a la versión específica de Python que era instalado con - no cambiará automáticamente a lo que instaló por última vez. Si primero instaló 2.7.1, luego IPython, luego 2.7.2 desde el origen, su IPython seguirá usando 2.7.1. Necesitas deshacer todos tus golpes, volver a tu versión original de Python y descubrir cuál fue el motivo detrás del punto 1; alternativamente, reinstale IPython usando la instalación de Python que pueda acceder a las bibliotecas que necesita. – millimoose

+0

¿Podría ser más específico? ... gracias – Diego

+0

¿Específico sobre qué parte? ¿Cómo funciona el inicio de IPython o cómo hacer desaparecer el problema? – millimoose

Respuesta

128

Vale solución rápida:

which python 

le da /usr/bin/python, ¿verdad? Do

which ipython 

y apuesto a que será /usr/local/bin/ipython. Vamos a ver el interior:

Editar 09/07/16 - El archivo ahora se ve así:

cat /usr/local/bin/ipython 

#!/usr/bin/python 

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

from IPython import start_ipython 

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

Y la mía funciona adecuadamente como este, pero mi situación no es exactamente igual que el de OP.


Respuesta original - 30/9/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 __name__ == '__main__': 
    sys.exit(
     load_entry_point('ipython==0.12.1', 'console_scripts', 'ipython')() 
    ) 

Aha - /usr/local/bin/ipython abierta en su editor (con privilegios), y cambiar la primera línea de

#!/usr/local/bin/python 

guardar, iniciar iPython, debería decir que está usando la versión que desea ahora.

+25

en duda , 'python -m IPython' es equivalente a' ipython', esperamos que esté seguro de usar el Python correcto. – Matt

+0

también recuerde cerrar la terminal y abrir una nueva. ya que PATH está almacenado en caché por el shell para mayor eficiencia. así es como conseguí que esta solución funcionara para mí. ver: http://conda.pydata.org/docs/troubleshooting.html#shell-command-location – putonspectacles

6

Primero, me aseguraría de que estés usando el pitón correcto. En un símbolo del sistema escriba:

which python 
python -V 

El primero le dirá el camino, el segundo le dice la versión de Python que esté utilizando.

+0

Bien, entonces me da Python 2.7.2 en/usr/local/bin/python – Diego

8

¿Qué tal el uso de un virtualenv? Me gusta mucho. Tal vez no sea la manera más rápida, pero creo que está muy claro.

Cuando crea un virtualenv, puede especificar la ruta de Python con el indicador -p.

para python 2.7

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

para el pitón 3,4

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

Este es un hilo viejo, pero también he encontrado virtualenvs y me gustan para el desarrollo de productos. Sin embargo, para el análisis "cotidiano", prefiero tener una versión de python/ipython en mi sistema. – Diego

+1

esto no funciona por cierto –

+0

'python -m IPython' se iniciará ipython con la versión dada de' python' –

1

Un método similar, usando pyenv

pyenv install 3.4.5 
pyenv local 3.4.5 
pip install ipython 
ipython 

Ahora se mostrará versión correcta de pitón

Python 3.4.5 
1

La solución más simple absoluta lo que podía pensar, que no requiere tocar el violín con los entornos, los archivos instalados, o cualquier otra cosa, se basa en los hechos que

  1. El ejecutable ipython es en realidad una secuencia de comandos de Python.
  2. El paquete IPython se instala por separado para cada intérprete con el que ejecutó pip intall.

Si la versión de Python que está runninig con ha instalado un paquete IPython, sólo puede hacer

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

Esto ejecutará el guión ipython con el intérprete desea en lugar de la que aparece en el el asunto.

+0

En lugar de llamar al anterior cada vez, ¿cómo lo configuro como predeterminado, para que cada vez que escriba 'ipython' en mi shell, lea automáticamente el intérprete personalizado en lugar del predeterminado? – ThePredator

+0

Agregue una secuencia de comandos que hace eso en la ruta antes del valor predeterminado. Pero tienes que jugar con el medio ambiente para hacer eso. –

0

Su problema es básicamente hacer que ipython use el python correcto.

por lo que la solución al problema es hacer ipython utilizar el pitón derecho (que tiene las bibliotecas como scipy instalado)

He escrito una solución aquí:

How to make iPython use Python 2 instead of Python 3

0

me encontré el mismo problema pero la siguiente fue la única solución que funcionó para mí en OSX 12, Sierra.

ipython siempre se lanzaba para python 3.6 pero lo necesitaba para 2.7. No pude encontrar un script de inicio de ipython para 2.7, ni pude encontrar el módulo de IPython para ejecutar con python -m. Ninguno de brew instally ipythonpip install ipython o pip2 install ipython podría obtener la versión 2.7. Entonces lo obtuve de forma manual.

brew install [email protected] instala la versión 2.7 desde here pero no lo pondrá en su $PATH porque sabe que el nombre entra en conflicto con otro paquete. ln -s /usr/local/Cellar/[email protected]/5.5.0_1/bin/ipython /usr/local/bin/ipython2 será solucionar este problema y dejar que acaba de ejecutar ipython2 de su Shell Indicador

Para mí, porque yo era serio sobre el uso de ipython 2.7, también encontré los siguientes comandos.

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

Mi solución es simple, estúpido pero funciona.

utilizo python -V para asegurarse de que versión es

$ python -V 
Python 2.7.10 

y luego hacer alias en .bash_profile

$ vi ~/.bash_profile 

Añadir una línea

alias ipython="python -m IPython" 

por lo que recibirá un ipython en python 2.7.

(Por cierto, mi ipython es instalar a través de homebrew, que por defecto se consiguió una carrera ipython en Python 3.)

$ brew install ipython 
Cuestiones relacionadas