ipython读错了python版本

ipython reads wrong python version

我在使用Python,iPython和库时遇到了麻烦。以下几点显示了问题链。我在Mac Lion上运行Python 2.7。

  • iPython不会读取scipy,matplotlib的库,但它确实读取了numpy。
  • 为了解决这个问题,我尝试安装Python的源代码版本,它只给了我更多的问题,因为现在我有两个不同的版本:2.7.1和2.7.2
  • 我注意到运行Python,使用版本2.7.2并导入scipy,matplotlib和numpy,但是在iPython上版本是2.7.1,它不会打开scipy或matplotlib。
  • 我尝试过其他一些我从其他博客中遇到的事情。但是他们都没有帮助,也不幸的是我不知道我在做些什么。例如:
    我尝试使用easy_install和pip卸载并重新安装ipython。我还尝试通过自制程序重新安装所有内容,并修改路径.bash_profile。


    好的快速修复:

    1
    which python

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

    1
    which ipython

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

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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不完全相同。

    原始答案 - 2013年9月30日:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    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(具有权限),并将第一行更改为

    1
    #!/usr/local/bin/python

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


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

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

    对于python 2.7

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

    对于python 3.4

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


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

    1
    2
    which python
    python -V

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


    将@Matt的评论作为答案发布,以便更加明显

    1
    python -m IPython

    将ipython作为一个模块加载,首先在路径上可以访问任何python。在我的情况下,我有一个预装和一个我从brew添加。这完美无缺。


    我的解决方案很简单,很愚蠢但很有效。

    我使用python -V来确定版本是什么

    1
    2
    $ python -V
    Python 2.7.10

    然后在.bash_profile中创建别名

    1
    $ vi ~/.bash_profile

    添加一行

    1
    alias ipython="python -m IPython"

    那么你将在python 2.7中获得ipython。 ??

    (顺便说一下,我的ipython是通过homebrew安装的,默认情况下会在python 3中运行ipython。)

    1
    $ brew install ipython

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

  • 可执行文件ipython实际上是一个Python脚本。
  • 对于运行pip intall的每个解释器,单独安装IPython包。
  • 如果您运行的Python版本安装了IPython软件包,那么您可以这样做

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

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


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

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


    使用pyenv的类似方法

    1
    2
    3
    4
    pyenv install 3.4.5
    pyenv local 3.4.5
    pip install ipython
    ipython

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

    1
    Python 3.4.5

    如果您使用anaconda或其他虚拟环境包装器,此处提到的所有答案都无助于解决问题。

    这个答案是基于您使用anaconda的假设。

    假设您处于python 3环境中,并且在jupyter笔记本上创建笔记本时,它显示"Python 2"而不是"Python 3"。

    这是因为"ipython"本质上是一个运行的脚本,在这个脚本中它提到了它用于执行命令的python版本。您需要做的就是更改ipython的这一行以使用您想要的python版本。

    首先使用命令"which python"停止ipython服务器并获取当前环境的python可执行文件的位置

    我的输出是:

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

    现在获取ipython的可执行位置使用命令"which ipython"

    我的是 :

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

    请注意,它使用的是不同版本的python ie。来自运行不同版本的python的特定环境的python,即从不同的环境运行python。

    现在导航到目录anaconda2 / bin(对于anaconda 3用户,它应该是anaconda3 / bin)并搜索"ipython"文件。在这个编辑中,第一行是指向你想要的当前python版本。即"哪个python"的输出,即:

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

    请注意,我将python环境从py2(运行python 2.7)更改为py3(运行python 3.5)。

    保存文件。并且运行jupyter笔记本,现在在创建新笔记本时,应该可以看到"Python 3"选项。

    干杯!


    我遇到了同样的问题,但以下是在OSX 12,Sierra上对我有用的唯一解决方案。

    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,我还运行了以下命令。

    1
    2
    3
    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

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

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

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

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