|
|
#LyX 1.4.3 created this file. For more info see http://www.lyx.org/
|
|
|
\lyxformat 245
|
|
|
\begin_document
|
|
|
\begin_header
|
|
|
\textclass article
|
|
|
\begin_preamble
|
|
|
%\usepackage{ae,aecompl}
|
|
|
\usepackage{color}
|
|
|
|
|
|
% A few colors to replace the defaults for certain link types
|
|
|
\definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
|
|
|
\definecolor{darkorange}{rgb}{.71,0.21,0.01}
|
|
|
\definecolor{darkred}{rgb}{.52,0.08,0.01}
|
|
|
\definecolor{darkgreen}{rgb}{.12,.54,.11}
|
|
|
|
|
|
% Use and configure listings package for nicely formatted code
|
|
|
\usepackage{listings}
|
|
|
\lstset{
|
|
|
language=Python,
|
|
|
basicstyle=\small\ttfamily,
|
|
|
commentstyle=\ttfamily\color{blue},
|
|
|
stringstyle=\ttfamily\color{darkorange},
|
|
|
showstringspaces=false,
|
|
|
breaklines=true,
|
|
|
postbreak = \space\dots
|
|
|
}
|
|
|
|
|
|
\usepackage[%pdftex, % needed for pdflatex
|
|
|
breaklinks=true, % so long urls are correctly broken across lines
|
|
|
colorlinks=true,
|
|
|
urlcolor=blue,
|
|
|
linkcolor=darkred,
|
|
|
citecolor=darkgreen,
|
|
|
]{hyperref}
|
|
|
|
|
|
\usepackage{html}
|
|
|
|
|
|
% This helps prevent overly long lines that stretch beyond the margins
|
|
|
\sloppy
|
|
|
|
|
|
% Define a \codelist command which either uses listings for latex, or
|
|
|
% plain verbatim for html (since latex2html doesn't understand the
|
|
|
% listings package).
|
|
|
\usepackage{verbatim}
|
|
|
\newcommand{\codelist}[1] {
|
|
|
\latex{\lstinputlisting{#1}}
|
|
|
\html{\verbatiminput{#1}}
|
|
|
}
|
|
|
\end_preamble
|
|
|
\language english
|
|
|
\inputencoding latin1
|
|
|
\fontscheme palatino
|
|
|
\graphics default
|
|
|
\paperfontsize 11
|
|
|
\spacing single
|
|
|
\papersize default
|
|
|
\use_geometry true
|
|
|
\use_amsmath 1
|
|
|
\cite_engine basic
|
|
|
\use_bibtopic false
|
|
|
\paperorientation portrait
|
|
|
\leftmargin 1in
|
|
|
\topmargin 1in
|
|
|
\rightmargin 1in
|
|
|
\bottommargin 1in
|
|
|
\secnumdepth 3
|
|
|
\tocdepth 3
|
|
|
\paragraph_separation skip
|
|
|
\defskip medskip
|
|
|
\quotes_language english
|
|
|
\papercolumns 1
|
|
|
\papersides 2
|
|
|
\paperpagestyle fancy
|
|
|
\tracking_changes false
|
|
|
\output_changes true
|
|
|
\end_header
|
|
|
|
|
|
\begin_body
|
|
|
|
|
|
\begin_layout Title
|
|
|
IPython
|
|
|
\newline
|
|
|
|
|
|
\size larger
|
|
|
An enhanced Interactive Python
|
|
|
\size large
|
|
|
|
|
|
\newline
|
|
|
User Manual, v.
|
|
|
__version__
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Author
|
|
|
Fernando P�rez
|
|
|
\begin_inset Foot
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\size scriptsize
|
|
|
Department of Applied Mathematics, University of Colorado at Boulder.
|
|
|
|
|
|
\family typewriter
|
|
|
<Fernando.Perez@colorado.edu>
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
latex{
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\begin_inset LatexCommand \tableofcontents{}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\begin_inset ERT
|
|
|
status open
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
html{
|
|
|
\backslash
|
|
|
bodytext{bgcolor=#ffffff}}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\newpage
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
Overview
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
One of Python's most useful features is its interactive interpreter.
|
|
|
This system allows very fast testing of ideas without the overhead of creating
|
|
|
test files as is typical in most programming languages.
|
|
|
However, the interpreter supplied with the standard Python distribution
|
|
|
is somewhat limited for extended interactive use.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython is a free software project (released under the BSD license) which
|
|
|
tries to:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Provide an interactive shell superior to Python's default.
|
|
|
IPython has many features for object introspection, system shell access,
|
|
|
and its own special command system for adding functionality when working
|
|
|
interactively.
|
|
|
It tries to be a very efficient environment both for Python code development
|
|
|
and for exploration of problems using Python objects (in situations like
|
|
|
data analysis).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Serve as an embeddable, ready to use interpreter for your own programs.
|
|
|
IPython can be started with a single call from inside another program,
|
|
|
providing access to the current namespace.
|
|
|
This can be very useful both for debugging purposes and for situations
|
|
|
where a blend of batch-processing and interactive exploration are needed.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Offer a flexible framework which can be used as the base environment for
|
|
|
other systems with Python as the underlying language.
|
|
|
Specifically scientific environments like Mathematica, IDL and Matlab inspired
|
|
|
its design, but similar ideas can be useful in many fields.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Allow interactive testing of threaded graphical toolkits.
|
|
|
IPython has support for interactive, non-blocking control of GTK, Qt and
|
|
|
WX applications via special threading flags.
|
|
|
The normal Python shell can only do this for Tkinter applications.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Main features
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Dynamic object introspection.
|
|
|
One can access docstrings, function definition prototypes, source code,
|
|
|
source files and other details of any object accessible to the interpreter
|
|
|
with a single keystroke (`
|
|
|
\family typewriter
|
|
|
?
|
|
|
\family default
|
|
|
', and using `
|
|
|
\family typewriter
|
|
|
??
|
|
|
\family default
|
|
|
' provides additional detail).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Searching through modules and namespaces with `
|
|
|
\family typewriter
|
|
|
*
|
|
|
\family default
|
|
|
' wildcards, both when using the `
|
|
|
\family typewriter
|
|
|
?
|
|
|
\family default
|
|
|
' system and via the
|
|
|
\family typewriter
|
|
|
%psearch
|
|
|
\family default
|
|
|
command.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Completion in the local namespace, by typing TAB at the prompt.
|
|
|
This works for keywords, methods, variables and files in the current directory.
|
|
|
This is supported via the readline library, and full access to configuring
|
|
|
readline's behavior is provided.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Numbered input/output prompts with command history (persistent across sessions
|
|
|
and tied to each profile), full searching in this history and caching of
|
|
|
all input and output.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
User-extensible `magic' commands.
|
|
|
A set of commands prefixed with
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
is available for controlling IPython itself and provides directory control,
|
|
|
namespace information and many aliases to common system shell commands.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Alias facility for defining your own system aliases.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Complete system shell access.
|
|
|
Lines starting with ! are passed directly to the system shell, and using
|
|
|
!! captures shell output into python variables for further use.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Background execution of Python commands in a separate thread.
|
|
|
IPython has an internal job manager called
|
|
|
\family typewriter
|
|
|
jobs
|
|
|
\family default
|
|
|
, and a conveninence backgrounding magic function called
|
|
|
\family typewriter
|
|
|
%bg
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
The ability to expand python variables when calling the system shell.
|
|
|
In a shell command, any python variable prefixed with
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
is expanded.
|
|
|
A double
|
|
|
\family typewriter
|
|
|
$$
|
|
|
\family default
|
|
|
allows passing a literal
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
to the shell (for access to shell and environment variables like
|
|
|
\family typewriter
|
|
|
$PATH
|
|
|
\family default
|
|
|
).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Filesystem navigation, via a magic
|
|
|
\family typewriter
|
|
|
%cd
|
|
|
\family default
|
|
|
command, along with a persistent bookmark system (using
|
|
|
\family typewriter
|
|
|
%bookmark
|
|
|
\family default
|
|
|
) for fast access to frequently visited directories.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
A lightweight persistence framework via the
|
|
|
\family typewriter
|
|
|
%store
|
|
|
\family default
|
|
|
command, which allows you to save arbitrary Python variables.
|
|
|
These get restored automatically when your session restarts.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Automatic indentation (optional) of code as you type (through the readline
|
|
|
library).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Macro system for quickly re-executing multiple lines of previous input with
|
|
|
a single name.
|
|
|
Macros can be stored persistently via
|
|
|
\family typewriter
|
|
|
%store
|
|
|
\family default
|
|
|
and edited via
|
|
|
\family typewriter
|
|
|
%edit
|
|
|
\family default
|
|
|
.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Session logging (you can then later use these logs as code in your programs).
|
|
|
Logs can optionally timestamp all input, and also store session output
|
|
|
(marked as comments, so the log remains valid Python source code).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Session restoring: logs can be replayed to restore a previous session to
|
|
|
the state where you left it.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Verbose and colored exception traceback printouts.
|
|
|
Easier to parse visually, and in verbose mode they produce a lot of useful
|
|
|
debugging information (basically a terminal version of the cgitb module).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Auto-parentheses: callable objects can be executed without parentheses:
|
|
|
|
|
|
\family typewriter
|
|
|
`sin 3'
|
|
|
\family default
|
|
|
is automatically converted to
|
|
|
\family typewriter
|
|
|
`sin(3)
|
|
|
\family default
|
|
|
'.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Auto-quoting: using `
|
|
|
\family typewriter
|
|
|
,
|
|
|
\family default
|
|
|
' or `
|
|
|
\family typewriter
|
|
|
;
|
|
|
\family default
|
|
|
' as the first character forces auto-quoting of the rest of the line:
|
|
|
\family typewriter
|
|
|
`,my_function a\InsetSpace ~
|
|
|
b'
|
|
|
\family default
|
|
|
becomes automatically
|
|
|
\family typewriter
|
|
|
`my_function("a","b")'
|
|
|
\family default
|
|
|
, while
|
|
|
\family typewriter
|
|
|
`;my_function a\InsetSpace ~
|
|
|
b'
|
|
|
\family default
|
|
|
becomes
|
|
|
\family typewriter
|
|
|
`my_function("a b")'
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Extensible input syntax.
|
|
|
You can define filters that pre-process user input to simplify input in
|
|
|
special situations.
|
|
|
This allows for example pasting multi-line code fragments which start with
|
|
|
|
|
|
\family typewriter
|
|
|
`>>>'
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
`...'
|
|
|
\family default
|
|
|
such as those from other python sessions or the standard Python documentation.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Flexible configuration system.
|
|
|
It uses a configuration file which allows permanent setting of all command-line
|
|
|
options, module loading, code and file execution.
|
|
|
The system allows recursive file inclusion, so you can have a base file
|
|
|
with defaults and layers which load other customizations for particular
|
|
|
projects.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Embeddable.
|
|
|
You can call IPython as a python shell inside your own python programs.
|
|
|
This can be used both for debugging code or for providing interactive abilities
|
|
|
to your programs with knowledge about the local namespaces (very useful
|
|
|
in debugging and data analysis situations).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Easy debugger access.
|
|
|
You can set IPython to call up an enhanced version of the Python debugger
|
|
|
(
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
) every time there is an uncaught exception.
|
|
|
This drops you inside the code which triggered the exception with all the
|
|
|
data live and it is possible to navigate the stack to rapidly isolate the
|
|
|
source of a bug.
|
|
|
The
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
magic command --with the
|
|
|
\family typewriter
|
|
|
-d
|
|
|
\family default
|
|
|
option-- can run any script under
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
's control, automatically setting initial breakpoints for you.
|
|
|
This version of
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
has IPython-specific improvements, including tab-completion and traceback
|
|
|
coloring support.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Profiler support.
|
|
|
You can run single statements (similar to
|
|
|
\family typewriter
|
|
|
profile.run()
|
|
|
\family default
|
|
|
) or complete programs under the profiler's control.
|
|
|
While this is possible with standard
|
|
|
\family typewriter
|
|
|
cProfile
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
profile
|
|
|
\family default
|
|
|
modules, IPython wraps this functionality with magic commands (see
|
|
|
\family typewriter
|
|
|
`%prun'
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
`%run -p
|
|
|
\family default
|
|
|
') convenient for rapid interactive work.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Doctest support.
|
|
|
The special
|
|
|
\family typewriter
|
|
|
%doctest_mode
|
|
|
\family default
|
|
|
command toggles a mode that allows you to paste existing doctests (with
|
|
|
leading `
|
|
|
\family typewriter
|
|
|
>>>
|
|
|
\family default
|
|
|
' prompts and whitespace) and uses doctest-compatible prompts and output,
|
|
|
so you can use IPython sessions as doctest code.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Portability and Python requirements
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
Python requirements:
|
|
|
\series default
|
|
|
IPython requires with Python version 2.3 or newer.
|
|
|
If you are still using Python 2.2 and can not upgrade, the last version
|
|
|
of IPython which worked with Python 2.2 was 0.6.15, so you will have to use
|
|
|
that.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython is developed under
|
|
|
\series bold
|
|
|
Linux
|
|
|
\series default
|
|
|
, but it should work in any reasonable Unix-type system (tested OK under
|
|
|
Solaris and the *BSD family, for which a port exists thanks to Dryice Liu).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
Mac OS X
|
|
|
\series default
|
|
|
: it works, apparently without any problems (thanks to Jim Boyle at Lawrence
|
|
|
Livermore for the information).
|
|
|
Thanks to Andrea Riciputi, Fink support is available.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
CygWin
|
|
|
\series default
|
|
|
: it works mostly OK, though some users have reported problems with prompt
|
|
|
coloring.
|
|
|
No satisfactory solution to this has been found so far, you may want to
|
|
|
disable colors permanently in the
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
configuration file if you experience problems.
|
|
|
If you have proper color support under cygwin, please post to the IPython
|
|
|
mailing list so this issue can be resolved for all users.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
Windows
|
|
|
\series default
|
|
|
: it works well under Windows XP/2k, and I suspect NT should behave similarly.
|
|
|
Section\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sub:Under-Windows}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
describes installation details for Windows, including some additional tools
|
|
|
needed on this platform.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Windows 9x support is present, and has been reported to work fine (at least
|
|
|
on WinME).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Note, that I have very little access to and experience with Windows development.
|
|
|
However, an excellent group of Win32 users (led by Ville Vainio), consistently
|
|
|
contribute bugfixes and platform-specific enhancements, so they more than
|
|
|
make up for my deficiencies on that front.
|
|
|
In fact, Win32 users report using IPython as a system shell (see Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:IPython-as-shell}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for details), as it offers a level of control and features which the default
|
|
|
|
|
|
\family typewriter
|
|
|
cmd.exe
|
|
|
\family default
|
|
|
doesn't provide.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Location
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython is generously hosted at
|
|
|
\begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
by the Enthought, Inc and the SciPy project.
|
|
|
This site offers downloads, subversion access, mailing lists and a bug
|
|
|
tracking system.
|
|
|
I am very grateful to Enthought (
|
|
|
\begin_inset LatexCommand \htmlurl{http://www.enthought.com}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
) and all of the SciPy team for their contribution.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:install}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Installation
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Instant instructions
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you are of the impatient kind, under Linux/Unix simply untar/unzip the
|
|
|
download, then install with
|
|
|
\family typewriter
|
|
|
`python setup.py install'
|
|
|
\family default
|
|
|
.
|
|
|
Under Windows, double-click on the provided
|
|
|
\family typewriter
|
|
|
.exe
|
|
|
\family default
|
|
|
binary installer.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Then, take a look at Sections
|
|
|
\begin_inset LatexCommand \ref{sec:good_config}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for configuring things optimally and
|
|
|
\begin_inset LatexCommand \ref{sec:quick_tips}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for quick tips on efficient use of IPython.
|
|
|
You can later refer to the rest of the manual for all the gory details.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
See the notes in sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:upgrade}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for upgrading IPython versions.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Detailed Unix instructions (Linux, Mac OS X, etc.)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
For RPM based systems, simply install the supplied package in the usual
|
|
|
manner.
|
|
|
If you download the tar archive, the process is:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Unzip/untar the
|
|
|
\family typewriter
|
|
|
ipython-XXX.tar.gz
|
|
|
\family default
|
|
|
file wherever you want (
|
|
|
\family typewriter
|
|
|
XXX
|
|
|
\family default
|
|
|
is the version number).
|
|
|
It will make a directory called
|
|
|
\family typewriter
|
|
|
ipython-XXX.
|
|
|
|
|
|
\family default
|
|
|
Change into that directory where you will find the files
|
|
|
\family typewriter
|
|
|
README
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
setup.py
|
|
|
\family default
|
|
|
.
|
|
|
|
|
|
\family typewriter
|
|
|
O
|
|
|
\family default
|
|
|
nce you've completed the installation, you can safely remove this directory.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
If you are installing over a previous installation of version 0.2.0 or earlier,
|
|
|
first remove your
|
|
|
\family typewriter
|
|
|
$HOME/.ipython
|
|
|
\family default
|
|
|
directory, since the configuration file format has changed somewhat (the
|
|
|
'=' were removed from all option specifications).
|
|
|
Or you can call ipython with the
|
|
|
\family typewriter
|
|
|
-upgrade
|
|
|
\family default
|
|
|
option and it will do this automatically for you.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
IPython uses distutils, so you can install it by simply typing at the system
|
|
|
prompt (don't type the
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
)
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
$ python setup.py install
|
|
|
\family default
|
|
|
|
|
|
\newline
|
|
|
Note that this assumes you have root access to your machine.
|
|
|
If you don't have root access or don't want IPython to go in the default
|
|
|
python directories, you'll need to use the
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
verb|--home|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
option (or
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
verb|--prefix|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
).
|
|
|
For example:
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
verb|$ python setup.py install --home $HOME/local|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\newline
|
|
|
will install IPython into
|
|
|
\family typewriter
|
|
|
$HOME/local
|
|
|
\family default
|
|
|
and its subdirectories (creating them if necessary).
|
|
|
\newline
|
|
|
You can type
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
verb|$ python setup.py --help|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\newline
|
|
|
for more details.
|
|
|
\newline
|
|
|
Note that if you change the default location for
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
verb|--home|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
at installation, IPython may end up installed at a location which is not
|
|
|
part of your
|
|
|
\family typewriter
|
|
|
$PYTHONPATH
|
|
|
\family default
|
|
|
environment variable.
|
|
|
In this case, you'll need to configure this variable to include the actual
|
|
|
directory where the
|
|
|
\family typewriter
|
|
|
IPython/
|
|
|
\family default
|
|
|
directory ended (typically the value you give to
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
verb|--home|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
plus
|
|
|
\family typewriter
|
|
|
/lib/python
|
|
|
\family default
|
|
|
).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Mac OSX information
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Under OSX, there is a choice you need to make.
|
|
|
Apple ships its own build of Python, which lives in the core OSX filesystem
|
|
|
hierarchy.
|
|
|
You can also manually install a separate Python, either purely by hand
|
|
|
(typically in
|
|
|
\family typewriter
|
|
|
/usr/local
|
|
|
\family default
|
|
|
) or by using Fink, which puts everything under
|
|
|
\family typewriter
|
|
|
/sw
|
|
|
\family default
|
|
|
.
|
|
|
Which route to follow is a matter of personal preference, as I've seen
|
|
|
users who favor each of the approaches.
|
|
|
Here I will simply list the known installation issues under OSX, along
|
|
|
with their solutions.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This page:
|
|
|
\begin_inset LatexCommand \htmlurl{http://geosci.uchicago.edu/~tobis/pylab.html}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
contains information on this topic, with additional details on how to make
|
|
|
IPython and matplotlib play nicely under OSX.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection*
|
|
|
GUI problems
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following instructions apply to an install of IPython under OSX from
|
|
|
unpacking the
|
|
|
\family typewriter
|
|
|
.tar.gz
|
|
|
\family default
|
|
|
distribution and installing it for the default Python interpreter shipped
|
|
|
by Apple.
|
|
|
If you are using a fink install, fink will take care of these details for
|
|
|
you, by installing IPython against fink's Python.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython offers various forms of support for interacting with graphical applicati
|
|
|
ons from the command line, from simple Tk apps (which are in principle always
|
|
|
supported by Python) to interactive control of WX, Qt and GTK apps.
|
|
|
Under OSX, however, this requires that ipython is installed by calling
|
|
|
the special
|
|
|
\family typewriter
|
|
|
pythonw
|
|
|
\family default
|
|
|
script at installation time, which takes care of coordinating things with
|
|
|
Apple's graphical environment.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
So when installing under OSX, it is best to use the following command:
|
|
|
\family typewriter
|
|
|
|
|
|
\newline
|
|
|
|
|
|
\family default
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
verb| $ sudo pythonw setup.py install --install-scripts=/usr/local/bin|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\newline
|
|
|
or
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
verb| $ sudo pythonw setup.py install --install-scripts=/usr/bin|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\newline
|
|
|
depending on where you like to keep hand-installed executables.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The resulting script will have an appropriate shebang line (the first line
|
|
|
in the script whic begins with
|
|
|
\family typewriter
|
|
|
#!...
|
|
|
\family default
|
|
|
) such that the ipython interpreter can interact with the OS X GUI.
|
|
|
If the installed version does not work and has a shebang line that points
|
|
|
to, for example, just
|
|
|
\family typewriter
|
|
|
/usr/bin/python
|
|
|
\family default
|
|
|
, then you might have a stale, cached version in your
|
|
|
\family typewriter
|
|
|
build/scripts-<python-version>
|
|
|
\family default
|
|
|
directory.
|
|
|
Delete that directory and rerun the
|
|
|
\family typewriter
|
|
|
setup.py
|
|
|
\family default
|
|
|
.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
It is also a good idea to use the special flag
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
verb|--install-scripts|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
as indicated above, to ensure that the ipython scripts end up in a location
|
|
|
which is part of your
|
|
|
\family typewriter
|
|
|
$PATH
|
|
|
\family default
|
|
|
.
|
|
|
Otherwise Apple's Python will put the scripts in an internal directory
|
|
|
not available by default at the command line (if you use
|
|
|
\family typewriter
|
|
|
/usr/local/bin
|
|
|
\family default
|
|
|
, you need to make sure this is in your
|
|
|
\family typewriter
|
|
|
$PATH
|
|
|
\family default
|
|
|
, which may not be true by default).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection*
|
|
|
Readline problems
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
By default, the Python version shipped by Apple does
|
|
|
\emph on
|
|
|
not
|
|
|
\emph default
|
|
|
include the readline library, so central to IPython's behavior.
|
|
|
If you install IPython against Apple's Python, you will not have arrow
|
|
|
keys, tab completion, etc.
|
|
|
For Mac OSX 10.3 (Panther), you can find a prebuilt readline library here:
|
|
|
\newline
|
|
|
|
|
|
\begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/readline-5.0-py2.3-macosx10.3.zip}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you are using OSX 10.4 (Tiger), after installing this package you need
|
|
|
to either:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
move
|
|
|
\family typewriter
|
|
|
readline.so
|
|
|
\family default
|
|
|
from
|
|
|
\family typewriter
|
|
|
/Library/Python/2.3
|
|
|
\family default
|
|
|
to
|
|
|
\family typewriter
|
|
|
/Library/Python/2.3/site-packages
|
|
|
\family default
|
|
|
, or
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
install
|
|
|
\begin_inset LatexCommand \htmlurl{http://pythonmac.org/packages/TigerPython23Compat.pkg.zip}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Users installing against Fink's Python or a properly hand-built one should
|
|
|
not have this problem.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection*
|
|
|
DarwinPorts
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
I report here a message from an OSX user, who suggests an alternative means
|
|
|
of using IPython under this operating system with good results.
|
|
|
Please let me know of any updates that may be useful for this section.
|
|
|
His message is reproduced verbatim below:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
From: Markus Banfi
|
|
|
\family typewriter
|
|
|
<markus.banfi-AT-mospheira.net>
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
As a MacOS X (10.4.2) user I prefer to install software using DawinPorts instead
|
|
|
of Fink.
|
|
|
I had no problems installing ipython with DarwinPorts.
|
|
|
It's just:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
sudo port install py-ipython
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
It automatically resolved all dependencies (python24, readline, py-readline).
|
|
|
So far I did not encounter any problems with the DarwinPorts port of ipython.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sub:Under-Windows}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Windows instructions
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Some of IPython's very useful features are:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Integrated readline support (Tab-based file, object and attribute completion,
|
|
|
input history across sessions, editable command line, etc.)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Coloring of prompts, code and tracebacks.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
These, by default, are only available under Unix-like operating systems.
|
|
|
However, thanks to Gary Bishop's work, Windows XP/2k users can also benefit
|
|
|
from them.
|
|
|
His readline library originally implemented both GNU readline functionality
|
|
|
and color support, so that IPython under Windows XP/2k can be as friendly
|
|
|
and powerful as under Unix-like environments.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This library, now named
|
|
|
\family typewriter
|
|
|
PyReadline
|
|
|
\family default
|
|
|
, has been absorbed by the IPython team (J�rgen Stenarson, in particular),
|
|
|
and it continues to be developed with new features, as well as being distribute
|
|
|
d directly from the IPython site.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
PyReadline
|
|
|
\family default
|
|
|
extension requires
|
|
|
\family typewriter
|
|
|
CTypes
|
|
|
\family default
|
|
|
and the windows IPython installer needs
|
|
|
\family typewriter
|
|
|
PyWin32
|
|
|
\family default
|
|
|
, so in all you need:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
|
|
|
\family typewriter
|
|
|
PyWin32
|
|
|
\family default
|
|
|
from
|
|
|
\begin_inset LatexCommand \htmlurl{http://sourceforge.net/projects/pywin32}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
|
|
|
\family typewriter
|
|
|
PyReadline
|
|
|
\family default
|
|
|
for Windows from
|
|
|
\begin_inset LatexCommand \htmlurl{http://ipython.scipy.org/moin/PyReadline/Intro}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
That page contains further details on using and configuring the system
|
|
|
to your liking.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Finally,
|
|
|
\emph on
|
|
|
only
|
|
|
\emph default
|
|
|
if you are using Python 2.3 or 2.4, you need
|
|
|
\family typewriter
|
|
|
CTypes
|
|
|
\family default
|
|
|
from
|
|
|
\begin_inset LatexCommand \htmlurl{http://starship.python.net/crew/theller/ctypes}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
(you
|
|
|
\emph on
|
|
|
must
|
|
|
\emph default
|
|
|
use version 0.9.1 or newer).
|
|
|
This package is included in Python 2.5, so you don't need to manually get
|
|
|
it if your Python version is 2.5 or newer.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
Warning about a broken readline-like library:
|
|
|
\series default
|
|
|
several users have reported problems stemming from using the pseudo-readline
|
|
|
library at
|
|
|
\begin_inset LatexCommand \htmlurl{http://newcenturycomputers.net/projects/readline.html}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
This is a broken library which, while called readline, only implements
|
|
|
an incomplete subset of the readline API.
|
|
|
Since it is still called readline, it fools IPython's detection mechanisms
|
|
|
and causes unpredictable crashes later.
|
|
|
If you wish to use IPython under Windows, you must NOT use this library,
|
|
|
which for all purposes is (at least as of version 1.6) terminally broken.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Installation procedure
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Once you have the above installed, from the IPython download directory grab
|
|
|
the
|
|
|
\family typewriter
|
|
|
ipython-XXX.win32.exe
|
|
|
\family default
|
|
|
file, where
|
|
|
\family typewriter
|
|
|
XXX
|
|
|
\family default
|
|
|
represents the version number.
|
|
|
This is a regular windows executable installer, which you can simply double-cli
|
|
|
ck to install.
|
|
|
It will add an entry for IPython to your Start Menu, as well as registering
|
|
|
IPython in the Windows list of applications, so you can later uninstall
|
|
|
it from the Control Panel.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython tries to install the configuration information in a directory named
|
|
|
|
|
|
\family typewriter
|
|
|
.ipython
|
|
|
\family default
|
|
|
(
|
|
|
\family typewriter
|
|
|
_ipython
|
|
|
\family default
|
|
|
under Windows) located in your `home' directory.
|
|
|
IPython sets this directory by looking for a
|
|
|
\family typewriter
|
|
|
HOME
|
|
|
\family default
|
|
|
environment variable; if such a variable does not exist, it uses
|
|
|
\family typewriter
|
|
|
HOMEDRIVE
|
|
|
\backslash
|
|
|
HOMEPATH
|
|
|
\family default
|
|
|
(these are always defined by Windows).
|
|
|
This typically gives something like
|
|
|
\family typewriter
|
|
|
C:
|
|
|
\backslash
|
|
|
Documents and Settings
|
|
|
\backslash
|
|
|
YourUserName
|
|
|
\family default
|
|
|
, but your local details may vary.
|
|
|
In this directory you will find all the files that configure IPython's
|
|
|
defaults, and you can put there your profiles and extensions.
|
|
|
This directory is automatically added by IPython to
|
|
|
\family typewriter
|
|
|
sys.path
|
|
|
\family default
|
|
|
, so anything you place there can be found by
|
|
|
\family typewriter
|
|
|
import
|
|
|
\family default
|
|
|
statements.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Paragraph
|
|
|
Upgrading
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
For an IPython upgrade, you should first uninstall the previous version.
|
|
|
This will ensure that all files and directories (such as the documentation)
|
|
|
which carry embedded version strings in their names are properly removed.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Paragraph
|
|
|
Manual installation under Win32
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
In case the automatic installer does not work for some reason, you can download
|
|
|
the
|
|
|
\family typewriter
|
|
|
ipython-XXX.tar.gz
|
|
|
\family default
|
|
|
file, which contains the full IPython source distribution (the popular
|
|
|
WinZip can read
|
|
|
\family typewriter
|
|
|
.tar.gz
|
|
|
\family default
|
|
|
files).
|
|
|
After uncompressing the archive, you can install it at a command terminal
|
|
|
just like any other Python module, by using
|
|
|
\family typewriter
|
|
|
`python setup.py install'
|
|
|
\family default
|
|
|
.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
After the installation, run the supplied
|
|
|
\family typewriter
|
|
|
win32_manual_post_install.py
|
|
|
\family default
|
|
|
script, which creates the necessary Start Menu shortcuts for you.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:upgrade}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Upgrading from a previous version
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you are upgrading from a previous version of IPython, after doing the
|
|
|
routine installation described above, you should call IPython with the
|
|
|
|
|
|
\family typewriter
|
|
|
-upgrade
|
|
|
\family default
|
|
|
option the first time you run your new copy.
|
|
|
This will automatically update your configuration directory while preserving
|
|
|
copies of your old files.
|
|
|
You can then later merge back any personal customizations you may have
|
|
|
made into the new files.
|
|
|
It is a good idea to do this as there may be new options available in the
|
|
|
new configuration files which you will not have.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Under Windows, if you don't know how to call python scripts with arguments
|
|
|
from a command line, simply delete the old config directory and IPython
|
|
|
will make a new one.
|
|
|
Win2k and WinXP users will find it in
|
|
|
\family typewriter
|
|
|
C:
|
|
|
\backslash
|
|
|
Documents and Settings
|
|
|
\backslash
|
|
|
YourUserName
|
|
|
\backslash
|
|
|
_ipython
|
|
|
\family default
|
|
|
, and Win 9x users under
|
|
|
\family typewriter
|
|
|
C:
|
|
|
\backslash
|
|
|
Program Files
|
|
|
\backslash
|
|
|
IPython
|
|
|
\backslash
|
|
|
_ipython.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:good_config}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\begin_inset OptArg
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Initial configuration
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
ldots
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Initial configuration of your environment
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This section will help you set various things in your environment for your
|
|
|
IPython sessions to be as efficient as possible.
|
|
|
All of IPython's configuration information, along with several example
|
|
|
files, is stored in a directory named by default
|
|
|
\family typewriter
|
|
|
$HOME/.ipython
|
|
|
\family default
|
|
|
.
|
|
|
You can change this by defining the environment variable
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
, or at runtime with the command line option
|
|
|
\family typewriter
|
|
|
-ipythondir
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If all goes well, the first time you run IPython it should automatically
|
|
|
create a user copy of the config directory for you, based on its builtin
|
|
|
defaults.
|
|
|
You can look at the files it creates to learn more about configuring the
|
|
|
system.
|
|
|
The main file you will modify to configure IPython's behavior is called
|
|
|
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
(with a
|
|
|
\family typewriter
|
|
|
.ini
|
|
|
\family default
|
|
|
extension under Windows), included for reference in Sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:ipytonrc-sample}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
This file is very commented and has many variables you can change to suit
|
|
|
your taste, you can find more details in Sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:customization}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
Here we discuss the basic things you will want to make sure things are
|
|
|
working properly from the beginning.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:help-access}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Access to the Python help system
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This is true for Python in general (not just for IPython): you should have
|
|
|
an environment variable called
|
|
|
\family typewriter
|
|
|
PYTHONDOCS
|
|
|
\family default
|
|
|
pointing to the directory where your HTML Python documentation lives.
|
|
|
In my system it's
|
|
|
\family typewriter
|
|
|
/usr/share/doc/python-docs-2.3.4/html
|
|
|
\family default
|
|
|
, check your local details or ask your systems administrator.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This is the directory which holds the HTML version of the Python manuals.
|
|
|
Unfortunately it seems that different Linux distributions package these
|
|
|
files differently, so you may have to look around a bit.
|
|
|
Below I show the contents of this directory on my system for reference:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
[html]> ls
|
|
|
\newline
|
|
|
about.dat acks.html dist/ ext/ index.html lib/ modindex.html stdabout.dat
|
|
|
tut/ about.html api/ doc/ icons/ inst/ mac/ ref/ style.css
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You should really make sure this variable is correctly set so that Python's
|
|
|
pydoc-based help system works.
|
|
|
It is a powerful and convenient system with full access to the Python manuals
|
|
|
and all modules accessible to you.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Under Windows it seems that pydoc finds the documentation automatically,
|
|
|
so no extra setup appears necessary.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Editor
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
%edit
|
|
|
\family default
|
|
|
command (and its alias
|
|
|
\family typewriter
|
|
|
%ed
|
|
|
\family default
|
|
|
) will invoke the editor set in your environment as
|
|
|
\family typewriter
|
|
|
EDITOR
|
|
|
\family default
|
|
|
.
|
|
|
If this variable is not set, it will default to
|
|
|
\family typewriter
|
|
|
vi
|
|
|
\family default
|
|
|
under Linux/Unix and to
|
|
|
\family typewriter
|
|
|
notepad
|
|
|
\family default
|
|
|
under Windows.
|
|
|
You may want to set this variable properly and to a lightweight editor
|
|
|
which doesn't take too long to start (that is, something other than a new
|
|
|
instance of
|
|
|
\family typewriter
|
|
|
Emacs
|
|
|
\family default
|
|
|
).
|
|
|
This way you can edit multi-line code quickly and with the power of a real
|
|
|
editor right inside IPython.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you are a dedicated
|
|
|
\family typewriter
|
|
|
Emacs
|
|
|
\family default
|
|
|
user, you should set up the
|
|
|
\family typewriter
|
|
|
Emacs
|
|
|
\family default
|
|
|
server so that new requests are handled by the original process.
|
|
|
This means that almost no time is spent in handling the request (assuming
|
|
|
an
|
|
|
\family typewriter
|
|
|
Emacs
|
|
|
\family default
|
|
|
process is already running).
|
|
|
For this to work, you need to set your
|
|
|
\family typewriter
|
|
|
EDITOR
|
|
|
\family default
|
|
|
environment variable to
|
|
|
\family typewriter
|
|
|
'emacsclient'
|
|
|
\family default
|
|
|
.
|
|
|
|
|
|
\family typewriter
|
|
|
|
|
|
\family default
|
|
|
The code below, supplied by Francois Pinard, can then be used in your
|
|
|
\family typewriter
|
|
|
.emacs
|
|
|
\family default
|
|
|
file to enable the server:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
(defvar server-buffer-clients)
|
|
|
\newline
|
|
|
(when (and (fboundp 'server-start) (string-equal
|
|
|
(getenv "TERM") 'xterm))
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
(server-start)
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
(defun fp-kill-server-with-buffer-routine ()
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
(and server-buffer-clients (server-done)))
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
(add-hook 'kill-buffer-hook 'fp-kill-server-with-buffer-routine))
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can also set the value of this editor via the commmand-line option '-
|
|
|
\family typewriter
|
|
|
editor'
|
|
|
\family default
|
|
|
or in your
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
file.
|
|
|
This is useful if you wish to use specifically for IPython an editor different
|
|
|
from your typical default (and for Windows users who tend to use fewer
|
|
|
environment variables).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Color
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The default IPython configuration has most bells and whistles turned on
|
|
|
(they're pretty safe).
|
|
|
But there's one that
|
|
|
\emph on
|
|
|
may
|
|
|
\emph default
|
|
|
cause problems on some systems: the use of color on screen for displaying
|
|
|
information.
|
|
|
This is very useful, since IPython can show prompts and exception tracebacks
|
|
|
with various colors, display syntax-highlighted source code, and in general
|
|
|
make it easier to visually parse information.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following terminals seem to handle the color sequences fine:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Linux main text console, KDE Konsole, Gnome Terminal, E-term, rxvt, xterm.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
CDE terminal (tested under Solaris).
|
|
|
This one boldfaces light colors.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
(X)Emacs buffers.
|
|
|
See sec.
|
|
|
\begin_inset LatexCommand \ref{sec:emacs}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more details on using IPython with (X)Emacs.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
A Windows (XP/2k) command prompt
|
|
|
\emph on
|
|
|
with Gary Bishop's support extensions
|
|
|
\emph default
|
|
|
.
|
|
|
Gary's extensions are discussed in Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sub:Under-Windows}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
A Windows (XP/2k) CygWin shell.
|
|
|
Although some users have reported problems; it is not clear whether there
|
|
|
is an issue for everyone or only under specific configurations.
|
|
|
If you have full color support under cygwin, please post to the IPython
|
|
|
mailing list so this issue can be resolved for all users.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
These have shown problems:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Windows command prompt in WinXP/2k logged into a Linux machine via telnet
|
|
|
or ssh.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Windows native command prompt in WinXP/2k,
|
|
|
\emph on
|
|
|
without
|
|
|
\emph default
|
|
|
Gary Bishop's extensions.
|
|
|
Once Gary's readline library is installed, the normal WinXP/2k command
|
|
|
prompt works perfectly.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Currently the following color schemes are available:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
|
|
|
\family typewriter
|
|
|
NoColor
|
|
|
\family default
|
|
|
: uses no color escapes at all (all escapes are empty
|
|
|
\begin_inset Quotes eld
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\begin_inset Quotes eld
|
|
|
\end_inset
|
|
|
|
|
|
strings).
|
|
|
This 'scheme' is thus fully safe to use in any terminal.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
|
|
|
\family typewriter
|
|
|
Linux
|
|
|
\family default
|
|
|
: works well in Linux console type environments: dark background with light
|
|
|
fonts.
|
|
|
It uses bright colors for information, so it is difficult to read if you
|
|
|
have a light colored background.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
|
|
|
\family typewriter
|
|
|
LightBG
|
|
|
\family default
|
|
|
: the basic colors are similar to those in the
|
|
|
\family typewriter
|
|
|
Linux
|
|
|
\family default
|
|
|
scheme but darker.
|
|
|
It is easy to read in terminals with light backgrounds.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython uses colors for two main groups of things: prompts and tracebacks
|
|
|
which are directly printed to the terminal, and the object introspection
|
|
|
system which passes large sets of data through a pager.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Input/Output prompts and exception tracebacks
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can test whether the colored prompts and tracebacks work on your system
|
|
|
interactively by typing
|
|
|
\family typewriter
|
|
|
'%colors Linux'
|
|
|
\family default
|
|
|
at the prompt (use '
|
|
|
\family typewriter
|
|
|
%colors LightBG'
|
|
|
\family default
|
|
|
if your terminal has a light background).
|
|
|
If the input prompt shows garbage like:
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
[0;32mIn [[1;32m1[0;32m]: [0;00m
|
|
|
\family default
|
|
|
|
|
|
\newline
|
|
|
instead of (in color) something like:
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
In [1]:
|
|
|
\family default
|
|
|
|
|
|
\newline
|
|
|
this means that your terminal doesn't properly handle color escape sequences.
|
|
|
You can go to a 'no color' mode by typing '
|
|
|
\family typewriter
|
|
|
%colors NoColor
|
|
|
\family default
|
|
|
'.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can try using a different terminal emulator program (Emacs users, see
|
|
|
below).
|
|
|
To permanently set your color preferences, edit the file
|
|
|
\family typewriter
|
|
|
$HOME/.ipython/ipythonrc
|
|
|
\family default
|
|
|
and set the
|
|
|
\family typewriter
|
|
|
colors
|
|
|
\family default
|
|
|
option to the desired value.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Object details (types, docstrings, source code, etc.)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython has a set of special functions for studying the objects you are
|
|
|
working with, discussed in detail in Sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:dyn-object-info}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
But this system relies on passing information which is longer than your
|
|
|
screen through a data pager, such as the common Unix
|
|
|
\family typewriter
|
|
|
less
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
more
|
|
|
\family default
|
|
|
programs.
|
|
|
In order to be able to see this information in color, your pager needs
|
|
|
to be properly configured.
|
|
|
I strongly recommend using
|
|
|
\family typewriter
|
|
|
less
|
|
|
\family default
|
|
|
instead of
|
|
|
\family typewriter
|
|
|
more
|
|
|
\family default
|
|
|
, as it seems that
|
|
|
\family typewriter
|
|
|
more
|
|
|
\family default
|
|
|
simply can not understand colored text correctly.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
In order to configure
|
|
|
\family typewriter
|
|
|
less
|
|
|
\family default
|
|
|
as your default pager, do the following:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Set the environment
|
|
|
\family typewriter
|
|
|
PAGER
|
|
|
\family default
|
|
|
variable to
|
|
|
\family typewriter
|
|
|
less
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Set the environment
|
|
|
\family typewriter
|
|
|
LESS
|
|
|
\family default
|
|
|
variable to
|
|
|
\family typewriter
|
|
|
-r
|
|
|
\family default
|
|
|
(plus any other options you always want to pass to
|
|
|
\family typewriter
|
|
|
less
|
|
|
\family default
|
|
|
by default).
|
|
|
This tells
|
|
|
\family typewriter
|
|
|
less
|
|
|
\family default
|
|
|
to properly interpret control sequences, which is how color information
|
|
|
is given to your terminal.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
For the
|
|
|
\family typewriter
|
|
|
csh
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
tcsh
|
|
|
\family default
|
|
|
shells, add to your
|
|
|
\family typewriter
|
|
|
~/.cshrc
|
|
|
\family default
|
|
|
file the lines:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
setenv PAGER less
|
|
|
\newline
|
|
|
setenv LESS -r
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
There is similar syntax for other Unix shells, look at your system documentation
|
|
|
for details.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you are on a system which lacks proper data pagers (such as Windows),
|
|
|
IPython will use a very limited builtin pager.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:emacs}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
(X)Emacs configuration
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Thanks to the work of Alexander Schmolck and Prabhu Ramachandran, currently
|
|
|
(X)Emacs and IPython get along very well.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
Important note:
|
|
|
\series default
|
|
|
You will need to use a recent enough version of
|
|
|
\family typewriter
|
|
|
python-mode.el
|
|
|
\family default
|
|
|
, along with the file
|
|
|
\family typewriter
|
|
|
ipython.el
|
|
|
\family default
|
|
|
.
|
|
|
You can check that the version you have of
|
|
|
\family typewriter
|
|
|
python-mode.el
|
|
|
\family default
|
|
|
is new enough by either looking at the revision number in the file itself,
|
|
|
or asking for it in (X)Emacs via
|
|
|
\family typewriter
|
|
|
M-x py-version
|
|
|
\family default
|
|
|
.
|
|
|
Versions 4.68 and newer contain the necessary fixes for proper IPython support.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The file
|
|
|
\family typewriter
|
|
|
ipython.el
|
|
|
\family default
|
|
|
is included with the IPython distribution, in the documentation directory
|
|
|
(where this manual resides in PDF and HTML formats).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Once you put these files in your Emacs path, all you need in your
|
|
|
\family typewriter
|
|
|
.emacs
|
|
|
\family default
|
|
|
file is:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
(require 'ipython)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This should give you full support for executing code snippets via IPython,
|
|
|
opening IPython as your Python shell via
|
|
|
\family typewriter
|
|
|
C-c\InsetSpace ~
|
|
|
!
|
|
|
\family default
|
|
|
, etc.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you happen to get garbage instead of colored prompts as described in
|
|
|
the previous section, you may need to set also in your
|
|
|
\family typewriter
|
|
|
.emacs
|
|
|
\family default
|
|
|
file:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
(setq ansi-color-for-comint-mode t)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection*
|
|
|
Notes
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
There is one caveat you should be aware of: you must start the IPython shell
|
|
|
|
|
|
\emph on
|
|
|
before
|
|
|
\emph default
|
|
|
attempting to execute any code regions via
|
|
|
\family typewriter
|
|
|
C-c\InsetSpace ~
|
|
|
|
|
|
|
\family default
|
|
|
.
|
|
|
Simply type
|
|
|
\family typewriter
|
|
|
C-c\InsetSpace ~
|
|
|
!
|
|
|
\family default
|
|
|
to start IPython before passing any code regions to the interpreter, and
|
|
|
you shouldn't experience any problems.
|
|
|
\newline
|
|
|
This is due to a bug in Python itself,
|
|
|
which has been fixed for Python 2.3, but exists as of Python 2.2.2 (reported
|
|
|
as SF bug [ 737947 ]).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
The (X)Emacs support is maintained by Alexander Schmolck, so all comments/reques
|
|
|
ts should be directed to him through the IPython mailing lists.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
This code is still somewhat experimental so it's a bit rough around the
|
|
|
edges (although in practice, it works quite well).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Be aware that if you customize
|
|
|
\family typewriter
|
|
|
py-python-command
|
|
|
\family default
|
|
|
previously, this value will override what
|
|
|
\family typewriter
|
|
|
ipython.el
|
|
|
\family default
|
|
|
does (because loading the customization variables comes later).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:quick_tips}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Quick tips
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython can be used as an improved replacement for the Python prompt, and
|
|
|
for that you don't really need to read any more of this manual.
|
|
|
But in this section we'll try to summarize a few tips on how to make the
|
|
|
most effective use of it for everyday Python development, highlighting
|
|
|
things you might miss in the rest of the manual (which is getting long).
|
|
|
We'll give references to parts in the manual which provide more detail
|
|
|
when appropriate.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following article by Jeremy Jones provides an introductory tutorial
|
|
|
about IPython:
|
|
|
\newline
|
|
|
|
|
|
\begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2005/01/27/ipython.html}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
The TAB key.
|
|
|
TAB-completion, especially for attributes, is a convenient way to explore
|
|
|
the structure of any object you're dealing with.
|
|
|
Simply type
|
|
|
\family typewriter
|
|
|
object_name.<TAB>
|
|
|
\family default
|
|
|
and a list of the object's attributes will be printed (see sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:readline}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more).
|
|
|
Tab completion also works on file and directory names, which combined with
|
|
|
IPython's alias system allows you to do from within IPython many of the
|
|
|
things you normally would need the system shell for.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Explore your objects.
|
|
|
Typing
|
|
|
\family typewriter
|
|
|
object_name?
|
|
|
\family default
|
|
|
will print all sorts of details about any object, including docstrings,
|
|
|
function definition lines (for call arguments) and constructor details
|
|
|
for classes.
|
|
|
The magic commands
|
|
|
\family typewriter
|
|
|
%pdoc
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
%pdef
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
%psource
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
%pfile
|
|
|
\family default
|
|
|
will respectively print the docstring, function definition line, full source
|
|
|
code and the complete file for any object (when they can be found).
|
|
|
If automagic is on (it is by default), you don't need to type the '
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
' explicitly.
|
|
|
See sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:dyn-object-info}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
The
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
magic command allows you to run any python script and load all of its data
|
|
|
directly into the interactive namespace.
|
|
|
Since the file is re-read from disk each time, changes you make to it are
|
|
|
reflected immediately (in contrast to the behavior of
|
|
|
\family typewriter
|
|
|
import
|
|
|
\family default
|
|
|
).
|
|
|
I rarely use
|
|
|
\family typewriter
|
|
|
import
|
|
|
\family default
|
|
|
for code I am testing, relying on
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
instead.
|
|
|
See sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:magic}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more on this and other magic commands, or type the name of any magic
|
|
|
command and ? to get details on it.
|
|
|
See also sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:dreload}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for a recursive reload command.
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
also has special flags for timing the execution of your scripts (
|
|
|
\family typewriter
|
|
|
-t
|
|
|
\family default
|
|
|
) and for executing them under the control of either Python's
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
debugger (
|
|
|
\family typewriter
|
|
|
-d
|
|
|
\family default
|
|
|
) or profiler (
|
|
|
\family typewriter
|
|
|
-p
|
|
|
\family default
|
|
|
).
|
|
|
With all of these,
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
can be used as the main tool for efficient interactive development of code
|
|
|
which you write in your editor of choice.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Use the Python debugger,
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
|
|
|
\begin_inset Foot
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Thanks to Christian Hart and Matthew Arnison for the suggestions leading
|
|
|
to IPython's improved debugger and profiler support.
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
The
|
|
|
\family typewriter
|
|
|
%pdb
|
|
|
\family default
|
|
|
command allows you to toggle on and off the automatic invocation of an
|
|
|
IPython-enhanced
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
debugger (with coloring, tab completion and more) at any uncaught exception.
|
|
|
The advantage of this is that
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
starts
|
|
|
\emph on
|
|
|
inside
|
|
|
\emph default
|
|
|
the function where the exception occurred, with all data still available.
|
|
|
You can print variables, see code, execute statements and even walk up
|
|
|
and down the call stack to track down the true source of the problem (which
|
|
|
often is many layers in the stack above where the exception gets triggered).
|
|
|
\newline
|
|
|
Runn
|
|
|
ing programs with
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
and pdb active can be an efficient to develop and debug code, in many cases
|
|
|
eliminating the need for
|
|
|
\family typewriter
|
|
|
print
|
|
|
\family default
|
|
|
statements or external debugging tools.
|
|
|
I often simply put a
|
|
|
\family typewriter
|
|
|
1/0
|
|
|
\family default
|
|
|
in a place where I want to take a look so that pdb gets called, quickly
|
|
|
view whatever variables I need to or test various pieces of code and then
|
|
|
remove the
|
|
|
\family typewriter
|
|
|
1/0
|
|
|
\family default
|
|
|
.
|
|
|
\newline
|
|
|
Note also that `
|
|
|
\family typewriter
|
|
|
%run -d
|
|
|
\family default
|
|
|
' activates
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
and automatically sets initial breakpoints for you to step through your
|
|
|
code, watch variables, etc.
|
|
|
See Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:cache_output}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for details.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Use the output cache.
|
|
|
All output results are automatically stored in a global dictionary named
|
|
|
|
|
|
\family typewriter
|
|
|
Out
|
|
|
\family default
|
|
|
and variables named
|
|
|
\family typewriter
|
|
|
_1
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
_2
|
|
|
\family default
|
|
|
, etc.
|
|
|
alias them.
|
|
|
For example, the result of input line 4 is available either as
|
|
|
\family typewriter
|
|
|
Out[4]
|
|
|
\family default
|
|
|
or as
|
|
|
\family typewriter
|
|
|
_4
|
|
|
\family default
|
|
|
.
|
|
|
Additionally, three variables named
|
|
|
\family typewriter
|
|
|
_
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
__
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
___
|
|
|
\family default
|
|
|
are always kept updated with the for the last three results.
|
|
|
This allows you to recall any previous result and further use it for new
|
|
|
calculations.
|
|
|
See Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:cache_output}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Put a '
|
|
|
\family typewriter
|
|
|
;
|
|
|
\family default
|
|
|
' at the end of a line to supress the printing of output.
|
|
|
This is useful when doing calculations which generate long output you are
|
|
|
not interested in seeing.
|
|
|
The
|
|
|
\family typewriter
|
|
|
_*
|
|
|
\family default
|
|
|
variables and the
|
|
|
\family typewriter
|
|
|
Out[]
|
|
|
\family default
|
|
|
list do get updated with the contents of the output, even if it is not
|
|
|
printed.
|
|
|
You can thus still access the generated results this way for further processing.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
A similar system exists for caching input.
|
|
|
All input is stored in a global list called
|
|
|
\family typewriter
|
|
|
In
|
|
|
\family default
|
|
|
, so you can re-execute lines 22 through 28 plus line 34 by typing
|
|
|
\family typewriter
|
|
|
'exec In[22:29]+In[34]'
|
|
|
\family default
|
|
|
(using Python slicing notation).
|
|
|
If you need to execute the same set of lines often, you can assign them
|
|
|
to a macro with the
|
|
|
\family typewriter
|
|
|
%macro
|
|
|
\family default
|
|
|
|
|
|
\family typewriter
|
|
|
function.
|
|
|
|
|
|
\family default
|
|
|
See sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:cache_input}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Use your input history.
|
|
|
The
|
|
|
\family typewriter
|
|
|
%hist
|
|
|
\family default
|
|
|
command can show you all previous input, without line numbers if desired
|
|
|
(option
|
|
|
\family typewriter
|
|
|
-n
|
|
|
\family default
|
|
|
) so you can directly copy and paste code either back in IPython or in a
|
|
|
text editor.
|
|
|
You can also save all your history by turning on logging via
|
|
|
\family typewriter
|
|
|
%logstart
|
|
|
\family default
|
|
|
; these logs can later be either reloaded as IPython sessions or used as
|
|
|
code for your programs.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Define your own system aliases.
|
|
|
Even though IPython gives you access to your system shell via the
|
|
|
\family typewriter
|
|
|
!
|
|
|
\family default
|
|
|
prefix, it is convenient to have aliases to the system commands you use
|
|
|
most often.
|
|
|
This allows you to work seamlessly from inside IPython with the same commands
|
|
|
you are used to in your system shell.
|
|
|
\newline
|
|
|
IPython comes with some pre-defined
|
|
|
aliases and a complete system for changing directories, both via a stack
|
|
|
(see
|
|
|
\family typewriter
|
|
|
%pushd
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
%popd
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
%dhist
|
|
|
\family default
|
|
|
) and via direct
|
|
|
\family typewriter
|
|
|
%cd
|
|
|
\family default
|
|
|
.
|
|
|
The latter keeps a history of visited directories and allows you to go
|
|
|
to any previously visited one.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Use Python to manipulate the results of system commands.
|
|
|
The `
|
|
|
\family typewriter
|
|
|
!!
|
|
|
\family default
|
|
|
' special syntax, and the
|
|
|
\family typewriter
|
|
|
%sc
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
%sx
|
|
|
\family default
|
|
|
magic commands allow you to capture system output into Python variables.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Expand python variables when calling the shell (either via
|
|
|
\family typewriter
|
|
|
`!'
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
`!!'
|
|
|
\family default
|
|
|
or via aliases) by prepending a
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
in front of them.
|
|
|
You can also expand complete python expressions.
|
|
|
See sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sub:System-shell-access}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Use profiles to maintain different configurations (modules to load, function
|
|
|
definitions, option settings) for particular tasks.
|
|
|
You can then have customized versions of IPython for specific purposes.
|
|
|
See sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:profiles}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Embed IPython in your programs.
|
|
|
A few lines of code are enough to load a complete IPython inside your own
|
|
|
programs, giving you the ability to work with your data interactively after
|
|
|
automatic processing has been completed.
|
|
|
See sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:embed}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Use the Python profiler.
|
|
|
When dealing with performance issues, the
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
command with a
|
|
|
\family typewriter
|
|
|
-p
|
|
|
\family default
|
|
|
option allows you to run complete programs under the control of the Python
|
|
|
profiler.
|
|
|
The
|
|
|
\family typewriter
|
|
|
%prun
|
|
|
\family default
|
|
|
command does a similar job for single Python expressions (like function
|
|
|
calls).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Use the IPython.demo.Demo class to load any Python script as an interactive
|
|
|
demo.
|
|
|
With a minimal amount of simple markup, you can control the execution of
|
|
|
the script, stopping as needed.
|
|
|
See sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:interactive-demos}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
Run your doctests from within IPython for development and debugging.
|
|
|
The special
|
|
|
\family typewriter
|
|
|
%doctest_mode
|
|
|
\family default
|
|
|
command toggles a mode where the prompt, output and exceptions display
|
|
|
matches as closely as possible that of the default Python interpreter.
|
|
|
In addition, this mode allows you to directly paste in code that contains
|
|
|
leading `
|
|
|
\family typewriter
|
|
|
>>>
|
|
|
\family default
|
|
|
' prompts, even if they have extra leading whitespace (as is common in doctest
|
|
|
files).
|
|
|
This combined with the `
|
|
|
\family typewriter
|
|
|
%history -t
|
|
|
\family default
|
|
|
n' call to see your translated history (with these extra prompts removed
|
|
|
and no line numbers) allows for an easy doctest workflow, where you can
|
|
|
go from doctest to interactive execution to pasting into valid Python code
|
|
|
as needed.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Source code handling tips
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython is a line-oriented program, without full control of the terminal.
|
|
|
Therefore, it doesn't support true multiline editing.
|
|
|
However, it has a number of useful tools to help you in dealing effectively
|
|
|
with more complex editing.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
%edit
|
|
|
\family default
|
|
|
command gives a reasonable approximation of multiline editing, by invoking
|
|
|
your favorite editor on the spot.
|
|
|
IPython will execute the code you type in there as if it were typed interactive
|
|
|
ly.
|
|
|
Type
|
|
|
\family typewriter
|
|
|
%edit?
|
|
|
\family default
|
|
|
for the full details on the edit command.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you have typed various commands during a session, which you'd like to
|
|
|
reuse, IPython provides you with a number of tools.
|
|
|
Start by using
|
|
|
\family typewriter
|
|
|
%hist
|
|
|
\family default
|
|
|
to see your input history, so you can see the line numbers of all input.
|
|
|
Let us say that you'd like to reuse lines 10 through 20, plus lines 24
|
|
|
and 28.
|
|
|
All the commands below can operate on these with the syntax
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
%command 10-20 24 28
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
where the command given can be:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
|
|
|
\family typewriter
|
|
|
%macro <macroname>
|
|
|
\family default
|
|
|
: this stores the lines into a variable which, when called at the prompt,
|
|
|
re-executes the input.
|
|
|
Macros can be edited later using
|
|
|
\family typewriter
|
|
|
`%edit macroname
|
|
|
\family default
|
|
|
', and they can be stored persistently across sessions with `
|
|
|
\family typewriter
|
|
|
%store macroname
|
|
|
\family default
|
|
|
' (the storage system is per-profile).
|
|
|
The combination of quick macros, persistent storage and editing, allows
|
|
|
you to easily refine quick-and-dirty interactive input into permanent utilities
|
|
|
, always available both in IPython and as files for general reuse.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
|
|
|
\family typewriter
|
|
|
%edit
|
|
|
\family default
|
|
|
: this will open a text editor with those lines pre-loaded for further modificat
|
|
|
ion.
|
|
|
It will then execute the resulting file's contents as if you had typed
|
|
|
it at the prompt.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Itemize
|
|
|
|
|
|
\family typewriter
|
|
|
%save <filename>
|
|
|
\family default
|
|
|
: this saves the lines directly to a named file on disk.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
While
|
|
|
\family typewriter
|
|
|
%macro
|
|
|
\family default
|
|
|
saves input lines into memory for interactive re-execution, sometimes you'd
|
|
|
like to save your input directly to a file.
|
|
|
The
|
|
|
\family typewriter
|
|
|
%save
|
|
|
\family default
|
|
|
magic does this: its input sytnax is the same as
|
|
|
\family typewriter
|
|
|
%macro
|
|
|
\family default
|
|
|
, but it saves your input directly to a Python file.
|
|
|
Note that the
|
|
|
\family typewriter
|
|
|
%logstart
|
|
|
\family default
|
|
|
command also saves input, but it logs
|
|
|
\emph on
|
|
|
all
|
|
|
\emph default
|
|
|
input to disk (though you can temporarily suspend it and reactivate it
|
|
|
with
|
|
|
\family typewriter
|
|
|
%logoff/%logon
|
|
|
\family default
|
|
|
);
|
|
|
\family typewriter
|
|
|
%save
|
|
|
\family default
|
|
|
allows you to select which lines of input you need to save.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection*
|
|
|
Lightweight 'version control'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
When you call
|
|
|
\family typewriter
|
|
|
%edit
|
|
|
\family default
|
|
|
with no arguments, IPython opens an empty editor with a temporary file,
|
|
|
and it returns the contents of your editing session as a string variable.
|
|
|
Thanks to IPython's output caching mechanism, this is automatically stored:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
In [1]: %edit
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
IPython will make a temporary file named: /tmp/ipython_edit_yR-HCN.py
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
Editing...
|
|
|
done.
|
|
|
Executing edited code...
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
hello - this is a temporary file
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
Out[1]: "print 'hello - this is a temporary file'
|
|
|
\backslash
|
|
|
n"
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Now, if you call
|
|
|
\family typewriter
|
|
|
`%edit -p'
|
|
|
\family default
|
|
|
, IPython tries to open an editor with the same data as the last time you
|
|
|
used
|
|
|
\family typewriter
|
|
|
%edit
|
|
|
\family default
|
|
|
.
|
|
|
So if you haven't used
|
|
|
\family typewriter
|
|
|
%edit
|
|
|
\family default
|
|
|
in the meantime, this same contents will reopen; however, it will be done
|
|
|
in a
|
|
|
\emph on
|
|
|
new file
|
|
|
\emph default
|
|
|
.
|
|
|
This means that if you make changes and you later want to find an old version,
|
|
|
you can always retrieve it by using its output number, via
|
|
|
\family typewriter
|
|
|
`%edit _NN'
|
|
|
\family default
|
|
|
, where
|
|
|
\family typewriter
|
|
|
NN
|
|
|
\family default
|
|
|
is the number of the output prompt.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Continuing with the example above, this should illustrate this idea:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
In [2]: edit -p
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
IPython will make a temporary file named: /tmp/ipython_edit_nA09Qk.py
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
Editing...
|
|
|
done.
|
|
|
Executing edited code...
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
hello - now I made some changes
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
Out[2]: "print 'hello - now I made some changes'
|
|
|
\backslash
|
|
|
n"
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
In [3]: edit _1
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
IPython will make a temporary file named: /tmp/ipython_edit_gy6-zD.py
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
Editing...
|
|
|
done.
|
|
|
Executing edited code...
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
hello - this is a temporary file
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
IPython version control at work :)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
Out[3]: "print 'hello - this is a temporary file'
|
|
|
\backslash
|
|
|
nprint 'IPython version control at work :)'
|
|
|
\backslash
|
|
|
n"
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This section was written after a contribution by Alexander Belchenko on
|
|
|
the IPython user list.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Effective logging
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
A very useful suggestion sent in by Robert Kern follows:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
I recently happened on a nifty way to keep tidy per-project log files.
|
|
|
I made a profile for my project (which is called "parkfield").
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
include ipythonrc
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
# cancel earlier logfile invocation:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
logfile ''
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
execute import time
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
execute __cmd = '/Users/kern/research/logfiles/parkfield-%s.log rotate'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
execute __IP.magic_logstart(__cmd % time.strftime('%Y-%m-%d'))
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
I also added a shell alias for convenience:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
alias parkfield="ipython -pylab -profile parkfield"
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Now I have a nice little directory with everything I ever type in, organized
|
|
|
by project and date.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
Contribute your own:
|
|
|
\series default
|
|
|
If you have your own favorite tip on using IPython efficiently for a certain
|
|
|
task (especially things which can't be done in the normal Python interpreter),
|
|
|
don't hesitate to send it!
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
Command-line use
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You start IPython with the command:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
$ ipython [options] files
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If invoked with no options, it executes all the files listed in sequence
|
|
|
and drops you into the interpreter while still acknowledging any options
|
|
|
you may have set in your ipythonrc file.
|
|
|
This behavior is different from standard Python, which when called as
|
|
|
\family typewriter
|
|
|
python -i
|
|
|
\family default
|
|
|
will only execute one file and ignore your configuration setup.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Please note that some of the configuration options are not available at
|
|
|
the command line, simply because they are not practical here.
|
|
|
Look into your ipythonrc configuration file for details on those.
|
|
|
This file typically installed in the
|
|
|
\family typewriter
|
|
|
$HOME/.ipython
|
|
|
\family default
|
|
|
directory.
|
|
|
For Windows users,
|
|
|
\family typewriter
|
|
|
$HOME
|
|
|
\family default
|
|
|
resolves to
|
|
|
\family typewriter
|
|
|
C:
|
|
|
\backslash
|
|
|
|
|
|
\backslash
|
|
|
Documents and Settings
|
|
|
\backslash
|
|
|
|
|
|
\backslash
|
|
|
YourUserName
|
|
|
\family default
|
|
|
in most instances.
|
|
|
In the rest of this text, we will refer to this directory as
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:threading-opts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Special Threading Options
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following special options are ONLY valid at the beginning of the command
|
|
|
line, and not later.
|
|
|
This is because they control the initial- ization of ipython itself, before
|
|
|
the normal option-handling mechanism is active.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-gthread,\InsetSpace ~
|
|
|
-qthread,\InsetSpace ~
|
|
|
-q4thread,\InsetSpace ~
|
|
|
-wthread,\InsetSpace ~
|
|
|
-pylab:
|
|
|
\family default
|
|
|
\series default
|
|
|
Only
|
|
|
\emph on
|
|
|
one
|
|
|
\emph default
|
|
|
of these can be given, and it can only be given as the first option passed
|
|
|
to IPython (it will have no effect in any other position).
|
|
|
They provide threading support for the GTK, Qt (versions 3 and 4) and WXPython
|
|
|
toolkits, and for the matplotlib library.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
With any of the first four options, IPython starts running a separate thread
|
|
|
for the graphical toolkit's operation, so that you can open and control
|
|
|
graphical elements from within an IPython command line, without blocking.
|
|
|
All four provide essentially the same functionality, respectively for GTK,
|
|
|
Qt3, Qt4 and WXWidgets (via their Python interfaces).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
Note that with
|
|
|
\family typewriter
|
|
|
-wthread
|
|
|
\family default
|
|
|
, you can additionally use the -wxversion option to request a specific version
|
|
|
of wx to be used.
|
|
|
This requires that you have the
|
|
|
\family typewriter
|
|
|
wxversion
|
|
|
\family default
|
|
|
Python module installed, which is part of recent wxPython distributions.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
If
|
|
|
\family typewriter
|
|
|
-pylab
|
|
|
\family default
|
|
|
is given, IPython loads special support for the mat plotlib library (
|
|
|
\begin_inset LatexCommand \htmlurl{http://matplotlib.sourceforge.net}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
), allowing interactive usage of any of its backends as defined in the user's
|
|
|
|
|
|
\family typewriter
|
|
|
~/.matplotlib/matplotlibrc
|
|
|
\family default
|
|
|
file.
|
|
|
It automatically activates GTK, Qt or WX threading for IPyhton if the choice
|
|
|
of matplotlib backend requires it.
|
|
|
It also modifies the
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
command to correctly execute (without blocking) any matplotlib-based script
|
|
|
which calls
|
|
|
\family typewriter
|
|
|
show()
|
|
|
\family default
|
|
|
at the end.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-tk
|
|
|
\family default
|
|
|
\series default
|
|
|
The
|
|
|
\family typewriter
|
|
|
-g/q/q4/wthread
|
|
|
\family default
|
|
|
options, and
|
|
|
\family typewriter
|
|
|
-pylab
|
|
|
\family default
|
|
|
(if matplotlib is configured to use GTK, Qt3, Qt4 or WX), will normally
|
|
|
block Tk graphical interfaces.
|
|
|
This means that when either GTK, Qt or WX threading is active, any attempt
|
|
|
to open a Tk GUI will result in a dead window, and possibly cause the Python
|
|
|
interpreter to crash.
|
|
|
An extra option,
|
|
|
\family typewriter
|
|
|
-tk
|
|
|
\family default
|
|
|
, is available to address this issue.
|
|
|
It can
|
|
|
\emph on
|
|
|
only
|
|
|
\emph default
|
|
|
be given as a
|
|
|
\emph on
|
|
|
second
|
|
|
\emph default
|
|
|
option after any of the above (
|
|
|
\family typewriter
|
|
|
-gthread
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
-wthread
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
-pylab
|
|
|
\family default
|
|
|
).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
If
|
|
|
\family typewriter
|
|
|
-tk
|
|
|
\family default
|
|
|
is given, IPython will try to coordinate Tk threading with GTK, Qt or WX.
|
|
|
This is however potentially unreliable, and you will have to test on your
|
|
|
platform and Python configuration to determine whether it works for you.
|
|
|
Debian users have reported success, apparently due to the fact that Debian
|
|
|
builds all of Tcl, Tk, Tkinter and Python with pthreads support.
|
|
|
Under other Linux environments (such as Fedora Core 2/3), this option has
|
|
|
caused random crashes and lockups of the Python interpreter.
|
|
|
Under other operating systems (Mac OSX and Windows), you'll need to try
|
|
|
it to find out, since currently no user reports are available.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
There is unfortunately no way for IPython to determine at run time whether
|
|
|
|
|
|
\family typewriter
|
|
|
-tk
|
|
|
\family default
|
|
|
will work reliably or not, so you will need to do some experiments before
|
|
|
relying on it for regular work.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:cmd-line-opts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Regular Options
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
After the above threading options have been given, regular options can follow
|
|
|
in any order.
|
|
|
All options can be abbreviated to their shortest non-ambiguous form and
|
|
|
are case-sensitive.
|
|
|
One or two dashes can be used.
|
|
|
Some options have an alternate short form, indicated after a
|
|
|
\family typewriter
|
|
|
|
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Most options can also be set from your ipythonrc configuration file.
|
|
|
See the provided example for more details on what the options do.
|
|
|
Options given at the command line override the values set in the ipythonrc
|
|
|
file.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
All options with a
|
|
|
\family typewriter
|
|
|
[no]
|
|
|
\family default
|
|
|
prepended can be specified in negated form (
|
|
|
\family typewriter
|
|
|
-nooption
|
|
|
\family default
|
|
|
instead of
|
|
|
\family typewriter
|
|
|
-option
|
|
|
\family default
|
|
|
) to turn the feature off.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-help
|
|
|
\family default
|
|
|
\series default
|
|
|
: print a help message and exit.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-pylab:
|
|
|
\family default
|
|
|
\series default
|
|
|
this can
|
|
|
\emph on
|
|
|
only
|
|
|
\emph default
|
|
|
be given as the
|
|
|
\emph on
|
|
|
first
|
|
|
\emph default
|
|
|
option passed to IPython (it will have no effect in any other position).
|
|
|
It adds special support for the matplotlib library (
|
|
|
\begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
), allowing interactive usage of any of its backends as defined in the user's
|
|
|
|
|
|
\family typewriter
|
|
|
.matplotlibrc
|
|
|
\family default
|
|
|
file.
|
|
|
It automatically activates GTK or WX threading for IPyhton if the choice
|
|
|
of matplotlib backend requires it.
|
|
|
It also modifies the
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
command to correctly execute (without blocking) any matplotlib-based script
|
|
|
which calls
|
|
|
\family typewriter
|
|
|
show()
|
|
|
\family default
|
|
|
at the end.
|
|
|
See Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:matplotlib-support}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more details.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-autocall <val>:
|
|
|
\family default
|
|
|
\series default
|
|
|
Make IPython automatically call any callable object even if you didn't
|
|
|
type explicit parentheses.
|
|
|
For example, `str 43' becomes `str(43)' automatically.
|
|
|
The value can be `0' to disable the feature, `1' for
|
|
|
\emph on
|
|
|
smart
|
|
|
\emph default
|
|
|
autocall, where it is not applied if there are no more arguments on the
|
|
|
line, and `2' for
|
|
|
\emph on
|
|
|
full
|
|
|
\emph default
|
|
|
autocall, where all callable objects are automatically called (even if
|
|
|
no arguments are present).
|
|
|
The default is `1'.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]autoindent:
|
|
|
\family default
|
|
|
\series default
|
|
|
Turn automatic indentation on/off.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]automagic
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
make magic commands automatic (without needing their first character to
|
|
|
be
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
).
|
|
|
Type
|
|
|
\family typewriter
|
|
|
%magic
|
|
|
\family default
|
|
|
at the IPython prompt for more information.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]autoedit_syntax:
|
|
|
\family default
|
|
|
\series default
|
|
|
When a syntax error occurs after editing a file, automatically open the
|
|
|
file to the trouble causing line for convenient fixing.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]banner
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
Print the initial information banner (default on).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-c\InsetSpace ~
|
|
|
<command>:
|
|
|
\family default
|
|
|
\series default
|
|
|
execute the given command string, and set sys.argv to
|
|
|
\family typewriter
|
|
|
['c']
|
|
|
\family default
|
|
|
.
|
|
|
This is similar to the
|
|
|
\family typewriter
|
|
|
-c
|
|
|
\family default
|
|
|
option in the normal Python interpreter.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-cache_size|cs\InsetSpace ~
|
|
|
<n>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
size of the output cache (maximum number of entries to hold in memory).
|
|
|
The default is 1000, you can change it permanently in your config file.
|
|
|
Setting it to 0 completely disables the caching system, and the minimum
|
|
|
value accepted is 20 (if you provide a value less than 20, it is reset
|
|
|
to 0 and a warning is issued) This limit is defined because otherwise you'll
|
|
|
spend more time re-flushing a too small cache than working.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-classic|cl
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
Gives IPython a similar feel to the classic Python prompt.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-colors\InsetSpace ~
|
|
|
<scheme>:
|
|
|
\family default
|
|
|
\series default
|
|
|
Color scheme for prompts and exception reporting.
|
|
|
Currently implemented: NoColor, Linux and LightBG.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]color_info:
|
|
|
\family default
|
|
|
\series default
|
|
|
IPython can display information about objects via a set of functions, and
|
|
|
optionally can use colors for this, syntax highlighting source code and
|
|
|
various other elements.
|
|
|
However, because this information is passed through a pager (like 'less')
|
|
|
and many pagers get confused with color codes, this option is off by default.
|
|
|
You can test it and turn it on permanently in your ipythonrc file if it
|
|
|
works for you.
|
|
|
As a reference, the 'less' pager supplied with Mandrake 8.2 works ok, but
|
|
|
that in RedHat 7.2 doesn't.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
Test it and turn it on permanently if it works with your system.
|
|
|
The magic function
|
|
|
\family typewriter
|
|
|
%color_info
|
|
|
\family default
|
|
|
allows you to toggle this interactively for testing.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]debug
|
|
|
\family default
|
|
|
\series default
|
|
|
: Show information about the loading process.
|
|
|
Very useful to pin down problems with your configuration files or to get
|
|
|
details about session restores.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]deep_reload
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
IPython can use the
|
|
|
\family typewriter
|
|
|
deep_reload
|
|
|
\family default
|
|
|
module which reloads changes in modules recursively (it replaces the
|
|
|
\family typewriter
|
|
|
reload()
|
|
|
\family default
|
|
|
function, so you don't need to change anything to use it).
|
|
|
|
|
|
\family typewriter
|
|
|
deep_reload()
|
|
|
\family default
|
|
|
forces a full reload of modules whose code may have changed, which the
|
|
|
default
|
|
|
\family typewriter
|
|
|
reload()
|
|
|
\family default
|
|
|
function does not.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
When deep_reload is off, IPython will use the normal
|
|
|
\family typewriter
|
|
|
reload()
|
|
|
\family default
|
|
|
, but deep_reload will still be available as
|
|
|
\family typewriter
|
|
|
dreload()
|
|
|
\family default
|
|
|
.
|
|
|
This feature is off by default [which means that you have both normal
|
|
|
\family typewriter
|
|
|
reload()
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
dreload()
|
|
|
\family default
|
|
|
].
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-editor\InsetSpace ~
|
|
|
<name>
|
|
|
\family default
|
|
|
\series default
|
|
|
: Which editor to use with the
|
|
|
\family typewriter
|
|
|
%edit
|
|
|
\family default
|
|
|
command.
|
|
|
By default, IPython will honor your
|
|
|
\family typewriter
|
|
|
EDITOR
|
|
|
\family default
|
|
|
environment variable (if not set, vi is the Unix default and notepad the
|
|
|
Windows one).
|
|
|
Since this editor is invoked on the fly by IPython and is meant for editing
|
|
|
small code snippets, you may want to use a small, lightweight editor here
|
|
|
(in case your default
|
|
|
\family typewriter
|
|
|
EDITOR
|
|
|
\family default
|
|
|
is something like Emacs).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-ipythondir\InsetSpace ~
|
|
|
<name>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
name of your IPython configuration directory
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
.
|
|
|
This can also be specified through the environment variable
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-log|l
|
|
|
\family default
|
|
|
\series default
|
|
|
: generate a log file of all input.
|
|
|
The file is named
|
|
|
\family typewriter
|
|
|
ipython_log.py
|
|
|
\family default
|
|
|
in your current directory (which prevents logs from multiple IPython sessions
|
|
|
from trampling each other).
|
|
|
You can use this to later restore a session by loading your logfile as
|
|
|
a file to be executed with option
|
|
|
\family typewriter
|
|
|
-logplay
|
|
|
\family default
|
|
|
(see below).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-logfile|lf\InsetSpace ~
|
|
|
<name>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
specify the name of your logfile.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-logplay|lp\InsetSpace ~
|
|
|
<name>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
you can replay a previous log.
|
|
|
For restoring a session as close as possible to the state you left it in,
|
|
|
use this option (don't just run the logfile).
|
|
|
With
|
|
|
\family typewriter
|
|
|
-logplay
|
|
|
\family default
|
|
|
, IPython will try to reconstruct the previous working environment in full,
|
|
|
not just execute the commands in the logfile.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
When a session is restored, logging is automatically turned on again with
|
|
|
the name of the logfile it was invoked with (it is read from the log header).
|
|
|
So once you've turned logging on for a session, you can quit IPython and
|
|
|
reload it as many times as you want and it will continue to log its history
|
|
|
and restore from the beginning every time.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
Caveats: there are limitations in this option.
|
|
|
The history variables
|
|
|
\family typewriter
|
|
|
_i*
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
_*
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
_dh
|
|
|
\family default
|
|
|
don't get restored properly.
|
|
|
In the future we will try to implement full session saving by writing and
|
|
|
retrieving a 'snapshot' of the memory state of IPython.
|
|
|
But our first attempts failed because of inherent limitations of Python's
|
|
|
Pickle module, so this may have to wait.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]messages
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
Print messages which IPython collects about its startup process (default
|
|
|
on).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]pdb
|
|
|
\family default
|
|
|
\series default
|
|
|
: Automatically call the pdb debugger after every uncaught exception.
|
|
|
If you are used to debugging using pdb, this puts you automatically inside
|
|
|
of it after any call (either in IPython or in code called by it) which
|
|
|
triggers an exception which goes uncaught.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]pprint
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
ipython can optionally use the pprint (pretty printer) module for displaying
|
|
|
results.
|
|
|
pprint tends to give a nicer display of nested data structures.
|
|
|
If you like it, you can turn it on permanently in your config file (default
|
|
|
off).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-profile|p <name>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
assume that your config file is
|
|
|
\family typewriter
|
|
|
ipythonrc-<name>
|
|
|
\family default
|
|
|
(looks in current dir first, then in
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
).
|
|
|
This is a quick way to keep and load multiple config files for different
|
|
|
tasks, especially if you use the include option of config files.
|
|
|
You can keep a basic
|
|
|
\family typewriter
|
|
|
IPYTHONDIR/ipythonrc
|
|
|
\family default
|
|
|
file and then have other 'profiles' which include this one and load extra
|
|
|
things for particular tasks.
|
|
|
For example:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\family default
|
|
|
1.
|
|
|
|
|
|
\family typewriter
|
|
|
$HOME/.ipython/ipythonrc
|
|
|
\family default
|
|
|
: load basic things you always want.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\family default
|
|
|
2.
|
|
|
|
|
|
\family typewriter
|
|
|
$HOME/.ipython/ipythonrc-math
|
|
|
\family default
|
|
|
: load (1) and basic math-related modules.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\family default
|
|
|
3.
|
|
|
|
|
|
\family typewriter
|
|
|
$HOME/.ipython/ipythonrc-numeric
|
|
|
\family default
|
|
|
: load (1) and Numeric and plotting modules.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
Since it is possible to create an endless loop by having circular file
|
|
|
inclusions, IPython will stop if it reaches 15 recursive inclusions.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-prompt_in1|pi1\InsetSpace ~
|
|
|
<string>:
|
|
|
\family default
|
|
|
\series default
|
|
|
Specify the string used for input prompts.
|
|
|
Note that if you are using numbered prompts, the number is represented
|
|
|
with a '
|
|
|
\backslash
|
|
|
#' in the string.
|
|
|
Don't forget to quote strings with spaces embedded in them.
|
|
|
Default: '
|
|
|
\family typewriter
|
|
|
In\InsetSpace ~
|
|
|
[
|
|
|
\backslash
|
|
|
#]:
|
|
|
\family default
|
|
|
'.
|
|
|
Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:prompts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
discusses in detail all the available escapes to customize your prompts.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-prompt_in2|pi2\InsetSpace ~
|
|
|
<string>:
|
|
|
\family default
|
|
|
\series default
|
|
|
Similar to the previous option, but used for the continuation prompts.
|
|
|
The special sequence '
|
|
|
\family typewriter
|
|
|
|
|
|
\backslash
|
|
|
D
|
|
|
\family default
|
|
|
' is similar to '
|
|
|
\family typewriter
|
|
|
|
|
|
\backslash
|
|
|
#
|
|
|
\family default
|
|
|
', but with all digits replaced dots (so you can have your continuation
|
|
|
prompt aligned with your input prompt).
|
|
|
Default: '
|
|
|
\family typewriter
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
.
|
|
|
\backslash
|
|
|
D.:
|
|
|
\family default
|
|
|
' (note three spaces at the start for alignment with '
|
|
|
\family typewriter
|
|
|
In\InsetSpace ~
|
|
|
[
|
|
|
\backslash
|
|
|
#]
|
|
|
\family default
|
|
|
').
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-prompt_out|po\InsetSpace ~
|
|
|
<string>:
|
|
|
\family default
|
|
|
\series default
|
|
|
String used for output prompts, also uses numbers like
|
|
|
\family typewriter
|
|
|
prompt_in1
|
|
|
\family default
|
|
|
.
|
|
|
Default: '
|
|
|
\family typewriter
|
|
|
Out[
|
|
|
\backslash
|
|
|
#]:
|
|
|
\family default
|
|
|
'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-quick
|
|
|
\family default
|
|
|
\series default
|
|
|
: start in bare bones mode (no config file loaded).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-rcfile\InsetSpace ~
|
|
|
<name>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
name of your IPython resource configuration file.
|
|
|
Normally IPython loads ipythonrc (from current directory) or
|
|
|
\family typewriter
|
|
|
IPYTHONDIR/ipythonrc
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
If the loading of your config file fails, IPython starts with a bare bones
|
|
|
configuration (no modules loaded at all).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-[no]readline
|
|
|
\family default
|
|
|
\series default
|
|
|
: use the readline library, which is needed to support name completion and
|
|
|
command history, among other things.
|
|
|
It is enabled by default, but may cause problems for users of X/Emacs in
|
|
|
Python comint or shell buffers.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
Note that X/Emacs 'eterm' buffers (opened with
|
|
|
\family typewriter
|
|
|
M-x\InsetSpace ~
|
|
|
term
|
|
|
\family default
|
|
|
) support IPython's readline and syntax coloring fine, only 'emacs' (
|
|
|
\family typewriter
|
|
|
M-x\InsetSpace ~
|
|
|
shell
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
C-c\InsetSpace ~
|
|
|
!
|
|
|
\family default
|
|
|
) buffers do not.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-screen_length|sl\InsetSpace ~
|
|
|
<n>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
number of lines of your screen.
|
|
|
This is used to control printing of very long strings.
|
|
|
Strings longer than this number of lines will be sent through a pager instead
|
|
|
of directly printed.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
The default value for this is 0, which means IPython will auto-detect your
|
|
|
screen size every time it needs to print certain potentially long strings
|
|
|
(this doesn't change the behavior of the 'print' keyword, it's only triggered
|
|
|
internally).
|
|
|
If for some reason this isn't working well (it needs curses support), specify
|
|
|
it yourself.
|
|
|
Otherwise don't change the default.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-separate_in|si\InsetSpace ~
|
|
|
<string>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
separator before input prompts.
|
|
|
Default: '
|
|
|
\family typewriter
|
|
|
|
|
|
\backslash
|
|
|
n
|
|
|
\family default
|
|
|
'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-separate_out|so\InsetSpace ~
|
|
|
<string>
|
|
|
\family default
|
|
|
\series default
|
|
|
: separator before output prompts.
|
|
|
Default: nothing.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-separate_out2|so2\InsetSpace ~
|
|
|
<string>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
separator after output prompts.
|
|
|
Default: nothing.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
For these three options, use the value 0 to specify no separator.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-nosep
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
shorthand for
|
|
|
\family typewriter
|
|
|
'-SeparateIn 0 -SeparateOut 0 -SeparateOut2 0'
|
|
|
\family default
|
|
|
.
|
|
|
Simply removes all input/output separators.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-upgrade
|
|
|
\family default
|
|
|
\series default
|
|
|
: allows you to upgrade your
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
configuration when you install a new version of IPython.
|
|
|
Since new versions may include new command line options or example files,
|
|
|
this copies updated ipythonrc-type files.
|
|
|
However, it backs up (with a
|
|
|
\family typewriter
|
|
|
.old
|
|
|
\family default
|
|
|
extension) all files which it overwrites so that you can merge back any
|
|
|
customizations you might have in your personal files.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-Version
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
print version information and exit.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-wxversion\InsetSpace ~
|
|
|
<string>:
|
|
|
\family default
|
|
|
\series default
|
|
|
Select a specific version of wxPython (used in conjunction with
|
|
|
\family typewriter
|
|
|
-wthread
|
|
|
\family default
|
|
|
).
|
|
|
Requires the wxversion module, part of recent wxPython distributions
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
-xmode\InsetSpace ~
|
|
|
<modename>
|
|
|
\series default
|
|
|
:
|
|
|
\family default
|
|
|
Mode for exception reporting.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
Valid modes: Plain, Context and Verbose.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
Plain: similar to python's normal traceback printing.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
Context: prints 5 lines of context source code around each line in the
|
|
|
traceback.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
Verbose: similar to Context, but additionally prints the variables currently
|
|
|
visible where the exception happened (shortening their strings if too long).
|
|
|
This can potentially be very slow, if you happen to have a huge data structure
|
|
|
whose string representation is complex to compute.
|
|
|
Your computer may appear to freeze for a while with cpu usage at 100%.
|
|
|
If this occurs, you can cancel the traceback with Ctrl-C (maybe hitting
|
|
|
it more than once).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
Interactive use
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
Warning
|
|
|
\series default
|
|
|
: IPython relies on the existence of a global variable called
|
|
|
\family typewriter
|
|
|
__IP
|
|
|
\family default
|
|
|
which controls the shell itself.
|
|
|
If you redefine
|
|
|
\family typewriter
|
|
|
__IP
|
|
|
\family default
|
|
|
to anything, bizarre behavior will quickly occur.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Other than the above warning, IPython is meant to work as a drop-in replacement
|
|
|
for the standard interactive interpreter.
|
|
|
As such, any code which is valid python should execute normally under IPython
|
|
|
(cases where this is not true should be reported as bugs).
|
|
|
It does, however, offer many features which are not available at a standard
|
|
|
python prompt.
|
|
|
What follows is a list of these.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Caution for Windows users
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Windows, unfortunately, uses the `
|
|
|
\family typewriter
|
|
|
|
|
|
\backslash
|
|
|
|
|
|
\family default
|
|
|
' character as a path separator.
|
|
|
This is a terrible choice, because `
|
|
|
\family typewriter
|
|
|
|
|
|
\backslash
|
|
|
|
|
|
\family default
|
|
|
' also represents the escape character in most modern programming languages,
|
|
|
including Python.
|
|
|
For this reason, issuing many of the commands discussed below (especially
|
|
|
magics which affect the filesystem) with `
|
|
|
\family typewriter
|
|
|
|
|
|
\backslash
|
|
|
|
|
|
\family default
|
|
|
' in them will cause strange errors.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
A partial solution is to use instead the `
|
|
|
\family typewriter
|
|
|
/
|
|
|
\family default
|
|
|
' character as a path separator, which Windows recognizes in
|
|
|
\emph on
|
|
|
most
|
|
|
\emph default
|
|
|
situations.
|
|
|
However, in Windows commands `
|
|
|
\family typewriter
|
|
|
/
|
|
|
\family default
|
|
|
' flags options, so you can not use it for the root directory.
|
|
|
This means that paths beginning at the root must be typed in a contrived
|
|
|
manner like:
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
%copy
|
|
|
\backslash
|
|
|
opt/foo/bar.txt
|
|
|
\backslash
|
|
|
tmp
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
There is no sensible thing IPython can do to truly work around this flaw
|
|
|
in Windows
|
|
|
\begin_inset Foot
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If anyone comes up with a
|
|
|
\emph on
|
|
|
clean
|
|
|
\emph default
|
|
|
solution which works consistently and does not negatively impact other
|
|
|
platforms at all, I'll gladly accept a patch.
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:magic}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Magic command system
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython will treat any line whose first character is a
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
as a special call to a 'magic' function.
|
|
|
These allow you to control the behavior of IPython itself, plus a lot of
|
|
|
system-type features.
|
|
|
They are all prefixed with a
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
character, but parameters are given without parentheses or quotes.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Example: typing
|
|
|
\family typewriter
|
|
|
'%cd mydir'
|
|
|
\family default
|
|
|
(without the quotes) changes you working directory to
|
|
|
\family typewriter
|
|
|
'mydir'
|
|
|
\family default
|
|
|
, if it exists.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you have 'automagic' enabled (in your
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
file, via the command line option
|
|
|
\family typewriter
|
|
|
-automagic
|
|
|
\family default
|
|
|
or with the
|
|
|
\family typewriter
|
|
|
%automagic
|
|
|
\family default
|
|
|
function), you don't need to type in the
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
explicitly.
|
|
|
IPython will scan its internal list of magic functions and call one if
|
|
|
it exists.
|
|
|
With automagic on you can then just type '
|
|
|
\family typewriter
|
|
|
cd mydir
|
|
|
\family default
|
|
|
' to go to directory '
|
|
|
\family typewriter
|
|
|
mydir
|
|
|
\family default
|
|
|
'.
|
|
|
The automagic system has the lowest possible precedence in name searches,
|
|
|
so defining an identifier with the same name as an existing magic function
|
|
|
will shadow it for automagic use.
|
|
|
You can still access the shadowed magic function by explicitly using the
|
|
|
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
character at the beginning of the line.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
An example (with automagic on) should clarify all this:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
In [1]: cd ipython # %cd is called by automagic
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
/home/fperez/ipython
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
In [2]: cd=1 # now cd is just a variable
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
In [3]: cd ..
|
|
|
# and doesn't work as a function anymore
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
------------------------------------------------------------
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
File "<console>", line 1
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
cd ..
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
^
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
SyntaxError: invalid syntax
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
In [4]: %cd ..
|
|
|
# but %cd always works
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
/home/fperez
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
In [5]: del cd # if you remove the cd variable
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
In [6]: cd ipython # automagic can work again
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
/home/fperez/ipython
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can define your own magic functions to extend the system.
|
|
|
The following example defines a new magic command,
|
|
|
\family typewriter
|
|
|
%impall
|
|
|
\family default
|
|
|
:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
import IPython.ipapi
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
ip = IPython.ipapi.get()
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
def doimp(self, arg):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
ip = self.api
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
ip.ex("import %s; reload(%s); from %s import *" % (
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
arg,arg,arg)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
ip.expose_magic('impall', doimp)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can also define your own aliased names for magic functions.
|
|
|
In your
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
file, placing a line like:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
execute __IP.magic_cl = __IP.magic_clear
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
will define
|
|
|
\family typewriter
|
|
|
%cl
|
|
|
\family default
|
|
|
as a new name for
|
|
|
\family typewriter
|
|
|
%clear
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Type
|
|
|
\family typewriter
|
|
|
%magic
|
|
|
\family default
|
|
|
for more information, including a list of all available magic functions
|
|
|
at any time and their docstrings.
|
|
|
You can also type
|
|
|
\family typewriter
|
|
|
%magic_function_name?
|
|
|
\family default
|
|
|
(see sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:dyn-object-info}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for information on the
|
|
|
\family typewriter
|
|
|
'?'
|
|
|
\family default
|
|
|
system) to get information about any particular magic function you are
|
|
|
interested in.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Magic commands
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The rest of this section is automatically generated for each release from
|
|
|
the docstrings in the IPython code.
|
|
|
Therefore the formatting is somewhat minimal, but this method has the advantage
|
|
|
of having information always in sync with the code.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
A list of all the magic commands available in IPython's
|
|
|
\emph on
|
|
|
default
|
|
|
\emph default
|
|
|
installation follows.
|
|
|
This is similar to what you'll see by simply typing
|
|
|
\family typewriter
|
|
|
%magic
|
|
|
\family default
|
|
|
at the prompt, but that will also give you information about magic commands
|
|
|
you may have added as part of your personal customizations.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\begin_inset Include \input{magic.tex}
|
|
|
preview false
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Access to the standard Python help
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
As of Python 2.1, a help system is available with access to object docstrings
|
|
|
and the Python manuals.
|
|
|
Simply type
|
|
|
\family typewriter
|
|
|
'help'
|
|
|
\family default
|
|
|
(no quotes) to access it.
|
|
|
You can also type
|
|
|
\family typewriter
|
|
|
help(object)
|
|
|
\family default
|
|
|
to obtain information about a given object, and
|
|
|
\family typewriter
|
|
|
help('keyword')
|
|
|
\family default
|
|
|
for information on a keyword.
|
|
|
As noted in sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:help-access}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
, you need to properly configure your environment variable
|
|
|
\family typewriter
|
|
|
PYTHONDOCS
|
|
|
\family default
|
|
|
for this feature to work correctly.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:dyn-object-info}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Dynamic object information
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Typing
|
|
|
\family typewriter
|
|
|
?word
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
word?
|
|
|
\family default
|
|
|
prints detailed information about an object.
|
|
|
If certain strings in the object are too long (docstrings, code, etc.) they
|
|
|
get snipped in the center for brevity.
|
|
|
This system gives access variable types and values, full source code for
|
|
|
any object (if available), function prototypes and other useful information.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Typing
|
|
|
\family typewriter
|
|
|
??word
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
word??
|
|
|
\family default
|
|
|
gives access to the full information without snipping long strings.
|
|
|
Long strings are sent to the screen through the
|
|
|
\family typewriter
|
|
|
less
|
|
|
\family default
|
|
|
pager if longer than the screen and printed otherwise.
|
|
|
On systems lacking the
|
|
|
\family typewriter
|
|
|
less
|
|
|
\family default
|
|
|
command, IPython uses a very basic internal pager.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following magic functions are particularly useful for gathering information
|
|
|
about your working environment.
|
|
|
You can get more details by typing
|
|
|
\family typewriter
|
|
|
%magic
|
|
|
\family default
|
|
|
or querying them individually (use
|
|
|
\family typewriter
|
|
|
%function_name?
|
|
|
\family default
|
|
|
with or without the
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
), this is just a summary:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
%pdoc\InsetSpace ~
|
|
|
<object>
|
|
|
\family default
|
|
|
\series default
|
|
|
: Print (or run through a pager if too long) the docstring for an object.
|
|
|
If the given object is a class, it will print both the class and the constructo
|
|
|
r docstrings.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
%pdef\InsetSpace ~
|
|
|
<object>
|
|
|
\family default
|
|
|
\series default
|
|
|
: Print the definition header for any callable object.
|
|
|
If the object is a class, print the constructor information.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
%psource\InsetSpace ~
|
|
|
<object>
|
|
|
\family default
|
|
|
\series default
|
|
|
: Print (or run through a pager if too long) the source code for an object.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
%pfile\InsetSpace ~
|
|
|
<object>
|
|
|
\family default
|
|
|
\series default
|
|
|
: Show the entire source file where an object was defined via a pager, opening
|
|
|
it at the line where the object definition begins.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
%who/%whos
|
|
|
\family default
|
|
|
\series default
|
|
|
: These functions give information about identifiers you have defined interactiv
|
|
|
ely (not things you loaded or defined in your configuration files).
|
|
|
|
|
|
\family typewriter
|
|
|
%who
|
|
|
\family default
|
|
|
just prints a list of identifiers and
|
|
|
\family typewriter
|
|
|
%whos
|
|
|
\family default
|
|
|
prints a table with some basic details about each identifier.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Note that the dynamic object information functions (
|
|
|
\family typewriter
|
|
|
?/??, %pdoc, %pfile, %pdef, %psource
|
|
|
\family default
|
|
|
) give you access to documentation even on things which are not really defined
|
|
|
as separate identifiers.
|
|
|
Try for example typing
|
|
|
\family typewriter
|
|
|
{}.get?
|
|
|
\family default
|
|
|
or after doing
|
|
|
\family typewriter
|
|
|
import os
|
|
|
\family default
|
|
|
, type
|
|
|
\family typewriter
|
|
|
os.path.abspath??
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:readline}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Readline-based features
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
These features require the GNU readline library, so they won't work if your
|
|
|
Python installation lacks readline support.
|
|
|
We will first describe the default behavior IPython uses, and then how
|
|
|
to change it to suit your preferences.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Command line completion
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
At any time, hitting TAB will complete any available python commands or
|
|
|
variable names, and show you a list of the possible completions if there's
|
|
|
no unambiguous one.
|
|
|
It will also complete filenames in the current directory if no python names
|
|
|
match what you've typed so far.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Search command history
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython provides two ways for searching through previous input and thus
|
|
|
reduce the need for repetitive typing:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Start typing, and then use
|
|
|
\family typewriter
|
|
|
Ctrl-p
|
|
|
\family default
|
|
|
(previous,up) and
|
|
|
\family typewriter
|
|
|
Ctrl-n
|
|
|
\family default
|
|
|
(next,down) to search through only the history items that match what you've
|
|
|
typed so far.
|
|
|
If you use
|
|
|
\family typewriter
|
|
|
Ctrl-p/Ctrl-n
|
|
|
\family default
|
|
|
at a blank prompt, they just behave like normal arrow keys.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Enumerate
|
|
|
Hit
|
|
|
\family typewriter
|
|
|
Ctrl-r
|
|
|
\family default
|
|
|
: opens a search prompt.
|
|
|
Begin typing and the system searches your history for lines that contain
|
|
|
what you've typed so far, completing as much as it can.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Persistent command history across sessions
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython will save your input history when it leaves and reload it next time
|
|
|
you restart it.
|
|
|
By default, the history file is named
|
|
|
\family typewriter
|
|
|
$IPYTHONDIR/history
|
|
|
\family default
|
|
|
, but if you've loaded a named profile, '
|
|
|
\family typewriter
|
|
|
-PROFILE_NAME
|
|
|
\family default
|
|
|
' is appended to the name.
|
|
|
This allows you to keep separate histories related to various tasks: commands
|
|
|
related to numerical work will not be clobbered by a system shell history,
|
|
|
for example.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Autoindent
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython can recognize lines ending in ':' and indent the next line, while
|
|
|
also un-indenting automatically after 'raise' or 'return'.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This feature uses the readline library, so it will honor your
|
|
|
\family typewriter
|
|
|
~/.inputrc
|
|
|
\family default
|
|
|
configuration (or whatever file your
|
|
|
\family typewriter
|
|
|
INPUTRC
|
|
|
\family default
|
|
|
variable points to).
|
|
|
Adding the following lines to your
|
|
|
\family typewriter
|
|
|
.inputrc
|
|
|
\family default
|
|
|
file can make indenting/unindenting more convenient (
|
|
|
\family typewriter
|
|
|
M-i
|
|
|
\family default
|
|
|
indents,
|
|
|
\family typewriter
|
|
|
M-u
|
|
|
\family default
|
|
|
unindents):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
$if Python
|
|
|
\newline
|
|
|
"
|
|
|
\backslash
|
|
|
M-i": "\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
"
|
|
|
\newline
|
|
|
"
|
|
|
\backslash
|
|
|
M-u": "
|
|
|
\backslash
|
|
|
d
|
|
|
\backslash
|
|
|
d
|
|
|
\backslash
|
|
|
d
|
|
|
\backslash
|
|
|
d"
|
|
|
\newline
|
|
|
$endif
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Note that there are 4 spaces between the quote marks after
|
|
|
\family typewriter
|
|
|
"M-i"
|
|
|
\family default
|
|
|
above.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
Warning:
|
|
|
\series default
|
|
|
this feature is ON by default, but it can cause problems with the pasting
|
|
|
of multi-line indented code (the pasted code gets re-indented on each line).
|
|
|
A magic function
|
|
|
\family typewriter
|
|
|
%autoindent
|
|
|
\family default
|
|
|
allows you to toggle it on/off at runtime.
|
|
|
You can also disable it permanently on in your
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
file (set
|
|
|
\family typewriter
|
|
|
autoindent 0
|
|
|
\family default
|
|
|
).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Customizing readline behavior
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
All these features are based on the GNU readline library, which has an extremely
|
|
|
customizable interface.
|
|
|
Normally, readline is configured via a file which defines the behavior
|
|
|
of the library; the details of the syntax for this can be found in the
|
|
|
readline documentation available with your system or on the Internet.
|
|
|
IPython doesn't read this file (if it exists) directly, but it does support
|
|
|
passing to readline valid options via a simple interface.
|
|
|
In brief, you can customize readline by setting the following options in
|
|
|
your
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
configuration file (note that these options can
|
|
|
\emph on
|
|
|
not
|
|
|
\emph default
|
|
|
be specified at the command line):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
readline_parse_and_bind:
|
|
|
\family default
|
|
|
\series default
|
|
|
this option can appear as many times as you want, each time defining a
|
|
|
string to be executed via a
|
|
|
\family typewriter
|
|
|
readline.parse_and_bind()
|
|
|
\family default
|
|
|
command.
|
|
|
The syntax for valid commands of this kind can be found by reading the
|
|
|
documentation for the GNU readline library, as these commands are of the
|
|
|
kind which readline accepts in its configuration file.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
readline_remove_delims:
|
|
|
\family default
|
|
|
\series default
|
|
|
a string of characters to be removed from the default word-delimiters list
|
|
|
used by readline, so that completions may be performed on strings which
|
|
|
contain them.
|
|
|
Do not change the default value unless you know what you're doing.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
readline_omit__names
|
|
|
\family default
|
|
|
\series default
|
|
|
: when tab-completion is enabled, hitting
|
|
|
\family typewriter
|
|
|
<tab>
|
|
|
\family default
|
|
|
after a '
|
|
|
\family typewriter
|
|
|
.
|
|
|
\family default
|
|
|
' in a name will complete all attributes of an object, including all the
|
|
|
special methods whose names include double underscores (like
|
|
|
\family typewriter
|
|
|
__getitem__
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
__class__
|
|
|
\family default
|
|
|
).
|
|
|
If you'd rather not see these names by default, you can set this option
|
|
|
to 1.
|
|
|
Note that even when this option is set, you can still see those names by
|
|
|
explicitly typing a
|
|
|
\family typewriter
|
|
|
_
|
|
|
\family default
|
|
|
after the period and hitting
|
|
|
\family typewriter
|
|
|
<tab>
|
|
|
\family default
|
|
|
: '
|
|
|
\family typewriter
|
|
|
name._<tab>
|
|
|
\family default
|
|
|
' will always complete attribute names starting with '
|
|
|
\family typewriter
|
|
|
_
|
|
|
\family default
|
|
|
'.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
\InsetSpace ~
|
|
|
This option is off by default so that new users see all attributes of any
|
|
|
objects they are dealing with.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You will find the default values along with a corresponding detailed explanation
|
|
|
in your
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
file.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Session logging and restoring
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can log all input from a session either by starting IPython with the
|
|
|
command line switches
|
|
|
\family typewriter
|
|
|
-log
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
-logfile
|
|
|
\family default
|
|
|
(see sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:cmd-line-opts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
)or by activating the logging at any moment with the magic function
|
|
|
\family typewriter
|
|
|
%logstart
|
|
|
\family default
|
|
|
.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Log files can later be reloaded with the
|
|
|
\family typewriter
|
|
|
-logplay
|
|
|
\family default
|
|
|
option and IPython will attempt to 'replay' the log by executing all the
|
|
|
lines in it, thus restoring the state of a previous session.
|
|
|
This feature is not quite perfect, but can still be useful in many cases.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The log files can also be used as a way to have a permanent record of any
|
|
|
code you wrote while experimenting.
|
|
|
Log files are regular text files which you can later open in your favorite
|
|
|
text editor to extract code or to 'clean them up' before using them to
|
|
|
replay a session.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
%logstart
|
|
|
\family default
|
|
|
function for activating logging in mid-session is used as follows:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
%logstart [log_name [log_mode]]
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If no name is given, it defaults to a file named
|
|
|
\family typewriter
|
|
|
'log'
|
|
|
\family default
|
|
|
in your IPYTHONDIR directory, in
|
|
|
\family typewriter
|
|
|
'rotate'
|
|
|
\family default
|
|
|
mode (see below).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
'
|
|
|
\family typewriter
|
|
|
%logstart name
|
|
|
\family default
|
|
|
' saves to file
|
|
|
\family typewriter
|
|
|
'name'
|
|
|
\family default
|
|
|
in
|
|
|
\family typewriter
|
|
|
'backup'
|
|
|
\family default
|
|
|
mode.
|
|
|
It saves your history up to that point and then continues logging.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
%logstart
|
|
|
\family default
|
|
|
takes a second optional parameter: logging mode.
|
|
|
This can be one of (note that the modes are given unquoted):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
over
|
|
|
\family default
|
|
|
: overwrite existing
|
|
|
\family typewriter
|
|
|
log_name
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
backup
|
|
|
\family default
|
|
|
: rename (if exists) to
|
|
|
\family typewriter
|
|
|
log_name~
|
|
|
\family default
|
|
|
and start
|
|
|
\family typewriter
|
|
|
log_name
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
append
|
|
|
\family default
|
|
|
: well, that says it.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
rotate
|
|
|
\family default
|
|
|
: create rotating logs
|
|
|
\family typewriter
|
|
|
log_name
|
|
|
\family default
|
|
|
.
|
|
|
\family typewriter
|
|
|
1~
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
log_name.2~
|
|
|
\family default
|
|
|
, etc.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
%logoff
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
%logon
|
|
|
\family default
|
|
|
functions allow you to temporarily stop and resume logging to a file which
|
|
|
had previously been started with
|
|
|
\family typewriter
|
|
|
%logstart
|
|
|
\family default
|
|
|
.
|
|
|
They will fail (with an explanation) if you try to use them before logging
|
|
|
has been started.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sub:System-shell-access}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
System shell access
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Any input line beginning with a
|
|
|
\family typewriter
|
|
|
!
|
|
|
\family default
|
|
|
character is passed verbatim (minus the
|
|
|
\family typewriter
|
|
|
!
|
|
|
\family default
|
|
|
, of course) to the underlying operating system.
|
|
|
For example, typing
|
|
|
\family typewriter
|
|
|
!ls
|
|
|
\family default
|
|
|
will run
|
|
|
\family typewriter
|
|
|
'ls'
|
|
|
\family default
|
|
|
in the current directory.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Manual capture of command output
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If the input line begins with
|
|
|
\emph on
|
|
|
two
|
|
|
\emph default
|
|
|
exclamation marks,
|
|
|
\family typewriter
|
|
|
!!
|
|
|
\family default
|
|
|
, the command is executed but its output is captured and returned as a python
|
|
|
list, split on newlines.
|
|
|
Any output sent by the subprocess to standard error is printed separately,
|
|
|
so that the resulting list only captures standard output.
|
|
|
The
|
|
|
\family typewriter
|
|
|
!!
|
|
|
\family default
|
|
|
syntax is a shorthand for the
|
|
|
\family typewriter
|
|
|
%sx
|
|
|
\family default
|
|
|
magic command.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Finally, the
|
|
|
\family typewriter
|
|
|
%sc
|
|
|
\family default
|
|
|
magic (short for `shell capture') is similar to
|
|
|
\family typewriter
|
|
|
%sx
|
|
|
\family default
|
|
|
, but allowing more fine-grained control of the capture details, and storing
|
|
|
the result directly into a named variable.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
See Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:magic}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for details on the magics
|
|
|
\family typewriter
|
|
|
%sc
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
%sx
|
|
|
\family default
|
|
|
, or use IPython's own help (
|
|
|
\family typewriter
|
|
|
sc?
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
sx?
|
|
|
\family default
|
|
|
) for further details.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython also allows you to expand the value of python variables when making
|
|
|
system calls.
|
|
|
Any python variable or expression which you prepend with
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
will get expanded before the system call is made.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [1]: pyvar='Hello world'
|
|
|
\newline
|
|
|
In [2]: !echo "A python variable: $pyvar"
|
|
|
\newline
|
|
|
A python
|
|
|
variable: Hello world
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you want the shell to actually see a literal
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
, you need to type it twice:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [3]: !echo "A system variable: $$HOME"
|
|
|
\newline
|
|
|
A system variable: /home/fperez
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can pass arbitrary expressions, though you'll need to delimit them with
|
|
|
|
|
|
\family typewriter
|
|
|
{}
|
|
|
\family default
|
|
|
if there is ambiguity as to the extent of the expression:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [5]: x=10
|
|
|
\newline
|
|
|
In [6]: y=20
|
|
|
\newline
|
|
|
In [13]: !echo $x+y
|
|
|
\newline
|
|
|
10+y
|
|
|
\newline
|
|
|
In [7]: !echo ${x+y}
|
|
|
\newline
|
|
|
30
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Even object attributes can be expanded:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [12]: !echo $sys.argv
|
|
|
\newline
|
|
|
[/home/fperez/usr/bin/ipython]
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
System command aliases
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
%alias
|
|
|
\family default
|
|
|
magic function and the
|
|
|
\family typewriter
|
|
|
alias
|
|
|
\family default
|
|
|
option in the
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
configuration file allow you to define magic functions which are in fact
|
|
|
system shell commands.
|
|
|
These aliases can have parameters.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
'
|
|
|
\family typewriter
|
|
|
%alias alias_name cmd
|
|
|
\family default
|
|
|
' defines '
|
|
|
\family typewriter
|
|
|
alias_name
|
|
|
\family default
|
|
|
' as an alias for '
|
|
|
\family typewriter
|
|
|
cmd
|
|
|
\family default
|
|
|
'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Then, typing '
|
|
|
\family typewriter
|
|
|
%alias_name params
|
|
|
\family default
|
|
|
' will execute the system command '
|
|
|
\family typewriter
|
|
|
cmd params
|
|
|
\family default
|
|
|
' (from your underlying operating system).
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can also define aliases with parameters using
|
|
|
\family typewriter
|
|
|
%s
|
|
|
\family default
|
|
|
specifiers (one per parameter).
|
|
|
The following example defines the
|
|
|
\family typewriter
|
|
|
%parts
|
|
|
\family default
|
|
|
function as an alias to the command '
|
|
|
\family typewriter
|
|
|
echo first %s second %s
|
|
|
\family default
|
|
|
' where each
|
|
|
\family typewriter
|
|
|
%s
|
|
|
\family default
|
|
|
will be replaced by a positional parameter to the call to
|
|
|
\family typewriter
|
|
|
%parts:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [1]: alias parts echo first %s second %s
|
|
|
\newline
|
|
|
In [2]: %parts A B
|
|
|
\newline
|
|
|
first A second
|
|
|
B
|
|
|
\newline
|
|
|
In [3]: %parts A
|
|
|
\newline
|
|
|
Incorrect number of arguments: 2 expected.
|
|
|
|
|
|
\newline
|
|
|
parts is an alias to: 'echo first %s second %s'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If called with no parameters,
|
|
|
\family typewriter
|
|
|
%alias
|
|
|
\family default
|
|
|
prints the table of currently defined aliases.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
%rehash/rehashx
|
|
|
\family default
|
|
|
magics allow you to load your entire
|
|
|
\family typewriter
|
|
|
$PATH
|
|
|
\family default
|
|
|
as ipython aliases.
|
|
|
See their respective docstrings (or sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:magic}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for further details).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:dreload}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Recursive reload
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
dreload
|
|
|
\family default
|
|
|
function does a recursive reload of a module: changes made to the module
|
|
|
since you imported will actually be available without having to exit.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Verbose and colored exception traceback printouts
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython provides the option to see very detailed exception tracebacks, which
|
|
|
can be especially useful when debugging large programs.
|
|
|
You can run any Python file with the
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
function to benefit from these detailed tracebacks.
|
|
|
Furthermore, both normal and verbose tracebacks can be colored (if your
|
|
|
terminal supports it) which makes them much easier to parse visually.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
See the magic
|
|
|
\family typewriter
|
|
|
xmode
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
colors
|
|
|
\family default
|
|
|
functions for details (just type
|
|
|
\family typewriter
|
|
|
%magic
|
|
|
\family default
|
|
|
).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
These features are basically a terminal version of Ka-Ping Yee's
|
|
|
\family typewriter
|
|
|
cgitb
|
|
|
\family default
|
|
|
module, now part of the standard Python library.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:cache_input}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Input caching system
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython offers numbered prompts (In/Out) with input and output caching.
|
|
|
All input is saved and can be retrieved as variables (besides the usual
|
|
|
arrow key recall).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following GLOBAL variables always exist (so don't overwrite them!):
|
|
|
|
|
|
\family typewriter
|
|
|
_i
|
|
|
\family default
|
|
|
: stores previous input.
|
|
|
|
|
|
\family typewriter
|
|
|
_ii
|
|
|
\family default
|
|
|
: next previous.
|
|
|
|
|
|
\family typewriter
|
|
|
_iii
|
|
|
\family default
|
|
|
: next-next previous.
|
|
|
|
|
|
\family typewriter
|
|
|
_ih
|
|
|
\family default
|
|
|
: a list of all input
|
|
|
\family typewriter
|
|
|
_ih[n]
|
|
|
\family default
|
|
|
is the input from line
|
|
|
\family typewriter
|
|
|
n
|
|
|
\family default
|
|
|
and this list is aliased to the global variable
|
|
|
\family typewriter
|
|
|
In
|
|
|
\family default
|
|
|
.
|
|
|
If you overwrite
|
|
|
\family typewriter
|
|
|
In
|
|
|
\family default
|
|
|
with a variable of your own, you can remake the assignment to the internal
|
|
|
list with a simple
|
|
|
\family typewriter
|
|
|
'In=_ih'
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Additionally, global variables named
|
|
|
\family typewriter
|
|
|
_i<n>
|
|
|
\family default
|
|
|
are dynamically created (
|
|
|
\family typewriter
|
|
|
<n>
|
|
|
\family default
|
|
|
being the prompt counter), such that
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
_i<n> == _ih[<n>] == In[<n>].
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
For example, what you typed at prompt 14 is available as
|
|
|
\family typewriter
|
|
|
_i14,
|
|
|
\family default
|
|
|
|
|
|
\family typewriter
|
|
|
_ih[14]
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
In[14]
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This allows you to easily cut and paste multi line interactive prompts by
|
|
|
printing them out: they print like a clean string, without prompt characters.
|
|
|
You can also manipulate them like regular variables (they are strings),
|
|
|
modify or exec them (typing
|
|
|
\family typewriter
|
|
|
'exec _i9'
|
|
|
\family default
|
|
|
will re-execute the contents of input prompt 9, '
|
|
|
\family typewriter
|
|
|
exec In[9:14]+In[18]
|
|
|
\family default
|
|
|
' will re-execute lines 9 through 13 and line 18).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can also re-execute multiple lines of input easily by using the magic
|
|
|
|
|
|
\family typewriter
|
|
|
%macro
|
|
|
\family default
|
|
|
function (which automates the process and allows re-execution without having
|
|
|
to type '
|
|
|
\family typewriter
|
|
|
exec
|
|
|
\family default
|
|
|
' every time).
|
|
|
The macro system also allows you to re-execute previous lines which include
|
|
|
magic function calls (which require special processing).
|
|
|
Type
|
|
|
\family typewriter
|
|
|
%macro?
|
|
|
\family default
|
|
|
or see sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:magic}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for more details on the macro system.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
A history function
|
|
|
\family typewriter
|
|
|
%hist
|
|
|
\family default
|
|
|
allows you to see any part of your input history by printing a range of
|
|
|
the
|
|
|
\family typewriter
|
|
|
_i
|
|
|
\family default
|
|
|
variables.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:cache_output}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Output caching system
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
For output that is returned from actions, a system similar to the input
|
|
|
cache exists but using
|
|
|
\family typewriter
|
|
|
_
|
|
|
\family default
|
|
|
instead of
|
|
|
\family typewriter
|
|
|
_i
|
|
|
\family default
|
|
|
.
|
|
|
Only actions that produce a result (NOT assignments, for example) are cached.
|
|
|
If you are familiar with Mathematica, IPython's
|
|
|
\family typewriter
|
|
|
_
|
|
|
\family default
|
|
|
variables behave exactly like Mathematica's
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
variables.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following GLOBAL variables always exist (so don't overwrite them!):
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
_
|
|
|
\family default
|
|
|
\series default
|
|
|
(a
|
|
|
\emph on
|
|
|
single
|
|
|
\emph default
|
|
|
underscore) : stores previous output, like Python's default interpreter.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
__
|
|
|
\family default
|
|
|
\series default
|
|
|
(two underscores): next previous.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
___
|
|
|
\family default
|
|
|
\series default
|
|
|
(three underscores): next-next previous.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Additionally, global variables named
|
|
|
\family typewriter
|
|
|
_<n>
|
|
|
\family default
|
|
|
are dynamically created (
|
|
|
\family typewriter
|
|
|
<n>
|
|
|
\family default
|
|
|
being the prompt counter), such that the result of output
|
|
|
\family typewriter
|
|
|
<n>
|
|
|
\family default
|
|
|
is always available as
|
|
|
\family typewriter
|
|
|
_<n>
|
|
|
\family default
|
|
|
(don't use the angle brackets, just the number, e.g.
|
|
|
|
|
|
\family typewriter
|
|
|
_21
|
|
|
\family default
|
|
|
).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
These global variables are all stored in a global dictionary (not a list,
|
|
|
since it only has entries for lines which returned a result) available
|
|
|
under the names
|
|
|
\family typewriter
|
|
|
_oh
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
Out
|
|
|
\family default
|
|
|
(similar to
|
|
|
\family typewriter
|
|
|
_ih
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
In
|
|
|
\family default
|
|
|
).
|
|
|
So the output from line 12 can be obtained as
|
|
|
\family typewriter
|
|
|
_12
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
Out[12]
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
_oh[12]
|
|
|
\family default
|
|
|
.
|
|
|
If you accidentally overwrite the
|
|
|
\family typewriter
|
|
|
Out
|
|
|
\family default
|
|
|
variable you can recover it by typing
|
|
|
\family typewriter
|
|
|
'Out=_oh
|
|
|
\family default
|
|
|
' at the prompt.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This system obviously can potentially put heavy memory demands on your system,
|
|
|
since it prevents Python's garbage collector from removing any previously
|
|
|
computed results.
|
|
|
You can control how many results are kept in memory with the option (at
|
|
|
the command line or in your
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
file)
|
|
|
\family typewriter
|
|
|
cache_size
|
|
|
\family default
|
|
|
.
|
|
|
If you set it to 0, the whole system is completely disabled and the prompts
|
|
|
revert to the classic
|
|
|
\family typewriter
|
|
|
'>>>'
|
|
|
\family default
|
|
|
of normal Python.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Directory history
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Your history of visited directories is kept in the global list
|
|
|
\family typewriter
|
|
|
_dh
|
|
|
\family default
|
|
|
, and the magic
|
|
|
\family typewriter
|
|
|
%cd
|
|
|
\family default
|
|
|
command can be used to go to any entry in that list.
|
|
|
The
|
|
|
\family typewriter
|
|
|
%dhist
|
|
|
\family default
|
|
|
command allows you to view this history.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Automatic parentheses and quotes
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
These features were adapted from Nathan Gray's LazyPython.
|
|
|
They are meant to allow less typing for common situations.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Automatic parentheses
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Callable objects (i.e.
|
|
|
functions, methods, etc) can be invoked like this (notice the commas between
|
|
|
the arguments):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
>>> callable_ob arg1, arg2, arg3
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
and the input will be translated to this:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
--> callable_ob(arg1, arg2, arg3)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can force automatic parentheses by using '/' as the first character
|
|
|
of a line.
|
|
|
For example:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
>>> /globals # becomes 'globals()'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Note that the '/' MUST be the first character on the line! This won't work:
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
>>> print /globals # syntax error
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
In most cases the automatic algorithm should work, so you should rarely
|
|
|
need to explicitly invoke /.
|
|
|
One notable exception is if you are trying to call a function with a list
|
|
|
of tuples as arguments (the parenthesis will confuse IPython):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [1]: zip (1,2,3),(4,5,6) # won't work
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
but this will work:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [2]: /zip (1,2,3),(4,5,6)
|
|
|
\newline
|
|
|
------> zip ((1,2,3),(4,5,6))
|
|
|
\newline
|
|
|
Out[2]= [(1, 4),
|
|
|
(2, 5), (3, 6)]
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython tells you that it has altered your command line by displaying the
|
|
|
new command line preceded by
|
|
|
\family typewriter
|
|
|
-->
|
|
|
\family default
|
|
|
.
|
|
|
e.g.:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [18]: callable list
|
|
|
\newline
|
|
|
-------> callable (list)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Automatic quoting
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can force automatic quoting of a function's arguments by using
|
|
|
\family typewriter
|
|
|
`,'
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
`;'
|
|
|
\family default
|
|
|
as the first character of a line.
|
|
|
For example:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
>>> ,my_function /home/me # becomes my_function("/home/me")
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you use
|
|
|
\family typewriter
|
|
|
`;'
|
|
|
\family default
|
|
|
instead, the whole argument is quoted as a single string (while
|
|
|
\family typewriter
|
|
|
`,'
|
|
|
\family default
|
|
|
splits on whitespace):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
>>> ,my_function a b c # becomes my_function("a","b","c")
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
>>> ;my_function a b c # becomes my_function("a b c")
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Note that the `
|
|
|
\family typewriter
|
|
|
,
|
|
|
\family default
|
|
|
' or `
|
|
|
\family typewriter
|
|
|
;
|
|
|
\family default
|
|
|
' MUST be the first character on the line! This won't work:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
>>> x = ,my_function /home/me # syntax error
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:customization}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Customization
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
As we've already mentioned, IPython reads a configuration file which can
|
|
|
be specified at the command line (
|
|
|
\family typewriter
|
|
|
-rcfile
|
|
|
\family default
|
|
|
) or which by default is assumed to be called
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
.
|
|
|
Such a file is looked for in the current directory where IPython is started
|
|
|
and then in your
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
, which allows you to have local configuration files for specific projects.
|
|
|
In this section we will call these types of configuration files simply
|
|
|
rcfiles (short for resource configuration file).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The syntax of an rcfile is one of key-value pairs separated by whitespace,
|
|
|
one per line.
|
|
|
Lines beginning with a
|
|
|
\family typewriter
|
|
|
#
|
|
|
\family default
|
|
|
are ignored as comments, but comments can
|
|
|
\series bold
|
|
|
not
|
|
|
\series default
|
|
|
be put on lines with data (the parser is fairly primitive).
|
|
|
Note that these are not python files, and this is deliberate, because it
|
|
|
allows us to do some things which would be quite tricky to implement if
|
|
|
they were normal python files.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
First, an rcfile can contain permanent default values for almost all command
|
|
|
line options (except things like
|
|
|
\family typewriter
|
|
|
-help
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
-Version
|
|
|
\family default
|
|
|
).
|
|
|
Sec\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:cmd-line-opts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
contains a description of all command-line options.
|
|
|
However, values you explicitly specify at the command line override the
|
|
|
values defined in the rcfile.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Besides command line option values, the rcfile can specify values for certain
|
|
|
extra special options which are not available at the command line.
|
|
|
These options are briefly described below.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Each of these options may appear as many times as you need it in the file.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
include\InsetSpace ~
|
|
|
<file1>\InsetSpace ~
|
|
|
<file2>\InsetSpace ~
|
|
|
...
|
|
|
\family default
|
|
|
\series default
|
|
|
: you can name
|
|
|
\emph on
|
|
|
other
|
|
|
\emph default
|
|
|
rcfiles you want to recursively load up to 15 levels (don't use the
|
|
|
\family typewriter
|
|
|
<>
|
|
|
\family default
|
|
|
brackets in your names!).
|
|
|
This feature allows you to define a 'base' rcfile with general options
|
|
|
and special-purpose files which can be loaded only when needed with particular
|
|
|
configuration options.
|
|
|
To make this more convenient, IPython accepts the
|
|
|
\family typewriter
|
|
|
-profile <name>
|
|
|
\family default
|
|
|
option (abbreviates to
|
|
|
\family typewriter
|
|
|
-p <name
|
|
|
\family default
|
|
|
>)
|
|
|
\family typewriter
|
|
|
which
|
|
|
\family default
|
|
|
tells it to look for an rcfile named
|
|
|
\family typewriter
|
|
|
ipythonrc-<name>
|
|
|
\family default
|
|
|
.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
import_mod\InsetSpace ~
|
|
|
<mod1>\InsetSpace ~
|
|
|
<mod2>\InsetSpace ~
|
|
|
...
|
|
|
\family default
|
|
|
\series default
|
|
|
: import modules with '
|
|
|
\family typewriter
|
|
|
import
|
|
|
\family default
|
|
|
|
|
|
\family typewriter
|
|
|
<mod1>,<mod2>,...
|
|
|
\family default
|
|
|
'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
import_some\InsetSpace ~
|
|
|
<mod>\InsetSpace ~
|
|
|
<f1>\InsetSpace ~
|
|
|
<f2>\InsetSpace ~
|
|
|
...
|
|
|
\family default
|
|
|
\series default
|
|
|
: import functions with '
|
|
|
\family typewriter
|
|
|
from <mod> import
|
|
|
\family default
|
|
|
|
|
|
\family typewriter
|
|
|
<f1>,<f2>,...
|
|
|
\family default
|
|
|
'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
import_all\InsetSpace ~
|
|
|
<mod1>\InsetSpace ~
|
|
|
<mod2>\InsetSpace ~
|
|
|
...
|
|
|
\family default
|
|
|
\series default
|
|
|
: for each module listed import functions with '
|
|
|
\family typewriter
|
|
|
from <mod> import *
|
|
|
\family default
|
|
|
'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
execute\InsetSpace ~
|
|
|
<python\InsetSpace ~
|
|
|
code>
|
|
|
\family default
|
|
|
\series default
|
|
|
: give any single-line python code to be executed.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
execfile\InsetSpace ~
|
|
|
<filename>
|
|
|
\family default
|
|
|
\series default
|
|
|
: execute the python file given with an '
|
|
|
\family typewriter
|
|
|
execfile(filename)
|
|
|
\family default
|
|
|
' command.
|
|
|
Username expansion is performed on the given names.
|
|
|
So if you need any amount of extra fancy customization that won't fit in
|
|
|
any of the above 'canned' options, you can just put it in a separate python
|
|
|
file and execute it.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
|
|
|
\family typewriter
|
|
|
\series bold
|
|
|
alias\InsetSpace ~
|
|
|
<alias_def>
|
|
|
\family default
|
|
|
\series default
|
|
|
: this is equivalent to calling '
|
|
|
\family typewriter
|
|
|
%alias\InsetSpace ~
|
|
|
<alias_def>
|
|
|
\family default
|
|
|
' at the IPython command line.
|
|
|
This way, from within IPython you can do common system tasks without having
|
|
|
to exit it or use the
|
|
|
\family typewriter
|
|
|
!
|
|
|
\family default
|
|
|
escape.
|
|
|
IPython isn't meant to be a shell replacement, but it is often very useful
|
|
|
to be able to do things with files while testing code.
|
|
|
This gives you the flexibility to have within IPython any aliases you may
|
|
|
be used to under your normal system shell.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:ipytonrc-sample}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Sample
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
file
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The default rcfile, called
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
and supplied in your
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
directory contains lots of comments on all of these options.
|
|
|
We reproduce it here for reference:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\begin_inset ERT
|
|
|
status open
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
codelist{../IPython/UserConfig/ipythonrc}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:prompts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Fine-tuning your prompt
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython's prompts can be customized using a syntax similar to that of the
|
|
|
|
|
|
\family typewriter
|
|
|
bash
|
|
|
\family default
|
|
|
shell.
|
|
|
Many of
|
|
|
\family typewriter
|
|
|
bash
|
|
|
\family default
|
|
|
's escapes are supported, as well as a few additional ones.
|
|
|
We list them below:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
# the prompt/history count number.
|
|
|
This escape is automatically wrapped in the coloring codes for the currently
|
|
|
active color scheme.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
N the 'naked' prompt/history count number: this is just the number itself,
|
|
|
without any coloring applied to it.
|
|
|
This lets you produce numbered prompts with your own colors.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
D the prompt/history count, with the actual digits replaced by dots.
|
|
|
Used mainly in continuation prompts (prompt_in2)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
w the current working directory
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
W the basename of current working directory
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
X
|
|
|
\emph on
|
|
|
n
|
|
|
\emph default
|
|
|
where
|
|
|
\begin_inset Formula $n=0\ldots5.$
|
|
|
\end_inset
|
|
|
|
|
|
The current working directory, with
|
|
|
\family typewriter
|
|
|
$HOME
|
|
|
\family default
|
|
|
replaced by
|
|
|
\family typewriter
|
|
|
~
|
|
|
\family default
|
|
|
, and filtered out to contain only
|
|
|
\begin_inset Formula $n$
|
|
|
\end_inset
|
|
|
|
|
|
path elements
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
Y
|
|
|
\emph on
|
|
|
n
|
|
|
\emph default
|
|
|
Similar to
|
|
|
\backslash
|
|
|
X
|
|
|
\emph on
|
|
|
n
|
|
|
\emph default
|
|
|
, but with the
|
|
|
\begin_inset Formula $n+1$
|
|
|
\end_inset
|
|
|
|
|
|
element included if it is
|
|
|
\family typewriter
|
|
|
~
|
|
|
\family default
|
|
|
(this is similar to the behavior of the %c
|
|
|
\emph on
|
|
|
n
|
|
|
\emph default
|
|
|
escapes in
|
|
|
\family typewriter
|
|
|
tcsh
|
|
|
\family default
|
|
|
)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
u the username of the current user
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
$ if the effective UID is 0, a #, otherwise a $
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
h the hostname up to the first `.'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
H the hostname
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
n a newline
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
r a carriage return
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
v IPython version string
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
In addition to these, ANSI color escapes can be insterted into the prompts,
|
|
|
as
|
|
|
\family typewriter
|
|
|
|
|
|
\backslash
|
|
|
C_
|
|
|
\emph on
|
|
|
ColorName
|
|
|
\family default
|
|
|
\emph default
|
|
|
.
|
|
|
The list of valid color names is: Black, Blue, Brown, Cyan, DarkGray, Green,
|
|
|
LightBlue, LightCyan, LightGray, LightGreen, LightPurple, LightRed, NoColor,
|
|
|
Normal, Purple, Red, White, Yellow.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Finally, IPython supports the evaluation of arbitrary expressions in your
|
|
|
prompt string.
|
|
|
The prompt strings are evaluated through the syntax of PEP 215, but basically
|
|
|
you can use
|
|
|
\family typewriter
|
|
|
$x.y
|
|
|
\family default
|
|
|
to expand the value of
|
|
|
\family typewriter
|
|
|
x.y
|
|
|
\family default
|
|
|
, and for more complicated expressions you can use braces:
|
|
|
\family typewriter
|
|
|
${foo()+x}
|
|
|
\family default
|
|
|
will call function
|
|
|
\family typewriter
|
|
|
foo
|
|
|
\family default
|
|
|
and add to it the value of
|
|
|
\family typewriter
|
|
|
x
|
|
|
\family default
|
|
|
, before putting the result into your prompt.
|
|
|
For example, using
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
prompt_in1 '${commands.getoutput("uptime")}
|
|
|
\backslash
|
|
|
nIn [
|
|
|
\backslash
|
|
|
#]: '
|
|
|
\newline
|
|
|
|
|
|
\family default
|
|
|
will print the result of the uptime command on each prompt (assuming the
|
|
|
|
|
|
\family typewriter
|
|
|
commands
|
|
|
\family default
|
|
|
module has been imported in your
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
file).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsubsection
|
|
|
Prompt examples
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following options in an ipythonrc file will give you IPython's default
|
|
|
prompts:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
prompt_in1 'In [
|
|
|
\backslash
|
|
|
#]:'
|
|
|
\newline
|
|
|
prompt_in2 '\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
.
|
|
|
\backslash
|
|
|
D.:'
|
|
|
\newline
|
|
|
prompt_out 'Out[
|
|
|
\backslash
|
|
|
#]:'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
which look like this:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [1]: 1+2
|
|
|
\newline
|
|
|
Out[1]: 3
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [2]: for i in (1,2,3):
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...: \InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
print i,
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...:
|
|
|
\newline
|
|
|
1 2 3
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
These will give you a very colorful prompt with path information:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
#prompt_in1 '
|
|
|
\backslash
|
|
|
C_Red
|
|
|
\backslash
|
|
|
u
|
|
|
\backslash
|
|
|
C_Blue[
|
|
|
\backslash
|
|
|
C_Cyan
|
|
|
\backslash
|
|
|
Y1
|
|
|
\backslash
|
|
|
C_Blue]
|
|
|
\backslash
|
|
|
C_LightGreen
|
|
|
\backslash
|
|
|
#>'
|
|
|
\newline
|
|
|
prompt_in2 ' ..
|
|
|
\backslash
|
|
|
D>'
|
|
|
\newline
|
|
|
prompt_out '<
|
|
|
\backslash
|
|
|
#>'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
which look like this:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
\color red
|
|
|
fperez
|
|
|
\color blue
|
|
|
[
|
|
|
\color cyan
|
|
|
~/ipython
|
|
|
\color blue
|
|
|
]
|
|
|
\color green
|
|
|
1>
|
|
|
\color none
|
|
|
1+2
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\color red
|
|
|
<1>
|
|
|
\color none
|
|
|
3
|
|
|
\newline
|
|
|
|
|
|
\color red
|
|
|
fperez
|
|
|
\color blue
|
|
|
[
|
|
|
\color cyan
|
|
|
~/ipython
|
|
|
\color blue
|
|
|
]
|
|
|
\color green
|
|
|
2>
|
|
|
\color none
|
|
|
for i in (1,2,3):
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\color green
|
|
|
...>
|
|
|
\color none
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
print i,
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\color green
|
|
|
...>
|
|
|
\color none
|
|
|
|
|
|
\newline
|
|
|
1 2 3
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following shows the usage of dynamic expression evaluation:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
\begin_inset LatexCommand \label{sec:profiles}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
IPython profiles
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
As we already mentioned, IPython supports the
|
|
|
\family typewriter
|
|
|
-profile
|
|
|
\family default
|
|
|
command-line option (see sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:cmd-line-opts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
).
|
|
|
A profile is nothing more than a particular configuration file like your
|
|
|
basic
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
one, but with particular customizations for a specific purpose.
|
|
|
When you start IPython with '
|
|
|
\family typewriter
|
|
|
ipython -profile <name>
|
|
|
\family default
|
|
|
', it assumes that in your
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
there is a file called
|
|
|
\family typewriter
|
|
|
ipythonrc-<name>
|
|
|
\family default
|
|
|
, and loads it instead of the normal
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This system allows you to maintain multiple configurations which load modules,
|
|
|
set options, define functions, etc.
|
|
|
suitable for different tasks and activate them in a very simple manner.
|
|
|
In order to avoid having to repeat all of your basic options (common things
|
|
|
that don't change such as your color preferences, for example), any profile
|
|
|
can include another configuration file.
|
|
|
The most common way to use profiles is then to have each one include your
|
|
|
basic
|
|
|
\family typewriter
|
|
|
ipythonrc
|
|
|
\family default
|
|
|
file as a starting point, and then add further customizations.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
In sections
|
|
|
\begin_inset LatexCommand \ref{sec:syntax-extensions}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
and
|
|
|
\begin_inset LatexCommand \ref{sec:Gnuplot}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
we discuss some particular profiles which come as part of the standard
|
|
|
IPython distribution.
|
|
|
You may also look in your
|
|
|
\family typewriter
|
|
|
IPYTHONDIR
|
|
|
\family default
|
|
|
directory, any file whose name begins with
|
|
|
\family typewriter
|
|
|
ipythonrc-
|
|
|
\family default
|
|
|
is a profile.
|
|
|
You can use those as examples for further customizations to suit your own
|
|
|
needs.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset OptArg
|
|
|
status open
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython as default...
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
IPython as your default Python environment
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Python honors the environment variable
|
|
|
\family typewriter
|
|
|
PYTHONSTARTUP
|
|
|
\family default
|
|
|
and will execute at startup the file referenced by this variable.
|
|
|
If you put at the end of this file the following two lines of code:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
import IPython
|
|
|
\newline
|
|
|
IPython.Shell.IPShell().mainloop(sys_exit=1)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
then IPython will be your working environment anytime you start Python.
|
|
|
The
|
|
|
\family typewriter
|
|
|
sys_exit=1
|
|
|
\family default
|
|
|
is needed to have IPython issue a call to
|
|
|
\family typewriter
|
|
|
sys.exit()
|
|
|
\family default
|
|
|
when it finishes, otherwise you'll be back at the normal Python '
|
|
|
\family typewriter
|
|
|
>>>
|
|
|
\family default
|
|
|
' prompt
|
|
|
\begin_inset Foot
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Based on an idea by Holger Krekel.
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This is probably useful to developers who manage multiple Python versions
|
|
|
and don't want to have correspondingly multiple IPython versions.
|
|
|
Note that in this mode, there is no way to pass IPython any command-line
|
|
|
options, as those are trapped first by Python itself.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:embed}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Embedding IPython
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
It is possible to start an IPython instance
|
|
|
\emph on
|
|
|
inside
|
|
|
\emph default
|
|
|
your own Python programs.
|
|
|
This allows you to evaluate dynamically the state of your code, operate
|
|
|
with your variables, analyze them, etc.
|
|
|
Note however that any changes you make to values while in the shell do
|
|
|
|
|
|
\emph on
|
|
|
not
|
|
|
\emph default
|
|
|
propagate back to the running code, so it is safe to modify your values
|
|
|
because you won't break your code in bizarre ways by doing so.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This feature allows you to easily have a fully functional python environment
|
|
|
for doing object introspection anywhere in your code with a simple function
|
|
|
call.
|
|
|
In some cases a simple print statement is enough, but if you need to do
|
|
|
more detailed analysis of a code fragment this feature can be very valuable.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
It can also be useful in scientific computing situations where it is common
|
|
|
to need to do some automatic, computationally intensive part and then stop
|
|
|
to look at data, plots, etc
|
|
|
\begin_inset Foot
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This functionality was inspired by IDL's combination of the
|
|
|
\family typewriter
|
|
|
stop
|
|
|
\family default
|
|
|
keyword and the
|
|
|
\family typewriter
|
|
|
.continue
|
|
|
\family default
|
|
|
executive command, which I have found very useful in the past, and by a
|
|
|
posting on comp.lang.python by cmkl <cmkleffner-AT-gmx.de> on Dec.
|
|
|
06/01 concerning similar uses of pyrepl.
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
Opening an IPython instance will give you full access to your data and
|
|
|
functions, and you can resume program execution once you are done with
|
|
|
the interactive part (perhaps to stop again later, as many times as needed).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following code snippet is the bare minimum you need to include in your
|
|
|
Python programs for this to work (detailed examples follow later):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
from IPython.Shell import IPShellEmbed
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
ipshell = IPShellEmbed()
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
ipshell() # this call anywhere in your program will start IPython
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can run embedded instances even in code which is itself being run at
|
|
|
the IPython interactive prompt with '
|
|
|
\family typewriter
|
|
|
%run\InsetSpace ~
|
|
|
<filename>
|
|
|
\family default
|
|
|
'.
|
|
|
Since it's easy to get lost as to where you are (in your top-level IPython
|
|
|
or in your embedded one), it's a good idea in such cases to set the in/out
|
|
|
prompts to something different for the embedded instances.
|
|
|
The code examples below illustrate this.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can also have multiple IPython instances in your program and open them
|
|
|
separately, for example with different options for data presentation.
|
|
|
If you close and open the same instance multiple times, its prompt counters
|
|
|
simply continue from each execution to the next.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Please look at the docstrings in the
|
|
|
\family typewriter
|
|
|
Shell.py
|
|
|
\family default
|
|
|
module for more details on the use of this system.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following sample file illustrating how to use the embedding functionality
|
|
|
is provided in the examples directory as
|
|
|
\family typewriter
|
|
|
example-embed.py
|
|
|
\family default
|
|
|
.
|
|
|
It should be fairly self-explanatory:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\begin_inset ERT
|
|
|
status open
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
codelist{examples/example-embed.py}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Once you understand how the system functions, you can use the following
|
|
|
code fragments in your programs which are ready for cut and paste:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\begin_inset ERT
|
|
|
status open
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
codelist{examples/example-embed-short.py}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:using-pdb}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Using the Python debugger (
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Running entire programs via
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
, the Python debugger, is a powerful interactive debugger which allows you
|
|
|
to step through code, set breakpoints, watch variables, etc.
|
|
|
IPython makes it very easy to start any script under the control of
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
, regardless of whether you have wrapped it into a
|
|
|
\family typewriter
|
|
|
`main()'
|
|
|
\family default
|
|
|
function or not.
|
|
|
For this, simply type
|
|
|
\family typewriter
|
|
|
`%run -d myscript'
|
|
|
\family default
|
|
|
at an IPython prompt.
|
|
|
See the
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
command's documentation (via
|
|
|
\family typewriter
|
|
|
`%run?'
|
|
|
\family default
|
|
|
or in Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:magic}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
) for more details, including how to control where
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
will stop execution first.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
For more information on the use of the
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
debugger, read the included
|
|
|
\family typewriter
|
|
|
pdb.doc
|
|
|
\family default
|
|
|
file (part of the standard Python distribution).
|
|
|
On a stock Linux system it is located at
|
|
|
\family typewriter
|
|
|
/usr/lib/python2.3/pdb.doc
|
|
|
\family default
|
|
|
, but the easiest way to read it is by using the
|
|
|
\family typewriter
|
|
|
help()
|
|
|
\family default
|
|
|
function of the
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
module as follows (in an IPython prompt):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
In [1]: import pdb
|
|
|
\newline
|
|
|
In [2]: pdb.help()
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This will load the
|
|
|
\family typewriter
|
|
|
pdb.doc
|
|
|
\family default
|
|
|
document in a file viewer for you automatically.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Automatic invocation of
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
on exceptions
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython, if started with the
|
|
|
\family typewriter
|
|
|
-pdb
|
|
|
\family default
|
|
|
option (or if the option is set in your rc file) can call the Python
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
debugger every time your code triggers an uncaught exception
|
|
|
\begin_inset Foot
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Many thanks to Christopher Hart for the request which prompted adding this
|
|
|
feature to IPython.
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
This feature can also be toggled at any time with the
|
|
|
\family typewriter
|
|
|
%pdb
|
|
|
\family default
|
|
|
magic command.
|
|
|
This can be extremely useful in order to find the origin of subtle bugs,
|
|
|
because
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
opens up at the point in your code which triggered the exception, and while
|
|
|
your program is at this point `dead', all the data is still available and
|
|
|
you can walk up and down the stack frame and understand the origin of the
|
|
|
problem.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Furthermore, you can use these debugging facilities both with the embedded
|
|
|
IPython mode and without IPython at all.
|
|
|
For an embedded shell (see sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:embed}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
), simply call the constructor with
|
|
|
\family typewriter
|
|
|
`-pdb'
|
|
|
\family default
|
|
|
in the argument string and automatically
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
will be called if an uncaught exception is triggered by your code.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
For stand-alone use of the feature in your programs which do not use IPython
|
|
|
at all, put the following lines toward the top of your `main' routine:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\align left
|
|
|
|
|
|
\family typewriter
|
|
|
import sys,IPython.ultraTB
|
|
|
\newline
|
|
|
sys.excepthook = IPython.ultraTB.FormattedTB(mode=`Verbos
|
|
|
e', color_scheme=`Linux', call_pdb=1)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
mode
|
|
|
\family default
|
|
|
keyword can be either
|
|
|
\family typewriter
|
|
|
`Verbose'
|
|
|
\family default
|
|
|
or
|
|
|
\family typewriter
|
|
|
`Plain'
|
|
|
\family default
|
|
|
, giving either very detailed or normal tracebacks respectively.
|
|
|
The
|
|
|
\family typewriter
|
|
|
color_scheme
|
|
|
\family default
|
|
|
keyword can be one of
|
|
|
\family typewriter
|
|
|
`NoColor'
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
`Linux'
|
|
|
\family default
|
|
|
(default) or
|
|
|
\family typewriter
|
|
|
`LightBG'
|
|
|
\family default
|
|
|
.
|
|
|
These are the same options which can be set in IPython with
|
|
|
\family typewriter
|
|
|
-colors
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
-xmode
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This will give any of your programs detailed, colored tracebacks with automatic
|
|
|
invocation of
|
|
|
\family typewriter
|
|
|
pdb
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:syntax-extensions}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Extensions for syntax processing
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This isn't for the faint of heart, because the potential for breaking things
|
|
|
is quite high.
|
|
|
But it can be a very powerful and useful feature.
|
|
|
In a nutshell, you can redefine the way IPython processes the user input
|
|
|
line to accept new, special extensions to the syntax without needing to
|
|
|
change any of IPython's own code.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
In the
|
|
|
\family typewriter
|
|
|
IPython/Extensions
|
|
|
\family default
|
|
|
directory you will find some examples supplied, which we will briefly describe
|
|
|
now.
|
|
|
These can be used `as is' (and both provide very useful functionality),
|
|
|
or you can use them as a starting point for writing your own extensions.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Pasting of code starting with
|
|
|
\family typewriter
|
|
|
`>>>
|
|
|
\family default
|
|
|
' or
|
|
|
\family typewriter
|
|
|
`...
|
|
|
|
|
|
\family default
|
|
|
'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
In the python tutorial it is common to find code examples which have been
|
|
|
taken from real python sessions.
|
|
|
The problem with those is that all the lines begin with either
|
|
|
\family typewriter
|
|
|
`>>>
|
|
|
\family default
|
|
|
' or
|
|
|
\family typewriter
|
|
|
`...
|
|
|
|
|
|
\family default
|
|
|
', which makes it impossible to paste them all at once.
|
|
|
One must instead do a line by line manual copying, carefully removing the
|
|
|
leading extraneous characters.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This extension identifies those starting characters and removes them from
|
|
|
the input automatically, so that one can paste multi-line examples directly
|
|
|
into IPython, saving a lot of time.
|
|
|
Please look at the file
|
|
|
\family typewriter
|
|
|
InterpreterPasteInput.py
|
|
|
\family default
|
|
|
in the
|
|
|
\family typewriter
|
|
|
IPython/Extensions
|
|
|
\family default
|
|
|
directory for details on how this is done.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython comes with a special profile enabling this feature, called
|
|
|
\family typewriter
|
|
|
tutorial
|
|
|
\family default
|
|
|
\emph on
|
|
|
.
|
|
|
|
|
|
\emph default
|
|
|
Simply start IPython via
|
|
|
\family typewriter
|
|
|
`ipython\InsetSpace ~
|
|
|
-p\InsetSpace ~
|
|
|
tutorial'
|
|
|
\family default
|
|
|
and the feature will be available.
|
|
|
In a normal IPython session you can activate the feature by importing the
|
|
|
corresponding module with:
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
In [1]: import IPython.Extensions.InterpreterPasteInput
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The following is a 'screenshot' of how things work when this extension is
|
|
|
on, copying an example from the standard tutorial:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
IPython profile: tutorial
|
|
|
\newline
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\newline
|
|
|
*** Pasting of code with ">>>" or "..." has been enabled.
|
|
|
\newline
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\newline
|
|
|
In
|
|
|
[1]: >>> def fib2(n): # return Fibonacci series up to n
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...: ...\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
"""Return a list containing the Fibonacci series up to n."""
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...: ...\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
result = []
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...: ...\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
a, b = 0, 1
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...: ...\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
while b < n:
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...: ...\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
result.append(b)\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
# see below
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...: ...\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
a, b = b, a+b
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...: ...\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
return result
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
...:
|
|
|
\newline
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\newline
|
|
|
In [2]: fib2(10)
|
|
|
\newline
|
|
|
Out[2]: [1, 1, 2, 3, 5, 8]
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Note that as currently written, this extension does
|
|
|
\emph on
|
|
|
not
|
|
|
\emph default
|
|
|
recognize IPython's prompts for pasting.
|
|
|
Those are more complicated, since the user can change them very easily,
|
|
|
they involve numbers and can vary in length.
|
|
|
One could however extract all the relevant information from the IPython
|
|
|
instance and build an appropriate regular expression.
|
|
|
This is left as an exercise for the reader.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Input of physical quantities with units
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The module
|
|
|
\family typewriter
|
|
|
PhysicalQInput
|
|
|
\family default
|
|
|
allows a simplified form of input for physical quantities with units.
|
|
|
This file is meant to be used in conjunction with the
|
|
|
\family typewriter
|
|
|
PhysicalQInteractive
|
|
|
\family default
|
|
|
module (in the same directory) and
|
|
|
\family typewriter
|
|
|
Physics.PhysicalQuantities
|
|
|
\family default
|
|
|
from Konrad Hinsen's ScientificPython (
|
|
|
\begin_inset LatexCommand \htmlurl{http://dirac.cnrs-orleans.fr/ScientificPython/}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
Physics.PhysicalQuantities
|
|
|
\family default
|
|
|
module defines
|
|
|
\family typewriter
|
|
|
PhysicalQuantity
|
|
|
\family default
|
|
|
objects, but these must be declared as instances of a class.
|
|
|
For example, to define
|
|
|
\family typewriter
|
|
|
v
|
|
|
\family default
|
|
|
as a velocity of 3\InsetSpace ~
|
|
|
m/s, normally you would write:
|
|
|
\family typewriter
|
|
|
|
|
|
\newline
|
|
|
In [1]: v = PhysicalQuantity(3,'m/s')
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Using the
|
|
|
\family typewriter
|
|
|
PhysicalQ_Input
|
|
|
\family default
|
|
|
extension this can be input instead as:
|
|
|
\family typewriter
|
|
|
|
|
|
\newline
|
|
|
In [1]: v = 3 m/s
|
|
|
\family default
|
|
|
|
|
|
\newline
|
|
|
which is much more convenient for interactive use (even though it is blatantly
|
|
|
invalid Python syntax).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
physics
|
|
|
\family default
|
|
|
profile supplied with IPython (enabled via
|
|
|
\family typewriter
|
|
|
'ipython -p physics'
|
|
|
\family default
|
|
|
) uses these extensions, which you can also activate with:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
from math import * # math MUST be imported BEFORE PhysicalQInteractive
|
|
|
\newline
|
|
|
from
|
|
|
IPython.Extensions.PhysicalQInteractive import *
|
|
|
\newline
|
|
|
import IPython.Extensions.PhysicalQ
|
|
|
Input
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:IPython-as-shell}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
IPython as a system shell
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython ships with a special profile called
|
|
|
\family typewriter
|
|
|
pysh
|
|
|
\family default
|
|
|
, which you can activate at the command line as
|
|
|
\family typewriter
|
|
|
`ipython -p pysh'
|
|
|
\family default
|
|
|
.
|
|
|
This loads
|
|
|
\family typewriter
|
|
|
InterpreterExec
|
|
|
\family default
|
|
|
, along with some additional facilities and a prompt customized for filesystem
|
|
|
navigation.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Note that this does
|
|
|
\emph on
|
|
|
not
|
|
|
\emph default
|
|
|
make IPython a full-fledged system shell.
|
|
|
In particular, it has no job control, so if you type Ctrl-Z (under Unix),
|
|
|
you'll suspend pysh itself, not the process you just started.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
What the shell profile allows you to do is to use the convenient and powerful
|
|
|
syntax of Python to do quick scripting at the command line.
|
|
|
Below we describe some of its features.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Aliases
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
All of your
|
|
|
\family typewriter
|
|
|
$PATH
|
|
|
\family default
|
|
|
has been loaded as IPython aliases, so you should be able to type any normal
|
|
|
system command and have it executed.
|
|
|
See
|
|
|
\family typewriter
|
|
|
%alias?
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
%unalias?
|
|
|
\family default
|
|
|
for details on the alias facilities.
|
|
|
See also
|
|
|
\family typewriter
|
|
|
%rehash?
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
%rehashx?
|
|
|
\family default
|
|
|
for details on the mechanism used to load
|
|
|
\family typewriter
|
|
|
$PATH
|
|
|
\family default
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Special syntax
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Any lines which begin with
|
|
|
\family typewriter
|
|
|
`~'
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
`/'
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
`.'
|
|
|
\family default
|
|
|
will be executed as shell commands instead of as Python code.
|
|
|
The special escapes below are also recognized.
|
|
|
|
|
|
\family typewriter
|
|
|
!cmd
|
|
|
\family default
|
|
|
is valid in single or multi-line input, all others are only valid in single-lin
|
|
|
e input:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\family typewriter
|
|
|
!cmd
|
|
|
\family default
|
|
|
pass `cmd' directly to the shell
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\family typewriter
|
|
|
!!cmd
|
|
|
\family default
|
|
|
execute `cmd' and return output as a list (split on `
|
|
|
\backslash
|
|
|
n')
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\family typewriter
|
|
|
$var=cmd
|
|
|
\family default
|
|
|
capture output of cmd into var, as a string
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\family typewriter
|
|
|
$$var=cmd
|
|
|
\family default
|
|
|
capture output of cmd into var, as a list (split on `
|
|
|
\backslash
|
|
|
n')
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
/
|
|
|
\family typewriter
|
|
|
$$
|
|
|
\family default
|
|
|
syntaxes make Python variables from system output, which you can later
|
|
|
use for further scripting.
|
|
|
The converse is also possible: when executing an alias or calling to the
|
|
|
system via
|
|
|
\family typewriter
|
|
|
!
|
|
|
\family default
|
|
|
/
|
|
|
\family typewriter
|
|
|
!!
|
|
|
\family default
|
|
|
, you can expand any python variable or expression by prepending it with
|
|
|
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
.
|
|
|
Full details of the allowed syntax can be found in Python's PEP 215.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
A few brief examples will illustrate these (note that the indentation below
|
|
|
may be incorrectly displayed):
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
fperez[~/test]|3> !ls *s.py
|
|
|
\newline
|
|
|
scopes.py strings.py
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
ls is an internal alias, so there's no need to use
|
|
|
\family typewriter
|
|
|
!
|
|
|
\family default
|
|
|
:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
fperez[~/test]|4> ls *s.py
|
|
|
\newline
|
|
|
scopes.py* strings.py
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
!!ls will return the output into a Python variable:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
fperez[~/test]|5> !!ls *s.py
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
<5> ['scopes.py', 'strings.py']
|
|
|
\newline
|
|
|
fperez[~/test]|6> print _5
|
|
|
\newline
|
|
|
['scopes.py', 'strings.py
|
|
|
']
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
$$
|
|
|
\family default
|
|
|
allow direct capture to named variables:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
fperez[~/test]|7> $astr = ls *s.py
|
|
|
\newline
|
|
|
fperez[~/test]|8> astr
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
<8> 'scopes.py
|
|
|
\backslash
|
|
|
nstrings.py'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
fperez[~/test]|9> $$alist = ls *s.py
|
|
|
\newline
|
|
|
fperez[~/test]|10> alist
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
<10> ['scopes.py', 'strings.py']
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
alist is now a normal python list you can loop over.
|
|
|
Using
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
will expand back the python values when alias calls are made:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
fperez[~/test]|11> for f in alist:
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
|..> \InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
print 'file',f,
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
|..> \InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
wc -l $f
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
|..>
|
|
|
\newline
|
|
|
file scopes.py 13 scopes.py
|
|
|
\newline
|
|
|
file strings.py 4 strings.py
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Note that you may need to protect your variables with braces if you want
|
|
|
to append strings to their names.
|
|
|
To copy all files in alist to
|
|
|
\family typewriter
|
|
|
.bak
|
|
|
\family default
|
|
|
extensions, you must use:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
fperez[~/test]|12> for f in alist:
|
|
|
\newline
|
|
|
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
hspace*{0mm}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
|..> \InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
cp $f ${f}.bak
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you try using
|
|
|
\family typewriter
|
|
|
$f.bak
|
|
|
\family default
|
|
|
, you'll get an AttributeError exception saying that your string object
|
|
|
doesn't have a
|
|
|
\family typewriter
|
|
|
.bak
|
|
|
\family default
|
|
|
attribute.
|
|
|
This is because the
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
expansion mechanism allows you to expand full Python expressions:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
fperez[~/test]|13> echo "sys.platform is: $sys.platform"
|
|
|
\newline
|
|
|
sys.platform is: linux2
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython's input history handling is still active, which allows you to rerun
|
|
|
a single block of multi-line input by simply using exec:
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
fperez[~/test]|14> $$alist = ls *.eps
|
|
|
\newline
|
|
|
fperez[~/test]|15> exec _i11
|
|
|
\newline
|
|
|
file image2.eps
|
|
|
921 image2.eps
|
|
|
\newline
|
|
|
file image.eps 921 image.eps
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
While these are new special-case syntaxes, they are designed to allow very
|
|
|
efficient use of the shell with minimal typing.
|
|
|
At an interactive shell prompt, conciseness of expression wins over readability.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Useful functions and modules
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The os, sys and shutil modules from the Python standard library are automaticall
|
|
|
y loaded.
|
|
|
Some additional functions, useful for shell usage, are listed below.
|
|
|
You can request more help about them with `
|
|
|
\family typewriter
|
|
|
?
|
|
|
\family default
|
|
|
'.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\family typewriter
|
|
|
shell
|
|
|
\family default
|
|
|
- execute a command in the underlying system shell
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\family typewriter
|
|
|
system
|
|
|
\family default
|
|
|
- like
|
|
|
\family typewriter
|
|
|
shell()
|
|
|
\family default
|
|
|
, but return the exit status of the command
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\family typewriter
|
|
|
sout
|
|
|
\family default
|
|
|
- capture the output of a command as a string
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\family typewriter
|
|
|
lout
|
|
|
\family default
|
|
|
- capture the output of a command as a list (split on `
|
|
|
\backslash
|
|
|
n')
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\family typewriter
|
|
|
getoutputerror
|
|
|
\family default
|
|
|
- capture (output,error) of a shell commandss
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
sout
|
|
|
\family default
|
|
|
/
|
|
|
\family typewriter
|
|
|
lout
|
|
|
\family default
|
|
|
are the functional equivalents of
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
/
|
|
|
\family typewriter
|
|
|
$$
|
|
|
\family default
|
|
|
.
|
|
|
They are provided to allow you to capture system output in the middle of
|
|
|
true python code, function definitions, etc (where
|
|
|
\family typewriter
|
|
|
$
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
$$
|
|
|
\family default
|
|
|
are invalid).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Directory management
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Since each command passed by pysh to the underlying system is executed in
|
|
|
a subshell which exits immediately, you can NOT use !cd to navigate the
|
|
|
filesystem.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Pysh provides its own builtin
|
|
|
\family typewriter
|
|
|
`%cd
|
|
|
\family default
|
|
|
' magic command to move in the filesystem (the
|
|
|
\family typewriter
|
|
|
%
|
|
|
\family default
|
|
|
is not required with automagic on).
|
|
|
It also maintains a list of visited directories (use
|
|
|
\family typewriter
|
|
|
%dhist
|
|
|
\family default
|
|
|
to see it) and allows direct switching to any of them.
|
|
|
Type
|
|
|
\family typewriter
|
|
|
`cd?
|
|
|
\family default
|
|
|
' for more details.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
%pushd
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
%popd
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
%dirs
|
|
|
\family default
|
|
|
are provided for directory stack handling.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Prompt customization
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The supplied
|
|
|
\family typewriter
|
|
|
ipythonrc-pysh
|
|
|
\family default
|
|
|
profile comes with an example of a very colored and detailed prompt, mainly
|
|
|
to serve as an illustration.
|
|
|
The valid escape sequences, besides color names, are:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
# - Prompt number, wrapped in the color escapes for the input prompt (determined
|
|
|
by the current color scheme).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
N - Just the prompt counter number,
|
|
|
\emph on
|
|
|
without
|
|
|
\emph default
|
|
|
any coloring wrappers.
|
|
|
You can thus customize the actual prompt colors manually.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
D - Dots, as many as there are digits in
|
|
|
\backslash
|
|
|
# (so they align).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
w - Current working directory (cwd).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
W - Basename of current working directory.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
X
|
|
|
\emph on
|
|
|
N
|
|
|
\emph default
|
|
|
- Where
|
|
|
\emph on
|
|
|
N
|
|
|
\emph default
|
|
|
=0..5.
|
|
|
N terms of the cwd, with $HOME written as ~.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
Y
|
|
|
\emph on
|
|
|
N
|
|
|
\emph default
|
|
|
- Where
|
|
|
\emph on
|
|
|
N
|
|
|
\emph default
|
|
|
=0..5.
|
|
|
Like X
|
|
|
\emph on
|
|
|
N
|
|
|
\emph default
|
|
|
, but if ~ is term
|
|
|
\emph on
|
|
|
N
|
|
|
\emph default
|
|
|
+1 it's also shown.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
u - Username.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
H - Full hostname.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
h - Hostname up to first '.'
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
$ - Root symbol ($ or #).
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
t - Current time, in H:M:S format.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
v - IPython release version.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
n - Newline.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
r - Carriage return.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
|
|
|
\backslash
|
|
|
- An explicitly escaped '
|
|
|
\backslash
|
|
|
'.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can configure your prompt colors using any ANSI color escape.
|
|
|
Each color escape sets the color for any subsequent text, until another
|
|
|
escape comes in and changes things.
|
|
|
The valid color escapes are:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_Black
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_Blue
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_Brown
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_Cyan
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_DarkGray
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_Green
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_LightBlue
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_LightCyan
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_LightGray
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_LightGreen
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_LightPurple
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_LightRed
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_Purple
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_Red
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_White
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_Yellow
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
|
|
|
\backslash
|
|
|
C_Normal Stop coloring, defaults to your terminal settings.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:Threading-support}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Threading support
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
WARNING:
|
|
|
\series default
|
|
|
The threading support is still somewhat experimental, and it has only seen
|
|
|
reasonable testing under Linux.
|
|
|
Threaded code is particularly tricky to debug, and it tends to show extremely
|
|
|
platform-dependent behavior.
|
|
|
Since I only have access to Linux machines, I will have to rely on user's
|
|
|
experiences and assistance for this area of IPython to improve under other
|
|
|
platforms.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython, via the
|
|
|
\family typewriter
|
|
|
-gthread
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
-qthread
|
|
|
\family default
|
|
|
,
|
|
|
\family typewriter
|
|
|
-q4thread
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
-wthread
|
|
|
\family default
|
|
|
options (described in Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:threading-opts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
), can run in multithreaded mode to support pyGTK, Qt3, Qt4 and WXPython
|
|
|
applications respectively.
|
|
|
These GUI toolkits need to control the python main loop of execution, so
|
|
|
under a normal Python interpreter, starting a pyGTK, Qt3, Qt4 or WXPython
|
|
|
application will immediately freeze the shell.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython, with one of these options (you can only use one at a time), separates
|
|
|
the graphical loop and IPython's code execution run into different threads.
|
|
|
This allows you to test interactively (with
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
, for example) your GUI code without blocking.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
A nice mini-tutorial on using IPython along with the Qt Designer application
|
|
|
is available at the SciPy wiki:
|
|
|
\begin_inset LatexCommand \htmlurl{http://www.scipy.org/Cookbook/Matplotlib/Qt_with_IPython_and_Designer}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Tk issues
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
As indicated in Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:threading-opts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
, a special
|
|
|
\family typewriter
|
|
|
-tk
|
|
|
\family default
|
|
|
option is provided to try and allow Tk graphical applications to coexist
|
|
|
interactively with WX, Qt or GTK ones.
|
|
|
Whether this works at all, however, is very platform and configuration
|
|
|
dependent.
|
|
|
Please experiment with simple test cases before committing to using this
|
|
|
combination of Tk and GTK/Qt/WX threading in a production environment.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
I/O pitfalls
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Be mindful that the Python interpreter switches between threads every
|
|
|
\begin_inset Formula $N$
|
|
|
\end_inset
|
|
|
|
|
|
bytecodes, where the default value as of Python\InsetSpace ~
|
|
|
2.3 is
|
|
|
\begin_inset Formula $N=100.$
|
|
|
\end_inset
|
|
|
|
|
|
This value can be read by using the
|
|
|
\family typewriter
|
|
|
sys.getcheckinterval()
|
|
|
\family default
|
|
|
function, and it can be reset via
|
|
|
\family typewriter
|
|
|
sys.setcheckinterval(
|
|
|
\emph on
|
|
|
N
|
|
|
\emph default
|
|
|
)
|
|
|
\family default
|
|
|
.
|
|
|
This switching of threads can cause subtly confusing effects if one of
|
|
|
your threads is doing file I/O.
|
|
|
In text mode, most systems only flush file buffers when they encounter
|
|
|
a
|
|
|
\family typewriter
|
|
|
`
|
|
|
\backslash
|
|
|
n'
|
|
|
\family default
|
|
|
.
|
|
|
An instruction as simple as
|
|
|
\family typewriter
|
|
|
|
|
|
\newline
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
print >> filehandle,
|
|
|
\begin_inset Quotes eld
|
|
|
\end_inset
|
|
|
|
|
|
hello world
|
|
|
\begin_inset Quotes erd
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\family default
|
|
|
|
|
|
\newline
|
|
|
actually consists of several bytecodes, so it is possible that the newline
|
|
|
does not reach your file before the next thread switch.
|
|
|
Similarly, if you are writing to a file in binary mode, the file won't
|
|
|
be flushed until the buffer fills, and your other thread may see apparently
|
|
|
truncated files.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
For this reason, if you are using IPython's thread support and have (for
|
|
|
example) a GUI application which will read data generated by files written
|
|
|
to from the IPython thread, the safest approach is to open all of your
|
|
|
files in unbuffered mode (the third argument to the
|
|
|
\family typewriter
|
|
|
file/open
|
|
|
\family default
|
|
|
function is the buffering value):
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
\InsetSpace ~
|
|
|
\InsetSpace ~
|
|
|
filehandle = open(filename,mode,0)
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This is obviously a brute force way of avoiding race conditions with the
|
|
|
file buffering.
|
|
|
If you want to do it cleanly, and you have a resource which is being shared
|
|
|
by the interactive IPython loop and your GUI thread, you should really
|
|
|
handle it with thread locking and syncrhonization properties.
|
|
|
The Python documentation discusses these.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:interactive-demos}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Interactive demos with IPython
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython ships with a basic system for running scripts interactively in sections,
|
|
|
useful when presenting code to audiences.
|
|
|
A few tags embedded in comments (so that the script remains valid Python
|
|
|
code) divide a file into separate blocks, and the demo can be run one block
|
|
|
at a time, with IPython printing (with syntax highlighting) the block before
|
|
|
executing it, and returning to the interactive prompt after each block.
|
|
|
The interactive namespace is updated after each block is run with the contents
|
|
|
of the demo's namespace.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This allows you to show a piece of code, run it and then execute interactively
|
|
|
commands based on the variables just created.
|
|
|
Once you want to continue, you simply execute the next block of the demo.
|
|
|
The following listing shows the markup necessary for dividing a script
|
|
|
into sections for execution as a demo.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\begin_inset ERT
|
|
|
status open
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
codelist{examples/example-demo.py}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
In order to run a file as a demo, you must first make a
|
|
|
\family typewriter
|
|
|
Demo
|
|
|
\family default
|
|
|
object out of it.
|
|
|
If the file is named
|
|
|
\family typewriter
|
|
|
myscript.py
|
|
|
\family default
|
|
|
, the following code will make a demo:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
from IPython.demo import Demo
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
mydemo = Demo('myscript.py')
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This creates the
|
|
|
\family typewriter
|
|
|
mydemo
|
|
|
\family default
|
|
|
object, whose blocks you run one at a time by simply calling the object
|
|
|
with no arguments.
|
|
|
If you have autocall active in IPython (the default), all you need to do
|
|
|
is type
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
mydemo
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
and IPython will call it, executing each block.
|
|
|
Demo objects can be restarted, you can move forward or back skipping blocks,
|
|
|
re-execute the last block, etc.
|
|
|
Simply use the Tab key on a demo object to see its methods, and call
|
|
|
\family typewriter
|
|
|
`?'
|
|
|
\family default
|
|
|
on them to see their docstrings for more usage details.
|
|
|
In addition, the
|
|
|
\family typewriter
|
|
|
demo
|
|
|
\family default
|
|
|
module itself contains a comprehensive docstring, which you can access
|
|
|
via
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
from IPython import demo
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout LyX-Code
|
|
|
demo?
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\series bold
|
|
|
Limitations:
|
|
|
\series default
|
|
|
It is important to note that these demos are limited to fairly simple uses.
|
|
|
In particular, you can
|
|
|
\emph on
|
|
|
not
|
|
|
\emph default
|
|
|
put division marks in indented code (loops, if statements, function definitions
|
|
|
, etc.) Supporting something like this would basically require tracking the
|
|
|
internal execution state of the Python interpreter, so only top-level divisions
|
|
|
are allowed.
|
|
|
If you want to be able to open an IPython instance at an arbitrary point
|
|
|
in a program, you can use IPython's embedding facilities, described in
|
|
|
detail in Sec\SpecialChar \@.
|
|
|
\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:embed}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:matplotlib-support}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Plotting with
|
|
|
\family typewriter
|
|
|
matplotlib
|
|
|
\family default
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The matplotlib library (
|
|
|
\begin_inset LatexCommand \htmlurl[http://matplotlib.sourceforge.net]{http://matplotlib.sourceforge.net}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
) provides high quality 2D plotting for Python.
|
|
|
Matplotlib can produce plots on screen using a variety of GUI toolkits,
|
|
|
including Tk, GTK and WXPython.
|
|
|
It also provides a number of commands useful for scientific computing,
|
|
|
all with a syntax compatible with that of the popular Matlab program.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython accepts the special option
|
|
|
\family typewriter
|
|
|
-pylab
|
|
|
\family default
|
|
|
(Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:cmd-line-opts}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
).
|
|
|
This configures it to support matplotlib, honoring the settings in the
|
|
|
|
|
|
\family typewriter
|
|
|
.matplotlibrc
|
|
|
\family default
|
|
|
file.
|
|
|
IPython will detect the user's choice of matplotlib GUI backend, and automatica
|
|
|
lly select the proper threading model to prevent blocking.
|
|
|
It also sets matplotlib in interactive mode and modifies
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
slightly, so that any matplotlib-based script can be executed using
|
|
|
\family typewriter
|
|
|
%run
|
|
|
\family default
|
|
|
and the final
|
|
|
\family typewriter
|
|
|
show()
|
|
|
\family default
|
|
|
command does not block the interactive shell.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
-pylab
|
|
|
\family default
|
|
|
option must be given first in order for IPython to configure its threading
|
|
|
mode.
|
|
|
However, you can still issue other options afterwards.
|
|
|
This allows you to have a matplotlib-based environment customized with
|
|
|
additional modules using the standard IPython profile mechanism (Sec.\InsetSpace ~
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:profiles}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
): ``
|
|
|
\family typewriter
|
|
|
ipython -pylab -p myprofile
|
|
|
\family default
|
|
|
'' will load the profile defined in
|
|
|
\family typewriter
|
|
|
ipythonrc-myprofile
|
|
|
\family default
|
|
|
after configuring matplotlib.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:Gnuplot}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Plotting with
|
|
|
\family typewriter
|
|
|
Gnuplot
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Through the magic extension system described in sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:magic}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
, IPython incorporates a mechanism for conveniently interfacing with the
|
|
|
Gnuplot system (
|
|
|
\begin_inset LatexCommand \htmlurl{http://www.gnuplot.info}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
).
|
|
|
Gnuplot is a very complete 2D and 3D plotting package available for many
|
|
|
operating systems and commonly included in modern Linux distributions.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Besides having Gnuplot installed, this functionality requires the
|
|
|
\family typewriter
|
|
|
Gnuplot.py
|
|
|
\family default
|
|
|
module for interfacing python with Gnuplot.
|
|
|
It can be downloaded from:
|
|
|
\begin_inset LatexCommand \htmlurl{http://gnuplot-py.sourceforge.net}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Proper Gnuplot configuration
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
As of version 4.0, Gnuplot has excellent mouse and interactive keyboard support.
|
|
|
However, as of
|
|
|
\family typewriter
|
|
|
Gnuplot.py
|
|
|
\family default
|
|
|
version 1.7, a new option was added to communicate between Python and Gnuplot
|
|
|
via FIFOs (pipes).
|
|
|
This mechanism, while fast, also breaks the mouse system.
|
|
|
You must therefore set the variable
|
|
|
\family typewriter
|
|
|
prefer_fifo_data
|
|
|
\family default
|
|
|
to
|
|
|
\family typewriter
|
|
|
0
|
|
|
\family default
|
|
|
in file
|
|
|
\family typewriter
|
|
|
gp_unix.py
|
|
|
\family default
|
|
|
if you wish to keep the interactive mouse and keyboard features working
|
|
|
properly (
|
|
|
\family typewriter
|
|
|
prefer_inline_data
|
|
|
\family default
|
|
|
also must be
|
|
|
\family typewriter
|
|
|
0
|
|
|
\family default
|
|
|
, but this is the default so unless you've changed it manually you should
|
|
|
be fine).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
'Out of the box', Gnuplot is configured with a rather poor set of size,
|
|
|
color and linewidth choices which make the graphs fairly hard to read on
|
|
|
modern high-resolution displays (although they work fine on old 640x480
|
|
|
ones).
|
|
|
Below is a section of my
|
|
|
\family typewriter
|
|
|
.Xdefaults
|
|
|
\family default
|
|
|
file which I use for having a more convenient Gnuplot setup.
|
|
|
Remember to load it by running
|
|
|
\family typewriter
|
|
|
`xrdb .Xdefaults`
|
|
|
\family default
|
|
|
:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
!******************************************************************
|
|
|
\newline
|
|
|
! gnuplot
|
|
|
options
|
|
|
\newline
|
|
|
! modify this for a convenient window size
|
|
|
\newline
|
|
|
gnuplot*geometry: 780x580
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
! on-screen font (not for PostScript)
|
|
|
\newline
|
|
|
gnuplot*font: -misc-fixed-bold-r-normal--15
|
|
|
-120-100-100-c-90-iso8859-1
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
! color options
|
|
|
\newline
|
|
|
gnuplot*background: black
|
|
|
\newline
|
|
|
gnuplot*textColor: white
|
|
|
\newline
|
|
|
gnuplot*borderCo
|
|
|
lor: white
|
|
|
\newline
|
|
|
gnuplot*axisColor: white
|
|
|
\newline
|
|
|
gnuplot*line1Color: red
|
|
|
\newline
|
|
|
gnuplot*line2Color:
|
|
|
green
|
|
|
\newline
|
|
|
gnuplot*line3Color: blue
|
|
|
\newline
|
|
|
gnuplot*line4Color: magenta
|
|
|
\newline
|
|
|
gnuplot*line5Color:
|
|
|
cyan
|
|
|
\newline
|
|
|
gnuplot*line6Color: sienna
|
|
|
\newline
|
|
|
gnuplot*line7Color: orange
|
|
|
\newline
|
|
|
gnuplot*line8Color:
|
|
|
coral
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
! multiplicative factor for point styles
|
|
|
\newline
|
|
|
gnuplot*pointsize: 2
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
\family typewriter
|
|
|
! line width options (in pixels)
|
|
|
\newline
|
|
|
gnuplot*borderWidth: 2
|
|
|
\newline
|
|
|
gnuplot*axisWidth:
|
|
|
2
|
|
|
\newline
|
|
|
gnuplot*line1Width: 2
|
|
|
\newline
|
|
|
gnuplot*line2Width: 2
|
|
|
\newline
|
|
|
gnuplot*line3Width: 2
|
|
|
\newline
|
|
|
gnuplot*line4Wi
|
|
|
dth: 2
|
|
|
\newline
|
|
|
gnuplot*line5Width: 2
|
|
|
\newline
|
|
|
gnuplot*line6Width: 2
|
|
|
\newline
|
|
|
gnuplot*line7Width: 2
|
|
|
\newline
|
|
|
gnuplot*lin
|
|
|
e8Width: 2
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
The
|
|
|
\family typewriter
|
|
|
IPython.GnuplotRuntime
|
|
|
\family default
|
|
|
module
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython includes a module called
|
|
|
\family typewriter
|
|
|
Gnuplot2.py
|
|
|
\family default
|
|
|
which extends and improves the default
|
|
|
\family typewriter
|
|
|
Gnuplot
|
|
|
\family default
|
|
|
.
|
|
|
\family typewriter
|
|
|
py
|
|
|
\family default
|
|
|
(which it still relies upon).
|
|
|
For example, the new
|
|
|
\family typewriter
|
|
|
plot
|
|
|
\family default
|
|
|
function adds several improvements to the original making it more convenient
|
|
|
for interactive use, and
|
|
|
\family typewriter
|
|
|
hardcopy
|
|
|
\family default
|
|
|
fixes a bug in the original which under some circumstances blocks the creation
|
|
|
of PostScript output.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
For scripting use,
|
|
|
\family typewriter
|
|
|
GnuplotRuntime.py
|
|
|
\family default
|
|
|
is provided, which wraps
|
|
|
\family typewriter
|
|
|
Gnuplot2.py
|
|
|
\family default
|
|
|
and creates a series of global aliases.
|
|
|
These make it easy to control Gnuplot plotting jobs through the Python
|
|
|
language.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Below is some example code which illustrates how to configure Gnuplot inside
|
|
|
your own programs but have it available for further interactive use through
|
|
|
an embedded IPython instance.
|
|
|
Simply run this file at a system prompt.
|
|
|
This file is provided as
|
|
|
\family typewriter
|
|
|
example-gnuplot.py
|
|
|
\family default
|
|
|
in the examples directory:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\begin_inset ERT
|
|
|
status open
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
codelist{examples/example-gnuplot.py}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
The
|
|
|
\family typewriter
|
|
|
numeric
|
|
|
\family default
|
|
|
profile: a scientific computing environment
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The
|
|
|
\family typewriter
|
|
|
numeric
|
|
|
\family default
|
|
|
IPython profile, which you can activate with
|
|
|
\family typewriter
|
|
|
`ipython -p numeric
|
|
|
\family default
|
|
|
' will automatically load the IPython Gnuplot extensions (plus Numeric and
|
|
|
other useful things for numerical computing), contained in the
|
|
|
\family typewriter
|
|
|
IPython.GnuplotInteractive
|
|
|
\family default
|
|
|
module.
|
|
|
This will create the globals
|
|
|
\family typewriter
|
|
|
Gnuplot
|
|
|
\family default
|
|
|
(an alias to the improved Gnuplot2 module),
|
|
|
\family typewriter
|
|
|
gp
|
|
|
\family default
|
|
|
(a Gnuplot active instance), the new magic commands
|
|
|
\family typewriter
|
|
|
%gpc
|
|
|
\family default
|
|
|
and
|
|
|
\family typewriter
|
|
|
%gp_set_instance
|
|
|
\family default
|
|
|
and several other convenient globals.
|
|
|
Type
|
|
|
\family typewriter
|
|
|
gphelp()
|
|
|
\family default
|
|
|
for further details.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
This should turn IPython into a convenient environment for numerical computing,
|
|
|
with all the functions in the NumPy library and the Gnuplot facilities
|
|
|
for plotting.
|
|
|
Further improvements can be obtained by loading the SciPy libraries for
|
|
|
scientific computing, available at
|
|
|
\begin_inset LatexCommand \htmlurl{http://scipy.org}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
If you are in the middle of a working session with numerical objects and
|
|
|
need to plot them but you didn't start the
|
|
|
\family typewriter
|
|
|
numeric
|
|
|
\family default
|
|
|
profile, you can load these extensions at any time by typing
|
|
|
\newline
|
|
|
|
|
|
\family typewriter
|
|
|
from IPython.GnuplotInteractive import *
|
|
|
\newline
|
|
|
|
|
|
\family default
|
|
|
at the IPython prompt.
|
|
|
This will allow you to keep your objects intact and start using Gnuplot
|
|
|
to view them.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
Reporting bugs
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection*
|
|
|
Automatic crash reports
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Ideally, IPython itself shouldn't crash.
|
|
|
It will catch exceptions produced by you, but bugs in its internals will
|
|
|
still crash it.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
In such a situation, IPython will leave a file named
|
|
|
\family typewriter
|
|
|
IPython_crash_report.txt
|
|
|
\family default
|
|
|
in your IPYTHONDIR directory (that way if crashes happen several times
|
|
|
it won't litter many directories, the post-mortem file is always located
|
|
|
in the same place and new occurrences just overwrite the previous one).
|
|
|
If you can mail this file to the developers (see sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{sec:credits}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
for names and addresses), it will help us
|
|
|
\emph on
|
|
|
a lot
|
|
|
\emph default
|
|
|
in understanding the cause of the problem and fixing it sooner.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection*
|
|
|
The bug tracker
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython also has an online bug-tracker, located at
|
|
|
\begin_inset LatexCommand \htmlurl{http://projects.scipy.org/ipython/ipython/report/1}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
In addition to mailing the developers, it would be a good idea to file
|
|
|
a bug report here.
|
|
|
This will ensure that the issue is properly followed to conclusion.
|
|
|
To report new bugs you will have to register first.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
You can also use this bug tracker to file feature requests.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
Brief history
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Origins
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The current IPython system grew out of the following three projects:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
ipython by Fernando P
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
'{e}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
rez.
|
|
|
I was working on adding Mathematica-type prompts and a flexible configuration
|
|
|
system (something better than
|
|
|
\family typewriter
|
|
|
$PYTHONSTARTUP
|
|
|
\family default
|
|
|
) to the standard Python interactive interpreter.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
IPP by Janko Hauser.
|
|
|
Very well organized, great usability.
|
|
|
Had an old help system.
|
|
|
IPP was used as the `container' code into which I added the functionality
|
|
|
from ipython and LazyPython.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
LazyPython by Nathan Gray.
|
|
|
Simple but
|
|
|
\emph on
|
|
|
very
|
|
|
\emph default
|
|
|
powerful.
|
|
|
The quick syntax (auto parens, auto quotes) and verbose/colored tracebacks
|
|
|
were all taken from here.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
When I found out (see sec.
|
|
|
|
|
|
\begin_inset LatexCommand \ref{figgins}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
) about IPP and LazyPython I tried to join all three into a unified system.
|
|
|
I thought this could provide a very nice working environment, both for
|
|
|
regular programming and scientific computing: shell-like features, IDL/Matlab
|
|
|
numerics, Mathematica-type prompt history and great object introspection
|
|
|
and help facilities.
|
|
|
I think it worked reasonably well, though it was a lot more work than I
|
|
|
had initially planned.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Current status
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The above listed features work, and quite well for the most part.
|
|
|
But until a major internal restructuring is done (see below), only bug
|
|
|
fixing will be done, no other features will be added (unless very minor
|
|
|
and well localized in the cleaner parts of the code).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython consists of some 18000 lines of pure python code, of which roughly
|
|
|
two thirds is reasonably clean.
|
|
|
The rest is, messy code which needs a massive restructuring before any
|
|
|
further major work is done.
|
|
|
Even the messy code is fairly well documented though, and most of the problems
|
|
|
in the (non-existent) class design are well pointed to by a PyChecker run.
|
|
|
So the rewriting work isn't that bad, it will just be time-consuming.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Subsection
|
|
|
Future
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
See the separate
|
|
|
\family typewriter
|
|
|
new_design
|
|
|
\family default
|
|
|
document for details.
|
|
|
Ultimately, I would like to see IPython become part of the standard Python
|
|
|
distribution as a `big brother with batteries' to the standard Python interacti
|
|
|
ve interpreter.
|
|
|
But that will never happen with the current state of the code, so all contribut
|
|
|
ions are welcome.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
License
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython is released under the terms of the BSD license, whose general form
|
|
|
can be found at:
|
|
|
\begin_inset LatexCommand \htmlurl{http://www.opensource.org/licenses/bsd-license.php}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
The full text of the IPython license is reproduced below:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
\size small
|
|
|
IPython is released under a BSD-type license.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
\size small
|
|
|
Copyright (c) 2001, 2002, 2003, 2004 Fernando Perez <fperez@colorado.edu>.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
\size small
|
|
|
Copyright (c) 2001 Janko Hauser <jhauser@zscout.de> and
|
|
|
\newline
|
|
|
Nathaniel Gray <n8gray@ca
|
|
|
ltech.edu>.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
\size small
|
|
|
All rights reserved.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
\size small
|
|
|
Redistribution and use in source and binary forms, with or without modification,
|
|
|
are permitted provided that the following conditions are met:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
\size small
|
|
|
a.
|
|
|
Redistributions of source code must retain the above copyright notice,
|
|
|
this list of conditions and the following disclaimer.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
\size small
|
|
|
b.
|
|
|
Redistributions in binary form must reproduce the above copyright notice,
|
|
|
this list of conditions and the following disclaimer in the documentation
|
|
|
and/or other materials provided with the distribution.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
\size small
|
|
|
c.
|
|
|
Neither the name of the copyright holders nor the names of any contributors
|
|
|
to this software may be used to endorse or promote products derived from
|
|
|
this software without specific prior written permission.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Quote
|
|
|
|
|
|
\family typewriter
|
|
|
\size small
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
|
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
|
PURPOSE ARE DISCLAIMED.
|
|
|
IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
|
|
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
|
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
|
|
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
|
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Individual authors are the holders of the copyright for their code and are
|
|
|
listed in each file.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Some files (
|
|
|
\family typewriter
|
|
|
DPyGetOpt.py
|
|
|
\family default
|
|
|
, for example) may be licensed under different conditions.
|
|
|
Ultimately each file indicates clearly the conditions under which its author/au
|
|
|
thors have decided to publish the code.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Versions of IPython up to and including 0.6.3 were released under the GNU
|
|
|
Lesser General Public License (LGPL), available at
|
|
|
\begin_inset LatexCommand \htmlurl{http://www.gnu.org/copyleft/lesser.html}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Section
|
|
|
\begin_inset LatexCommand \label{sec:credits}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Credits
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython is mainly developed by Fernando P
|
|
|
\begin_inset ERT
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
|
|
|
|
|
|
\backslash
|
|
|
'{e}
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
rez
|
|
|
\family typewriter
|
|
|
<Fernando.Perez@colorado.edu>
|
|
|
\family default
|
|
|
, but the project was born from mixing in Fernando's code with the IPP project
|
|
|
by Janko Hauser
|
|
|
\family typewriter
|
|
|
<jhauser-AT-zscout.de>
|
|
|
\family default
|
|
|
and LazyPython by Nathan Gray
|
|
|
\family typewriter
|
|
|
<n8gray-AT-caltech.edu>
|
|
|
\family default
|
|
|
.
|
|
|
For all IPython-related requests, please contact Fernando.
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
As of early 2006, the following developers have joined the core team:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Robert\InsetSpace ~
|
|
|
Kern
|
|
|
\family typewriter
|
|
|
<rkern-AT-enthought.com>
|
|
|
\family default
|
|
|
: co-mentored the 2005 Google Summer of Code project to develop python interacti
|
|
|
ve notebooks (XML documents) and graphical interface.
|
|
|
This project was awarded to the students Tzanko Matev
|
|
|
\family typewriter
|
|
|
<tsanko-AT-gmail.com>
|
|
|
\family default
|
|
|
and Toni Alatalo
|
|
|
\family typewriter
|
|
|
<antont-AT-an.org>
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Brian\InsetSpace ~
|
|
|
Granger
|
|
|
\family typewriter
|
|
|
<bgranger-AT-scu.edu>
|
|
|
\family default
|
|
|
: extending IPython to allow support for interactive parallel computing.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Ville\InsetSpace ~
|
|
|
Vainio
|
|
|
\family typewriter
|
|
|
<vivainio-AT-gmail.com>
|
|
|
\family default
|
|
|
: Ville is the new maintainer for the main trunk of IPython after version
|
|
|
0.7.1.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
User or development help should be requested via the IPython mailing lists:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
User\InsetSpace ~
|
|
|
list:
|
|
|
\begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-user}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Description
|
|
|
Developer's\InsetSpace ~
|
|
|
list:
|
|
|
\begin_inset LatexCommand \htmlurl{http://scipy.net/mailman/listinfo/ipython-dev}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
The IPython project is also very grateful to
|
|
|
\begin_inset Foot
|
|
|
status collapsed
|
|
|
|
|
|
\begin_layout Standard
|
|
|
I've mangled email addresses to reduce spam, since the IPython manuals can
|
|
|
be accessed online.
|
|
|
\end_layout
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Bill Bumgarner
|
|
|
\family typewriter
|
|
|
<bbum-AT-friday.com>
|
|
|
\family default
|
|
|
: for providing the DPyGetOpt module which gives very powerful and convenient
|
|
|
handling of command-line options (light years ahead of what Python 2.1.1's
|
|
|
getopt module does).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Ka-Ping Yee
|
|
|
\family typewriter
|
|
|
<ping-AT-lfw.org>
|
|
|
\family default
|
|
|
: for providing the Itpl module for convenient and powerful string interpolation
|
|
|
with a much nicer syntax than formatting through the '%' operator.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Arnd Baecker
|
|
|
\family typewriter
|
|
|
<baecker-AT-physik.tu-dresden.de>
|
|
|
\family default
|
|
|
: for his many very useful suggestions and comments, and lots of help with
|
|
|
testing and documentation checking.
|
|
|
Many of IPython's newer features are a result of discussions with him (bugs
|
|
|
are still my fault, not his).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
Obviously Guido van\InsetSpace ~
|
|
|
Rossum and the whole Python development team, that goes
|
|
|
without saying.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
IPython's website is generously hosted at
|
|
|
\begin_inset LatexCommand \htmlurl{http://ipython.scipy.org}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
by Enthought (
|
|
|
\begin_inset LatexCommand \htmlurl{http://www.enthought.com}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
).
|
|
|
I am very grateful to them and all of the SciPy team for their contribution.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
\begin_inset LatexCommand \label{figgins}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
Fernando would also like to thank Stephen Figgins
|
|
|
\family typewriter
|
|
|
<fig-AT-monitor.net>
|
|
|
\family default
|
|
|
, an O'Reilly Python editor.
|
|
|
His Oct/11/2001 article about IPP and LazyPython, was what got this project
|
|
|
started.
|
|
|
You can read it at:
|
|
|
\begin_inset LatexCommand \htmlurl{http://www.onlamp.com/pub/a/python/2001/10/11/pythonnews.html}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout Standard
|
|
|
And last but not least, all the kind IPython users who have emailed new
|
|
|
code, bug reports, fixes, comments and ideas.
|
|
|
A brief list follows, please let me know if I have ommitted your name by
|
|
|
accident:
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Jack\InsetSpace ~
|
|
|
Moffit
|
|
|
\family typewriter
|
|
|
<jack-AT-xiph.org>
|
|
|
\family default
|
|
|
Bug fixes, including the infamous color problem.
|
|
|
This bug alone caused many lost hours and frustration, many thanks to him
|
|
|
for the fix.
|
|
|
I've always been a fan of Ogg & friends, now I have one more reason to
|
|
|
like these folks.
|
|
|
\newline
|
|
|
Jack is also contributing with Debian packaging and many
|
|
|
other things.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Alexander\InsetSpace ~
|
|
|
Schmolck
|
|
|
\family typewriter
|
|
|
<a.schmolck-AT-gmx.net>
|
|
|
\family default
|
|
|
Emacs work, bug reports, bug fixes, ideas, lots more.
|
|
|
The ipython.el mode for (X)Emacs is Alex's code, providing full support
|
|
|
for IPython under (X)Emacs.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Andrea\InsetSpace ~
|
|
|
Riciputi
|
|
|
\family typewriter
|
|
|
<andrea.riciputi-AT-libero.it>
|
|
|
\family default
|
|
|
Mac OSX information, Fink package management.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Gary\InsetSpace ~
|
|
|
Bishop
|
|
|
\family typewriter
|
|
|
<gb-AT-cs.unc.edu>
|
|
|
\family default
|
|
|
Bug reports, and patches to work around the exception handling idiosyncracies
|
|
|
of WxPython.
|
|
|
Readline and color support for Windows.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Jeffrey\InsetSpace ~
|
|
|
Collins
|
|
|
\family typewriter
|
|
|
<Jeff.Collins-AT-vexcel.com>
|
|
|
\family default
|
|
|
Bug reports.
|
|
|
Much improved readline support, including fixes for Python 2.3.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Dryice\InsetSpace ~
|
|
|
Liu
|
|
|
\family typewriter
|
|
|
<dryice-AT-liu.com.cn>
|
|
|
\family default
|
|
|
FreeBSD port.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Mike\InsetSpace ~
|
|
|
Heeter
|
|
|
\family typewriter
|
|
|
<korora-AT-SDF.LONESTAR.ORG>
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Christopher\InsetSpace ~
|
|
|
Hart
|
|
|
\family typewriter
|
|
|
<hart-AT-caltech.edu>
|
|
|
\family default
|
|
|
PDB integration.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Milan\InsetSpace ~
|
|
|
Zamazal
|
|
|
\family typewriter
|
|
|
<pdm-AT-zamazal.org>
|
|
|
\family default
|
|
|
Emacs info.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Philip\InsetSpace ~
|
|
|
Hisley
|
|
|
\family typewriter
|
|
|
<compsys-AT-starpower.net>
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Holger\InsetSpace ~
|
|
|
Krekel
|
|
|
\family typewriter
|
|
|
<pyth-AT-devel.trillke.net>
|
|
|
\family default
|
|
|
Tab completion, lots more.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Robin\InsetSpace ~
|
|
|
Siebler
|
|
|
\family typewriter
|
|
|
<robinsiebler-AT-starband.net>
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Ralf\InsetSpace ~
|
|
|
Ahlbrink
|
|
|
\family typewriter
|
|
|
<ralf_ahlbrink-AT-web.de>
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Thorsten\InsetSpace ~
|
|
|
Kampe
|
|
|
\family typewriter
|
|
|
<thorsten-AT-thorstenkampe.de>
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Fredrik\InsetSpace ~
|
|
|
Kant
|
|
|
\family typewriter
|
|
|
<fredrik.kant-AT-front.com>
|
|
|
\family default
|
|
|
Windows setup.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Syver\InsetSpace ~
|
|
|
Enstad
|
|
|
\family typewriter
|
|
|
<syver-en-AT-online.no>
|
|
|
\family default
|
|
|
Windows setup.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Richard
|
|
|
\family typewriter
|
|
|
<rxe-AT-renre-europe.com>
|
|
|
\family default
|
|
|
Global embedding.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Hayden\InsetSpace ~
|
|
|
Callow
|
|
|
\family typewriter
|
|
|
<h.callow-AT-elec.canterbury.ac.nz>
|
|
|
\family default
|
|
|
Gnuplot.py 1.6 compatibility.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Leonardo\InsetSpace ~
|
|
|
Santagada
|
|
|
\family typewriter
|
|
|
<retype-AT-terra.com.br>
|
|
|
\family default
|
|
|
Fixes for Windows installation.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Christopher\InsetSpace ~
|
|
|
Armstrong
|
|
|
\family typewriter
|
|
|
<radix-AT-twistedmatrix.com>
|
|
|
\family default
|
|
|
Bugfixes.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Francois\InsetSpace ~
|
|
|
Pinard
|
|
|
\family typewriter
|
|
|
<pinard-AT-iro.umontreal.ca>
|
|
|
\family default
|
|
|
Code and documentation fixes.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Cory\InsetSpace ~
|
|
|
Dodt
|
|
|
\family typewriter
|
|
|
<cdodt-AT-fcoe.k12.ca.us>
|
|
|
\family default
|
|
|
Bug reports and Windows ideas.
|
|
|
Patches for Windows installer.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Olivier\InsetSpace ~
|
|
|
Aubert
|
|
|
\family typewriter
|
|
|
<oaubert-AT-bat710.univ-lyon1.fr>
|
|
|
\family default
|
|
|
New magics.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
King\InsetSpace ~
|
|
|
C.\InsetSpace ~
|
|
|
Shu
|
|
|
\family typewriter
|
|
|
<kingshu-AT-myrealbox.com>
|
|
|
\family default
|
|
|
Autoindent patch.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Chris\InsetSpace ~
|
|
|
Drexler
|
|
|
\family typewriter
|
|
|
<chris-AT-ac-drexler.de>
|
|
|
\family default
|
|
|
Readline packages for Win32/CygWin.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Gustavo\InsetSpace ~
|
|
|
Cordova\InsetSpace ~
|
|
|
Avila
|
|
|
\family typewriter
|
|
|
<gcordova-AT-sismex.com>
|
|
|
\family default
|
|
|
EvalDict code for nice, lightweight string interpolation.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Kasper\InsetSpace ~
|
|
|
Souren
|
|
|
\family typewriter
|
|
|
<Kasper.Souren-AT-ircam.fr>
|
|
|
\family default
|
|
|
Bug reports, ideas.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Gever\InsetSpace ~
|
|
|
Tulley
|
|
|
\family typewriter
|
|
|
<gever-AT-helium.com>
|
|
|
\family default
|
|
|
Code contributions.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Ralf\InsetSpace ~
|
|
|
Schmitt
|
|
|
\family typewriter
|
|
|
<ralf-AT-brainbot.com>
|
|
|
\family default
|
|
|
Bug reports & fixes.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Oliver\InsetSpace ~
|
|
|
Sander
|
|
|
\family typewriter
|
|
|
<osander-AT-gmx.de>
|
|
|
\family default
|
|
|
Bug reports.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Rod\InsetSpace ~
|
|
|
Holland
|
|
|
\family typewriter
|
|
|
<rhh-AT-structurelabs.com>
|
|
|
\family default
|
|
|
Bug reports and fixes to logging module.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Daniel\InsetSpace ~
|
|
|
'Dang'\InsetSpace ~
|
|
|
Griffith
|
|
|
\family typewriter
|
|
|
<pythondev-dang-AT-lazytwinacres.net>
|
|
|
\family default
|
|
|
Fixes, enhancement suggestions for system shell use.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Viktor\InsetSpace ~
|
|
|
Ransmayr
|
|
|
\family typewriter
|
|
|
<viktor.ransmayr-AT-t-online.de>
|
|
|
\family default
|
|
|
Tests and reports on Windows installation issues.
|
|
|
Contributed a true Windows binary installer.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Mike\InsetSpace ~
|
|
|
Salib
|
|
|
\family typewriter
|
|
|
<msalib-AT-mit.edu>
|
|
|
\family default
|
|
|
Help fixing a subtle bug related to traceback printing.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
W.J.\InsetSpace ~
|
|
|
van\InsetSpace ~
|
|
|
der\InsetSpace ~
|
|
|
Laan
|
|
|
\family typewriter
|
|
|
<gnufnork-AT-hetdigitalegat.nl>
|
|
|
\family default
|
|
|
Bash-like prompt specials.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Antoon\InsetSpace ~
|
|
|
Pardon
|
|
|
\family typewriter
|
|
|
<Antoon.Pardon-AT-rece.vub.ac.be>
|
|
|
\family default
|
|
|
Critical fix for the multithreaded IPython.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
John\InsetSpace ~
|
|
|
Hunter
|
|
|
\family typewriter
|
|
|
<jdhunter-AT-nitace.bsd.uchicago.edu>
|
|
|
\family default
|
|
|
Matplotlib author, helped with all the development of support for matplotlib
|
|
|
in IPyhton, including making necessary changes to matplotlib itself.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Matthew\InsetSpace ~
|
|
|
Arnison
|
|
|
\family typewriter
|
|
|
<maffew-AT-cat.org.au>
|
|
|
\family default
|
|
|
Bug reports, `
|
|
|
\family typewriter
|
|
|
%run -d
|
|
|
\family default
|
|
|
' idea.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Prabhu\InsetSpace ~
|
|
|
Ramachandran
|
|
|
\family typewriter
|
|
|
<prabhu_r-AT-users.sourceforge.net>
|
|
|
\family default
|
|
|
Help with (X)Emacs support, threading patches, ideas...
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Norbert\InsetSpace ~
|
|
|
Tretkowski
|
|
|
\family typewriter
|
|
|
<tretkowski-AT-inittab.de>
|
|
|
\family default
|
|
|
help with Debian packaging and distribution.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
George\InsetSpace ~
|
|
|
Sakkis <
|
|
|
\family typewriter
|
|
|
gsakkis-AT-eden.rutgers.edu>
|
|
|
\family default
|
|
|
New matcher for tab-completing named arguments of user-defined functions.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
J�rgen\InsetSpace ~
|
|
|
Stenarson
|
|
|
\family typewriter
|
|
|
<jorgen.stenarson-AT-bostream.nu>
|
|
|
\family default
|
|
|
Wildcard support implementation for searching namespaces.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Vivian\InsetSpace ~
|
|
|
De\InsetSpace ~
|
|
|
Smedt
|
|
|
\family typewriter
|
|
|
<vivian-AT-vdesmedt.com>
|
|
|
\family default
|
|
|
Debugger enhancements, so that when pdb is activated from within IPython,
|
|
|
coloring, tab completion and other features continue to work seamlessly.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Scott\InsetSpace ~
|
|
|
Tsai
|
|
|
\family typewriter
|
|
|
<scottt958-AT-yahoo.com.tw>
|
|
|
\family default
|
|
|
Support for automatic editor invocation on syntax errors (see
|
|
|
\begin_inset LatexCommand \htmlurl{http://www.scipy.net/roundup/ipython/issue36}
|
|
|
|
|
|
\end_inset
|
|
|
|
|
|
).
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Alexander\InsetSpace ~
|
|
|
Belchenko
|
|
|
\family typewriter
|
|
|
<bialix-AT-ukr.net>
|
|
|
\family default
|
|
|
Improvements for win32 paging system.
|
|
|
\end_layout
|
|
|
|
|
|
\begin_layout List
|
|
|
\labelwidthstring 00.00.0000
|
|
|
Will\InsetSpace ~
|
|
|
Maier
|
|
|
\family typewriter
|
|
|
<willmaier-AT-ml1.net>
|
|
|
\family default
|
|
|
Official OpenBSD port.
|
|
|
\end_layout
|
|
|
|
|
|
\end_body
|
|
|
\end_document
|
|
|
|