ipython读错了python版本

Die*_*ego 97 python ipython

我在使用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.

我尝试过其他一些我从其他博客中遇到的事情.但是他们都没有帮助,也不幸的是我不知道我在做些什么.例如:我尝试使用easy_install和pip卸载并重新安装ipython.我还尝试通过自制程序重新安装所有内容,并修改路径.bash_profile.

Man*_*ert 141

好的快速修复:

which python
Run Code Online (Sandbox Code Playgroud)

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

which ipython
Run Code Online (Sandbox Code Playgroud)

我打赌那会是/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())
Run Code Online (Sandbox Code Playgroud)

我的工作正常,但我的情况与OP不完全相同.


原始答案 - 2013年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')()
    )
Run Code Online (Sandbox Code Playgroud)

啊啊 - /usr/local/bin/ipython在您的编辑器中打开(具有权限),并将第一行更改为

#!/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)

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

  • 有疑问,`python -m IPython`相当于`ipython`,期望你肯定会使用正确的Python. (38认同)
  • 还记得关闭终端并打开一个新终端。因为PATH由shell缓存以提高效率。这就是我如何获得此解决方案的方法。请参阅:http://conda.pydata.org/docs/troubleshooting.html#shell-command-location (2认同)

pvi*_*tes 9

那么使用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
Run Code Online (Sandbox Code Playgroud)

对于python 3.4

$ virtualenv -p /usr/bin/python3.4 venv3.4
$ source venv3.4/bin/activate
(venv3.4)$ pip install ipython
(venv3.4)$ ipython
Run Code Online (Sandbox Code Playgroud)

  • 这是一个老线程,但我也遇到过virtualenvs并且喜欢它们很适合开发产品.然而,出于"日常"分析的目的,我宁愿在我的系统中直接使用python/ipython版本. (2认同)

mac*_*uff 6

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

which python
python -V
Run Code Online (Sandbox Code Playgroud)

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


Joh*_*nny 6

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

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

$ python -V
Python 2.7.10
Run Code Online (Sandbox Code Playgroud)

然后在 .bash_profile 中创建别名

$ vi ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

添加一行

alias ipython="python -m IPython"
Run Code Online (Sandbox Code Playgroud)

然后你会得到一个ipythonPython 2.7。

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

$ brew install ipython
Run Code Online (Sandbox Code Playgroud)


sh8*_*h87 5

发表@Matt的评论作为答案,这样它才更明显

python -m IPython
Run Code Online (Sandbox Code Playgroud)

首先使用路径上可访问的任何python将ipython加载为模块。就我而言,我预装了一个,然后从brew中添加了一个。这只是完美的工作。

  • 重要提示:上面的命令对我有用,但一开始它给了我错误“/usr/bin/python:没有名为 IPython 的模块”。为了解决这个问题,我运行了“python3.7 -m pip install IPython”,并且命令“python -m IPython”就像一个魅力:)。只是让你知道。 (3认同)
  • 为了使您的工作流程更加清晰,您可能会发现在 bash 配置文件或任何适用的源配置文件中添加上述适合您的语句会很方便。例如,我添加了 `alias ipython='python -m IPython'`,现在只需在终端中使用 `ipython` 就可以忘记日常的底层细节。 (2认同)