ipython读取错误的python版本

我一直在Python,iPython和图书馆遇到麻烦。 以下几点显示了问题的链条。 我在Mac Lion上运行Python 2.7。

  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。

我尝试了几个我从其他博客post遇到的东西。 但是他们都没有帮助,也不幸我不知道我在做些什么。 例如:我试着用easy_install和pip卸载并重新安装ipython。 我也尝试通过自制程序重新安装一切,并修改path.bash_profile。

好的快速修复:

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

啊哈 – 在你的编辑器(具有特权)打开/usr/local/bin/ipython ,并将第一行更改为

 #!/usr/local/bin/python 

保存,启动iPython,应该说它正在使用你现在想要的版本。

怎么样使用virtualenv? 我很喜欢。 也许这不是更快的方法,但我认为这是非常清楚的。

在创buildvirtualenv时,可以使用-p标志指定pythonpath。

为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 

首先,我会确保你使用的是正确的python。 在命令提示符下键入:

 which python python -V 

第一个会告诉你path,第二个告诉你你正在使用的Python版本。

我能想到的绝对最简单的解决scheme,无需摆弄环境,安装文件或其他任何东西,都依赖于事实

  1. 可执行的ipython实际上是一个Python脚本。
  2. 对于您运行pip intall每个解释器,将分别安装IPython软件包。

如果您正在运行的Python版本安装了IPython软件包,则可以这样做

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

这将运行你想要的解释器,而不是在shebang中列出的ipython脚本。

类似的方法使用pyenv

 pyenv install 3.4.5 pyenv local 3.4.5 pip install ipython ipython 

现在它将显示正确版本的Python

 Python 3.4.5 

极为相关: http : //conda.pydata.org/docs/troubleshooting.html#shell-command-location 。

td;因为shell'hashing'和pathvariables而遇到lr问题。

你的问题基本上是让ipython使用正确的python。

所以解决这个问题的方法是让ipython使用正确的python(它已经安装了scipy这样的库)

我在这里写了一个解决scheme:

如何让iPython使用Python 2而不是Python 3

我遇到了同样的问题,但以下是唯一的解决scheme什么对我在OSX 12,塞拉利昂。

ipython总是启动python 3.6,但我需要2.7。 我找不到2.7的ipython启动脚本,也找不到用python -m执行的IPython模块。 没有brew instally ipython pip install ipythonpip2 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会解决这个问题,让你在shell提示下运行ipython2

对我来说,因为我对使用ipython for 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