iPython已安装但找不到

60

我最近删除了Anaconda,并使用brew重新安装了python。我按照这些说明安装了所有东西。

Python很好用,到目前为止我测试的所有包也都可以工作。我已经安装了ipython,但在终端中尝试启动它会显示:

-bash: ipython: command not found

我已经找到了安装位置:

/usr/local/lib/python2.7/site-packages/ipython

根据早期相关问题的建议,我尝试将此路径添加到.bash_profile中,但是得到了以下错误:

-bash: :/usr/local/lib/python2.7/site-packages/ipython: No such file or directory

每次终端启动时都会出现。

一些更多信息:Anaconda已安装并删除,El-Capitan 10.11.2,python 2.7。

任何帮助都将不胜感激!

编辑:添加了一些@cel请求的其他信息:

echo $PATH的输出结果如下:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin:/Library/TeX/texbin:/Applications/Sublime Text.app/Contents/SharedSupport/bin

which -a python输出为:/usr/local/bin/python/usr/bin/python

编辑:根据cel的请求添加了python -m pip install ipython的输出:

Requirement already satisfied (use --upgrade to upgrade): ipython in /usr/local/lib/python2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): traitlets in /usr/local/lib/python2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): pickleshare in /usr/local/lib/python2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): simplegeneric>0.8 in /usr/local/lib/python2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): decorator in /usr/local/lib/python2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): gnureadline in /usr/local/lib/python2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): appnope in /usr/local/lib/python2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): pexpect in /usr/local/lib/python2.7/site-packages (from ipython)
Requirement already satisfied (use --upgrade to upgrade): ipython-genutils in /usr/local/lib/python2.7/site-packages (from traitlets->ipython)
Requirement already satisfied (use --upgrade to upgrade): path.py in /usr/local/lib/python2.7/site-packages (from pickleshare->ipython)
Requirement already satisfied (use --upgrade to upgrade): ptyprocess>=0.5 in /usr/local/lib/python2.7/site-packages (from pexpect->ipython)

你可能需要再次从路径中删除/usr/local/lib/python2.7/site-packages/ipython。这不是PATH变量的工作方式。之后,请重新启动终端,并将echo $PATHwhich -a python的输出添加到你的问题中。 - cel
感谢您的回复。我已经从.bash_profile中删除了它(我想这就是您的意思),重新启动了终端,但ipython仍然无法工作。echo $PATH显示:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin:/Library/TeX/texbin:/Applications/Sublime Text.app/Contents/SharedSupport/bin,而which -a python则显示:/usr/local/bin/python/usr/bin/python - Adam Haber
您可以通过 python -m pip install ipython 安装ipython,安装完成后您就可以通过命令行启动ipython。 - cel
我刚刚尝试了一下,得到了一堆“要求已经满足”的信息(如果您认为有帮助,我可以附上),之后我又遇到了之前的“-bash: ipython: command not found”错误。 - Adam Haber
是的,输出将会很有帮助。 - cel
显示剩余2条评论
10个回答

97

在互联网上搜索"bash: ipython: command not found"会有很多结果(包括这个 SO 问题),但它们并不是特别有用。从听起来的意思来看,您已经安装了 Python 包IPython,但是ipython——它的入口点(即包装器/启动脚本)由于某种原因丢失了。要检查是否为此情况,请尝试运行以下命令:

% python -m IPython
Python 2.7.9 (default, Feb 10 2015, 03:28:08) 
Type "copyright", "credits" or "license" for more information.

IPython 4.0.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]:

如果这会启动IPython,那么您可以尝试像上面链接的SO答案建议的那样创建一个shell别名,例如,在shell的启动脚本中放置以下内容:alias ipython='python -m IPython'。或者自己创建启动脚本。对于我来说,它位于/usr/local/bin/ipython并包含以下内容:

#!/usr/local/opt/python/bin/python2.7

# -*- 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())

如果这篇回答有帮助,请考虑给其他 SO 的 问题 点赞...

更新:以下是一些可能相关的链接:


