ipython读取了错误的python版本

ipython读取了错误的python版本,python,ipython,Python,Ipython,我在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或

我在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。我还尝试通过自制重新安装了所有内容,并修改了path.bash_配置文件。

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

    which python
    python -V
    
    第一个将告诉您路径,第二个将告诉您正在使用的Python版本。

    好的快速修复:

    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())
    
    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')()
        )
    
    我的工作正常,但我的情况和OP的不完全一样


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

    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())
    
    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,应该说它正在使用您现在想要的版本

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

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

    对于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的正确版本

    Python 3.4.5
    
    非常相关:


    运输署;由于shell“哈希”和路径变量,会遇到lr问题

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

  • 可执行文件ipython实际上是一个Python脚本
  • IPython软件包是为运行
    pip intall
    的每个解释器分别安装的
  • 如果运行ninig的Python版本安装了IPython包,您只需执行以下操作即可

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

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

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

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

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


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

    ipython总是为Python3.6启动,但我在2.7中需要它。我找不到用于2.7的ipython启动脚本,也找不到使用
    python-m
    执行的ipython模块。brew instally ipython
    pip install ipython
    pip2 install ipython
    都无法获得2.7版本。所以我是手工得到的

    brew安装ipython@5
    从安装2.7版本,但不会将其放在您的
    $PATH
    上,因为它知道名称与另一个包冲突。
    ln-s/usr/local/cell/ipython@5/5.5.0_1/bin/ipython/usr/local/bin/ipython2
    将修复此问题,并允许您在shell提示符下运行
    ipython2

    对我来说,因为我对使用iPython2.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\u配置文件中创建别名

    $ vi ~/.bash_profile
    
    加行

    alias ipython="python -m IPython"
    

    然后您将在python 2.7中获得一个
    ipython
    如果您使用的是anaconda或其他虚拟环境包装器,那么这里提到的所有答案都无助于解决这个问题

    这个答案是基于假设您使用的是蟒蛇

    假设您在Python3环境中,在jupyter笔记本上创建笔记本时,它会显示“Python2”而不是“Python3”

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

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

    我的输出是:

    /home/sourabh/anaconda2/envs/py3/bin/python
    
    现在使用命令“which ipython”获取ipython的可执行位置

    我的建议是:

    /home/sourabh/anaconda2/envs/py2/bin/python
    
    请注意,它使用的是来自特定环境的不同版本的python ie.python,运行的是来自不同环境的不同版本的python ie

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

    注意,我将python环境从py2(运行Python2.7)更改为py3(运行Python3.5)

    保存文件。然后运行jupyter notebook,现在在创建新笔记本时,“Python3”选项应该是可见的


    干杯

    将@Matt的评论作为一个答案发布,以使其更清晰可见

    python -m IPython
    
    将ipython作为一个模块加载,首先加载路径上可访问的python。在我的例子中,我预装了一个,并从brew中添加了一个。这就是完美的工作方式

    对我来说,在wi上
    Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>>