iPython installed but not found

2019-01-24 01:28发布

问题:

I've recently deleted Anaconda and reinstalled python with brew. I've installed everything according to these instructions.

Python works great, and all packages I've tested so far also work. I've got ipython installed, but trying to launch it from the terminal gives:

-bash: ipython: command not found

I've located the installation at:

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

Following older related questions, I've tried adding this path to .bash_profile but got:

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

Whenever terminal starts.

Some more info: Anaconda installed an removed, El-Capitan 10.11.2, python 2.7.

Any help would be much appreciated!

EDIT: added some more info to @cel request:

echo $PATH gives:

/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 gives: /usr/local/bin/python and /usr/bin/python.

EDIT: added the output of python -m pip install ipython to cel's request:

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)

回答1:

Searching the web for "bash: ipython: command not found" turns up several hits (including this SO question), but they're not particularly helpful. From the sound of it, you have IPython, the Python package installed, but ipython—the wrapper/launcher for it—is missing for whatever reason. To check whether this is the case, try running:

% 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]:

If that brings up IPython, then you might try making a shell alias as the SO answer linked above suggests, i.e., put something like this in your shell's startup script: alias ipython='python -m IPython'. Or, create the launcher script yourself. For me, it lives in /usr/local/bin/ipython and contains the following:

#!/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())

Hope this helps. (If it does, please consider up-voting the other SO question as well...)

UPDATE: Here are some more possibly-relevant links:

  • ipython: command not found on OSX
  • https://github.com/pypa/pip/issues/426


回答2:

The answer given by @evadeflow does the job, but there are several other packages installed with pip and it will be very uncomfortable to keep adding alias for each of them. A rather elegant way would be to add the path where these packages are installed to the $PATH variable. In my case adding the following line in ~/.bashrc did the job:

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

Addl refs: https://askubuntu.com/q/551990/632996; https://askubuntu.com/q/556090