9
谢谢!的确是一个包装/启动器问题,通过在.bash_profile中添加alias ipython='python -m IPython'来解决。我也投了你提到的那个问题的赞成票。 - Adam Haber
@GoingMyWay 可能是因为 Python 将 IPython 视为某个模块。 - n00shie
1
如果这个方法对你不起作用,可以尝试在.bash_profile中添加alias ipython='python3 -m IPython' - Jacob Stern
正如@parth92在他的答案中所写的那样,您的解决方案仅适用于少量软件包。对于别名和启动器脚本这两种解决方案,您必须针对每个软件包进行处理。我需要一个全局、更动态的解决方案。 - Timo
在自己创建的.bashrc文件中使用MINGW64- git-bash在Windows 10上执行alias ipython ='python -m IPython'就可以了。 - Andreas L.
我使用Windows 10,从商店下载的Python appwsl2。当我使用python3.exe时没有输出,而which python3则会返回/mnt/c/Users/User/AppData/Local/Microsoft/WindowsApps/python3.exe。在path中,我有../mnt/c/Users/User/AppData/Local/Microsoft/WindowsApps。这是一个新问题还是你可以帮忙解决? - Timo

19

@evadeflow给出的答案可以解决问题,但是使用pip安装了其他几个软件包,如果每个软件包都要添加alias会很麻烦。 一种相当优雅的方法是将这些软件包安装的路径添加到$PATH变量中。在我的情况下,只需在~/.bashrc文件中添加以下行即可完成任务:

export PATH=$PATH:/home/my_user_name/.local/bin

附加参考:https://askubuntu.com/q/551990/632996; https://askubuntu.com/q/556090


1
你的意图是好的,但你提供了一个解决不存在问题的方案。原帖作者报告说,“Python运行良好,到目前为止测试的所有包也都能正常工作”。 - MaxPowers
没听懂你的意思... 我们在说 ipython,对吧? Python 在我的情况下也很好用。 - Parth92
2
这个答案非常有用,因为在我的情况下,pip将ipython launcher安装到了~/.local/bin中,而这个路径并没有在我的PATH中。这就是为什么ipython不是一个有效命令的根本原因。 - davidA
2
在我的情况下,由于我从python.org下载的python3.7 OSX安装程序已经自动完成了将安装路径添加到$PATH变量的步骤——这会创建一个名为'/.bash_profile'的文件来完成此操作。当我阅读了这个答案之后,我检查了一下我的'/.bashrc'是什么样子(因为我是在新电脑上),然后发现只需运行'source ~/.bash_profile'就可以更新路径。 - rajan
1
与此同时,ipython notebook已被弃用。如果您已经使用到这一步,请尝试改用jupyter notebook - Richard

12

对我来说有效的方法是使用以下命令卸载:

~pip3 uninstall ipython

然后:

~sudo pip3 install ipython

我在(W10)WSL2上运行Debian。

这对我有用。IPython被安装到.local/bin,但我正在使用conda环境,所以它不应该重定向到这里。我必须从.local/bin中卸载它,并在我的conda环境中重新安装它。谢谢! - rayryeng

7

针对Python3

python3 -m IPython


为什么不将python别名为Python 3呢?Python 2已于2020年停止支持。 - General Grievance

4

如果使用 Python3,只需尝试:

ipython3

对我来说有效。


3
有时候,在成功安装Anaconda之后,您只需调用您的bash_profile即可。
source ~/.bash_profile

这是因为它将~/.local/bin添加到PATH中。 - s.ouchene

0

如果你正在使用苹果芯片的Macbook,那么你现在大多数情况下都在使用zsh。对于我来说,以下方法有效。

source ~/.zshrc

在此之后退出终端,然后重新打开并尝试。 希望能对某些人有所帮助。


0

对于大多数人来说:

pip install ipython 

对于那些需要镜像的人(如果安装非常缓慢)

pip install ipython -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 

0
对于Anaconda用户:
conda install -c conda-forge ipywidgets

-1

我在Ubuntu 18.04上使用apt安装了ipython,具体步骤如下:

sudo apt install python-ipython

然后,执行'ipython'命令时未能成功,出现了与上述相同的“无法找到命令”错误。 安装python3-python后,同样的问题也出现了。 但是,当我尝试使用sudo apt install ipython时,正确的包裹被安装了。 我不知道pip是否有类似的情况,但这就是我使用apt的经验。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接