Ipython читает неправильную версию python

У меня возникли проблемы с Python, iPython и библиотеками. Следующие моменты показывают цепочку проблематики. Я запускаю Python 2.7 на Mac Lion.

  • iPython не читает библиотеки scipy, matplotlib, но он читает numpy.
  • Чтобы исправить это, я попытался установить версию исходного кода на Python, и это только дало мне больше проблем, так как теперь у меня есть две разные версии: 2.7.1 и 2.7.2
  • Я заметил, что работающий Python использует версию 2.7.2 и импортирует scipy, matplotlib и numpy, но на iPython версия 2.7.1, которая не открывает scipy или matplotlib.

Я пробовал несколько вещей, которые я встречал из других блогов. Но никто из них не помог, и, к сожалению, я не совсем понимаю, что я делаю с некоторыми из них. Например: Я попытался удалить и переустановить ipython с помощью easy_install и pip. Я также попытался переустановить все через homebrew и изменить путь .bash_profile.

Ответ 1

Быстрое исправление:

which python

дает вам /usr/bin/python, правильно? У

which ipython

и я уверен, что будет /usr/local/bin/ipython. Давайте заглянем внутрь:

Редактировать 9/7/16 - Файл теперь выглядит следующим образом:

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())

И мои правильно работают так, но моя ситуация не совсем похожа на OP.


Оригинальный ответ - 9/30/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 в своем редакторе (с привилегиями) и измените первую строку на

#!/usr/local/bin/python

сохранить, запустить iPython, сказать это, используя версию, которую вы хотите сейчас.

Ответ 2

Как насчет использования virtualenv? Мне это и вправду нравится. Возможно, это не самый быстрый способ, но я думаю, что это очень ясно.

Когда вы создаете virtualenv, вы можете указать путь python с флагом -p.

для python 2.7

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

для python 3.4

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

Ответ 3

Во-первых, я бы удостоверился, что вы используете правильный питон. В командной строке введите:

which python
python -V

Первый расскажет вам путь, второй сообщает вам версию Python, которую вы используете.

Ответ 4

Аналогичный метод с использованием pyenv

pyenv install 3.4.5
pyenv local 3.4.5
pip install ipython
ipython

Теперь он покажет правильную версию python

Python 3.4.5

Ответ 5

Абсолютное простейшее решение, о котором я мог думать, которое не требует вмешательства в среду, установленные файлы или что-то еще, полагается на факты, которые

  • Исполняемый файл ipython на самом деле является Python script.
  • Пакет IPython устанавливается отдельно для каждого интерпретатора, с которым вы запускали pip intall с.

Если версия Python, с которой вы запущена, имеет установленный пакет IPython, вы можете просто сделать

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

Это запустит ipython script с помощью интерпретатора, который вы хотите, а не из списка, указанного в shebang.

Ответ 7

Ваша проблема заключается в том, что ipython использует правильный питон.

поэтому исправление проблемы заключается в том, чтобы ipython использовал правильный python (у которого есть библиотеки, такие как scipy)

Я написал здесь решение:

Как заставить iPython использовать Python 2 вместо Python 3

Ответ 8

Я столкнулся с одной и той же проблемой, но следующее было единственным решением, которое работало для меня на OSX 12, Sierra.

ipython всегда запускался для python 3.6, но мне он нужен для 2.7. Я не смог найти запуск ipython script для 2.7, и не смог найти IPython-модуль для выполнения с помощью python -m. Ни один из brew instally ipython pip install ipython или pip2 install ipython не смог получить версию 2.7. Поэтому я получил его вручную.

brew install [email protected] устанавливает версию 2.7 из здесь, но не помещает ее в ваш $PATH, потому что она знает, что имя конфликтует с другой упаковка. ln -s /usr/local/Cellar/[email protected]/5.5.0_1/bin/ipython /usr/local/bin/ipython2 исправит это и позволит вам просто запустить ipython2 из командной строки

Для меня, поскольку я серьезно относился к использованию ipython для 2.7, я также запускал следующие команды.

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