ipython读取错误的python版本
我一直在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。
我尝试了几个我从其他博客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,无需摆弄环境,安装文件或其他任何东西,都依赖于事实
- 可执行的
ipython
实际上是一个Python脚本。 - 对于您运行
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 ipython
或pip2 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