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.
Ответ 6
крайне важно: http://conda.pydata.org/docs/troubleshooting.html#shell-command-location.
td; lr проблемы встречаются из-за хеширования оболочки и переменных пути.
Ответ 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