ipython读取错误的Python版本

问题描述:

我一直在Python,iPython和库的问题。以下几点显示了问题的链条。我在Mac Lion上运行Python 2.7。ipython读取错误的Python版本

  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。

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

+3

的'ipython'脚本“捆绑”到具体的Python版本是安装时 - 它不会自动切换到最后安装的内容。如果你首先安装了2.7.1,那么IPython,然后从源代码2.7.2,您的IPython将继续使用2.7.1。你需要撤销所有的诡计,回到你原来的Python版本并找出第一点的原因是什么;或者,使用安装的Python安装程序重新安装IPython,以访问您需要的库。 – millimoose 2012-02-21 22:17:52

+0

你能更具体吗?...谢谢 – Diego 2012-02-22 13:57:52

+0

具体关于哪个部分? IPython的启动如何工作,或者如何让问题消失? – millimoose 2012-02-22 18:27:58

好吧快速修复:

which python 

给你/usr/bin/python,对不对?做

which ipython 

我敢打赌这将是/usr/local/bin/ipython。让我们来看看里面:

编辑16年9月7日 - 文件现在看起来像这样:

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的。


原来的答复 - 13年9月30日:

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,应该说它正在使用你想要的版本。

+25

有疑问,'python -m IPython'等同于'ipython',希望你一定要使用正确的Python。 – Matt 2015-11-11 07:11:01

+0

也记得关闭终端并打开一个新的。因为PATH为了效率而被shell高速缓存。这是我得到这个解决方案为我工作的方式。请参阅:http://conda.pydata.org/docs/troubleshooting.html#shell-command-location – putonspectacles 2016-12-18 18:23:34

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

which python 
python -V 

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

+0

好吧,它给了我Python 2.7.2的疑问/ usr/local/bin/python – Diego 2012-02-22 13:54:54

如何使用virtualenv? 我真的很喜欢它。也许这不是更快的方式,但我认为这很清楚。

当您创建virtualenv时,您可以使用-p标志指定python路径。

for 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 
+2

这是一个古老的线程,但我也来关注virtualenvs,并且喜欢他们开发产品。然而,为了“日常”分析的目的,我宁愿在我的系统中直接使用可用的python/ipython版本。 – Diego 2015-12-17 15:22:13

+1

这不起作用btw – 2017-02-23 23:58:37

+0

'python -m IPython'将启动ipython与给定版本的'python' – 2017-07-13 13:56:13

类似的方法使用pyenv

pyenv install 3.4.5 
pyenv local 3.4.5 
pip install ipython 
ipython 

,我们将会看到蟒蛇

Python 3.4.5 

极其相关的正确版本:http://conda.pydata.org/docs/troubleshooting.html#shell-command-location

td; lr由于shell'hashing'和路径变量而遇到lr问题。

+0

也是一个普遍的良好做法是在virtualenv中安装ipython。你的'哪个python'应该指向virtualenv python二进制文件。 – putonspectacles 2017-01-03 16:51:41

我能想到的,绝对简单的解决方案,它需要与环境,安装的文件,或其他任何东西没有摆弄,依靠事实

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

如果您正在使用已安装了IPython的包runninig Python版本,你可以做

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

这将运行ipython脚本解释器,你想,而不是在一上市家当。

+0

而不是每次都调用上述内容,我如何将它设置为默认值,以便每次在我的shell中键入'ipython'时,它会自动读取自定义解释器而不是默认值? – ThePredator 2017-09-14 02:24:39

+0

添加一个脚本,将其添加到默认路径之前。但是你必须惹恼环境才能做到这一点。 – 2017-09-14 03:36:44

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

所以修复的问题是让IPython的使用权蟒蛇(其中有像安装SciPy的库)

我在这里写了一个解决方案:

How to make iPython use Python 2 instead of Python 3

我碰到同样的问题,但以下是唯一的解决方案是什么在OSX 12,Sierra工作。

ipython总是启动python 3.6,但我需要2.7。我找不到2.7的ipython启动脚本,也找不到IPython模块以python -m执行。没有brew instally ipythonpip install ipythonpip2 install ipython可以让我的2.7版本。所以我手动得到它。

brew install [email protected]here安装2.7版本,但不会将它放在您的$PATH上,因为它知道名称与另一个软件包冲突。 ln -s /usr/local/Cellar/[email protected]/5.5.0_1/bin/ipython /usr/local/bin/ipython2将解决这个问题,让你只是从你的shell中运行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 

我的解决方案很简单,但很笨,但工作。

我用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