ipython reads wrong python version
我在使用Python,iPython和库时遇到了麻烦。以下几点显示了问题链。我在Mac Lion上运行Python 2.7。
我尝试过其他一些我从其他博客中遇到的事情。但是他们都没有帮助,也不幸的是我不知道我在做些什么。例如:
我尝试使用easy_install和pip卸载并重新安装ipython。我还尝试通过自制程序重新安装所有内容,并修改路径.bash_profile。
好的快速修复:
1 | which python |
给你
1 | which 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')() ) |
啊啊 - 在您的编辑器中打开
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添加。这完美无缺。
我的解决方案很简单,很愚蠢但很有效。
我使用
1 2 | $ python -V Python 2.7.10 |
然后在.bash_profile中创建别名
1 | $ vi ~/.bash_profile |
添加一行
1 | alias ipython="python -m IPython" |
那么你将在python 2.7中获得
(顺便说一下,我的
1 | $ brew install ipython |
我能想到的绝对最简单的解决方案,它不需要摆弄环境,安装文件或其他任何东西,依赖于事实,
如果您运行的Python版本安装了IPython软件包,那么您可以这样做
1 | /path/to/desired/python $(which ipython) |
这将使用您想要的解释器运行
非常相关: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启动脚本,也找不到用
对我来说,因为我认真使用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