ipython читает неверную версию Python - PullRequest
96 голосов
/ 22 февраля 2012

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

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

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

Ответы [ 11 ]

137 голосов
/ 30 апреля 2012

Хорошо, быстрое исправление:

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

И мой работает правильно, как это, но моя ситуацияне совсем как ОП.


Оригинальный ответ - 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 __name__ == '__main__':
    sys.exit(
        load_entry_point('ipython==0.12.1', 'console_scripts', 'ipython')()
    )

Ага - откройте /usr/local/bin/ipython в вашемредактор (с привилегиями) и измените первую строку на

#!/usr/local/bin/python

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

9 голосов
/ 17 декабря 2015

А как насчет использования 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

для питона 3,4

$ virtualenv -p /usr/bin/python3.4 venv3.4
$ source venv3.4/bin/activate
(venv3.4)$ pip install ipython
(venv3.4)$ ipython
6 голосов
/ 22 февраля 2012

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

which python
python -V

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

2 голосов
/ 12 января 2018

Мое решение простое, глупое, но работает.

Я использую python -V, чтобы убедиться, что версия

$ python -V
Python 2.7.10

и затем создайте псевдоним в .bash_profile

$ vi ~/.bash_profile

Добавить строку

alias ipython="python -m IPython"

тогда вы получите ipython в Python 2.7. ?

(Кстати, мой ipython устанавливается через homebrew, по умолчанию будет запускаться ipython в python 3.)

$ brew install ipython
1 голос
/ 15 марта 2019

Публикация комментария @ Matt в качестве ответа, чтобы он был более видимым

python -m IPython

Загружает ipython как модуль с любым доступным в пути питоном.В моем случае у меня был один предварительно установленный и один я добавил из варева.Это просто отлично работает.

1 голос
/ 10 июня 2017

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

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

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

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

Это запустит скрипт ipython с нужным вам переводчиком вместо того, который указан в shebang.

1 голос
/ 18 декабря 2016

крайне актуально: http://conda.pydata.org/docs/troubleshooting.html#shell-command-location.

td; lr возникают проблемы из-за хэширования оболочки и переменных пути.

1 голос
/ 23 сентября 2016

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

pyenv install 3.4.5
pyenv local 3.4.5
pip install ipython
ipython

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

Python 3.4.5
0 голосов
/ 13 марта 2019

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

Этот ответ основан на предположении, что вы используете анаконду.

Допустим, вы находитесь в среде Python 3, и при создании блокнота на блокноте Jupyter вместо Python 3 отображается "Python 2".

Это потому, что «ipython» - это, по сути, скрипт, который запускается, и в этом скрипте упоминается, какая версия Python используется для выполнения команды. Все, что вам нужно сделать, это изменить эту строку, чтобы ipython использовал нужную вам версию python.

Сначала остановите сервер ipython и найдите местоположение исполняемого файла python текущей среды с помощью команды «which python»

Мой вывод:

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

Теперь, чтобы получить расположение исполняемого файла ipython, используйте команду «which ipython»

мой это:

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

Обратите внимание, что он использует другую версию python, т.е. Python из определенной среды, на которой запущена другая версия Python, т.е. работает с Python из другой среды.

Теперь перейдите в каталог anaconda2 / bin (для пользователей anaconda 3 это должен быть anaconda3 / bin) и найдите файл «ipython». в этом редактируйте первую строку, чтобы она указала на текущую версию Python, которую вы хотите. то есть вывод "какого питона", т.е.

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

Обратите внимание, что я изменил свою среду Python с py2 (работает python 2.7) на py3 (работает python 3.5).

Сохраните файл. И запустите jupyter notebook, теперь при создании нового блокнота должна быть видна опция «Python 3».

Ура!

0 голосов
/ 31 октября 2017

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

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

brew install ipython@5 устанавливает версию 2.7 из здесь , но не помещает ее в ваш $PATH, потому что знает, что имя конфликтует с другим пакетом.ln -s /usr/local/Cellar/ipython@5/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
...