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。
我尝试了其他博客文章中遇到的一些事情。但他们都没有帮助,而且不幸的是我不太知道我在用他们中的一些人做什么。例如: 我尝试使用 easy_install 和 pip 卸载并重新安装 ipython。我还尝试通过自制软件重新安装所有内容,并修改路径.bash_profile。
I've been having trouble with Python, iPython and the libraries. The following points show the chain of the problematics. I'm running Python 2.7 on Mac Lion.
- iPython doesn't read the libraries of scipy, matplotlib, but it does read numpy.
- To fix this, I tried installing Python's source code version, and it only gave me more problems since now I have two different versions: 2.7.1 and 2.7.2
- I noticed that running Python, uses version 2.7.2 and does import scipy, matplotlib, and numpy, but on iPython the version is 2.7.1 which doesn't open scipy or matplotlib.
I've tried several things that I've encountered from other blogposts. But none of them have helped, and also unfortunately I don't quite know what I'm doing with some of them. For example:
I tried uninstalling and reinstalling ipython with easy_install and pip. I also tried reinstalling everything through homebrew, and modifying the path .bash_profile.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
好的快速修复:
给你
/usr/bin/python
,对吗? 这样做,我打赌那将是
/usr/local/bin/ipython
。让我们看看里面:编辑 9/7/16 -- 文件现在看起来像这样:
我的工作正常,就像这样,但我的情况与OP不完全一样。
原始答案 -- 9/30/13:
啊哈 - 在编辑器中打开
/usr/local/bin/ipython
(具有权限),然后更改第一行以保存,启动iPython,应该说它正在使用你现在想要的版本。
Okay quick fix:
gives you
/usr/bin/python
, right? Doand I bet that'll be
/usr/local/bin/ipython
. Let's look inside:Edit 9/7/16 -- The file now looks like this:
And mine works properly like this, but my situation isn't exactly like the OP's.
Original answer -- 9/30/13:
Aha - open
/usr/local/bin/ipython
in your editor (with privileges), and change the first line tosave, start iPython, should say it's using the version you want now.
将 @Matt 的评论作为答案发布,以便其更明显
将 ipython 加载为模块,并首先在路径上访问任何 python。就我而言,我预装了一个,另一个是我从brew 添加的。这非常有效。
Posting @Matt's comment as an answer just so its more visible
Loads ipython as a module with whatever python is accessible on the path first. In my case I had one pre-installed and one I added from brew. This just works perfectly.
使用 virtualenv 怎么样?
我真的很喜欢它。也许这不是更快的方法,但我认为它非常清楚。
创建 virtualenv 时,可以使用 -p 标志指定 python 路径。
对于Python 2.7
对于Python 3.4
What about using a virtualenv?
I really like it. Maybe it's not the faster way, but I think it's very clear.
When you create a virtualenv, you can specify the python path with the -p flag.
for python 2.7
for python 3.4
首先,我会确保你使用的是正确的Python。在命令提示符下键入:
第一个将告诉您路径,第二个将告诉您正在使用的 Python 版本。
First, I would make sure you're using the right python. At a command prompt type:
The first will tell you the path, the second tells you the Python version you're using.
我的解决方案很简单,愚蠢但有效。
我使用 python -V 来确定版本是什么
,然后在 .bash_profile 中创建别名
添加一行,
然后您将在 python 2.7 中得到一个 ipython 。
My solution is simple, stupid but work.
I use
python -V
to make sure what version isand then make alias in .bash_profile
Add a line
then you will get an
ipython
in python 2.7. ????(By the way, my
ipython
is install viahomebrew
, it default will got an ipython run in python 3.)非常相关: http://conda.pydata.org/docs/troubleshooting .html#shell-command-location。
td;lr 由于 shell“散列”和路径变量而遇到问题。
extremely relevant: http://conda.pydata.org/docs/troubleshooting.html#shell-command-location.
td;lr problems are encountered because of shell 'hashing' and path variables.
使用 pyenv 的类似方法
现在它将显示正确的 python 版本
A similar method using pyenv
Now it will show correct version of python
我能想到的绝对最简单的解决方案,不需要摆弄环境、安装的文件或其他任何东西,依赖于
如果您运行的 Python 版本安装了 IPython 软件包,您只需执行
此操作即可使用您想要的解释器(而不是 shebang 中列出的解释器)运行 ipython 脚本。
The absolute simplest solution I could think of, which requires no fiddling with environments, installed files, or anything else, relies on the facts that
ipython
is actually a Python script.pip intall
with.If the version of Python you are runninig with has an IPython package installed, you can just do
This will run the
ipython
script with the interpreter you want instead of the one listed in the shebang.你的问题基本上是让 ipython 使用正确的 python。
所以解决问题的方法是让 ipython 使用正确的 python (安装了 scipy 这样的库)
我在这里写了一个解决方案:
如何让 iPython 使用 Python 2 而不是 Python 3
Your problem is basically making ipython use the right python.
so the fix to the problem is to make ipython use the right python (which has the libraries like scipy installed)
I have written a solution here:
How to make iPython use Python 2 instead of Python 3
我遇到了同样的问题,但以下是在 OSX 12、Sierra 上对我有用的唯一解决方案。
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
将修复此问题并让您只需运行ipython2
对于我来说,因为我很认真地想在 2.7 中使用 ipython,所以我还运行了以下命令。
I came across the same issue but the following was the only solution what worked for me on OSX 12, Sierra.
ipython was always launching for python 3.6 but I needed it for 2.7. I could not find an ipython startup script for 2.7, nor could I find the IPython module to execute with
python -m
. None ofbrew instally ipython
pip install ipython
orpip2 install ipython
could get me the 2.7 version. So I got it manually.brew install ipython@5
installs the 2.7 version from here but won't put it on your$PATH
because it knows the name conflicts with another package.ln -s /usr/local/Cellar/ipython@5/5.5.0_1/bin/ipython /usr/local/bin/ipython2
will fix this and let you just runipython2
from your shell promptFor me, because I was serious about using ipython for 2.7, I also ran the following commands.
如果您使用的是 anaconda 或其他虚拟环境包装器,那么这里提到的所有答案都无助于解决问题。
这个答案基于您使用 anaconda 的假设。
假设您处于 python 3 环境中,并且在 jupyter 笔记本上创建笔记本时,它显示“Python 2”而不是“Python 3”。
这是因为“ipython”本质上是一个运行的脚本,在这个脚本中它提到了它使用哪个 python 版本来执行命令。您需要做的就是更改 ipython 的这一行以使用您想要的 python 版本。
首先停止 ipython 服务器并使用命令“which python”获取当前环境的 python 可执行文件的位置
我的输出是:
现在使用命令“which ipython”获取 ipython 的可执行位置
我的是:
注意它正在使用不同版本的 python 即。来自特定环境的 python 运行不同版本的 python,即从不同的环境运行 python。
现在导航到目录 anaconda2/bin (对于 anaconda 3 用户,它应该是 anaconda3/bin )并搜索“ipython”文件。在此编辑第一行,将其指向您想要的当前 python 版本。即“which python”的输出,即:
请注意,我将 python 环境从 py2(运行 python 2.7)更改为 py3(运行 python 3.5)。
保存文件。并运行 jupyter Notebook,现在在创建新笔记本时,“Python 3”选项应该可见。
干杯!
All the answers mentioned here do not help in solving the issue if you are using anaconda or some other virtual environment wrapper.
This answer is based on the assumption that you are using anaconda.
Say you are in a python 3 environment and when creating a notebook on jupyter notebook it shows "Python 2" instead of "Python 3".
This is because "ipython" is essentially a script which is run and in this script it mentions which python version it is using to execute the command. All you need to do is change this line for ipython to use the version of python you want.
First stop the ipython server and get the location of the python executable of the current environment using the command "which python"
My output is :
Now get the executable location of ipython use the command "which ipython"
mine is :
Notice that it is using a different version of python ie. python from a specific environment running a different version of python ie running python from a different environment.
Now navigate to the directory anaconda2/bin(for anaconda 3 users it should be anaconda3/bin ) and search for "ipython" file. in this edit the first line to be point it to the current python version which you want. ie the output of "which python" i.e. :
Notice that I changed my python environment from py2(running python 2.7) to py3(running python 3.5).
Save the file. And run jupyter notebook, now when creating a new notebook the "Python 3" option should be visible.
Cheers!
对于我来说,在 Windows 10 上,我的 ipython.exe 与我的 python 不匹配。
我知道这一点是因为 ipython 说
但是,当我使用
> 执行包含程序时,这有效。 python
这是不匹配的。
ipython info
python info
这是我的修复。
我更改了对
Python\...\Scripts
的引用,这是 ipython.exe 隐藏的地方C :\Users\joeco\AppData\Roaming\Python\Python38\Scripts
C:\Users\joeco\AppData\Roaming\Python\Python39\Scripts\
RESULTS
from 匹配pywinauto import handleprops
成功For me, on windows 10, my ipython.exe did not match my python.
I knew this because ipython said
However, this worked when I executed the containing program with
> python
Here's the mis-match.
ipython info
python info
Here's my fix.
I changed my reference to
Python\...\Scripts
, which is where ipython.exe is hidingC:\Users\joeco\AppData\Roaming\Python\Python38\Scripts
C:\Users\joeco\AppData\Roaming\Python\Python39\Scripts\
RESULTS
from pywinauto import handleprops
SUCCEEDS我安装了 python2.7、python3.6 和 python3.8
我在这个位置有 ipython 文件
它的内容如下
所以我只是在同一位置制作了该文件的两个副本,名称为 ipython3.6 和 ipython3.8 和更新了第一行以指向特定的 python 版本,在我的例子中,
/usr/bin/python3.6
和/usr/bin/python3.8
。所以现在有 3 个文件,每个文件都指向特定的 python 版本
现在,当我需要启动 python2 时,我只需从终端运行 ipython,并以相同的方式在 python3.8 中获取 ipython,我运行 ipython3.8
注意:您可能需要安装 ipython使用命令
python3.6 -m pip install IPython
或python3.8 -m pip install IPython
指定 Python 版本。我不确定它是和python一起安装的还是我单独安装的。I had python2.7, python3.6 and python3.8 installed
I had ipython file located at this location
It was having below content
So I just made two copies of that file at the same location with name ipython3.6 and ipython3.8 and updated the first line to point to specific python version,
/usr/bin/python3.6
and/usr/bin/python3.8
in my case.So there are now 3 files each pointing to specific python version
Now when I need to start python2 I just run ipython from terminal and same way to get ipython in python3.8, I run ipython3.8
Note: you may need to install ipython for specific python version using command
python3.6 -m pip install IPython
orpython3.8 -m pip install IPython
. I am not sure whether it was installed with python or I installed separately.