Differences between revisions 10 and 11
Revision 10 as of 2009-01-18 15:13:46
Size: 4180
Editor: schilly
Revision 11 as of 2009-01-18 15:14:06
Size: 4182
Editor: schilly
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:
== Benefits == Benefits ==

Developing Python/Sage with Netbeans

Netbeans is a GUI development environment. The following instructions explain how to work on Sage, for Linux (Ubuntu 8.10, but should work everywhere). It helps with coding, build and run still on command-line. Sometimes it just guesses things, but most of the time it is pretty smart and gives help for navigating around, completion of commands and more.


  • syntax highlighting and assistance
  • code completion (CTRL-SPACE)
  • corrects formatting (his probably dangerous, because it changes code-lines throughout the file and we would need a common definition to avoid diffs just for indents and newlines)
  • indexes python and all libraries, i.e. you get a list of all available classes, functions and methods, completion of partial identifiers and they also show you the help for each command.
  • press "CTRL" and click on the class or method name, and you it will jump to it's definition, perhaps opening the appropriate python file.
  • finds the usage of a method or class: right-click on it and "find usage" or CTRL-F7
  • lists all classes and methods in current file in a tree for easy navigation: menu: Window>Navigating>Navigator

  • refactoring: i.e. there is limited support (you have to go through all automatic changes in the preview) for renaming variables, classes, etc.
  • tasks: netbeans searches the source code for tokens that indicate open tasks and lists them ("TODO", etc.), in menu: Window > Tasks

  • mercurial support
  • (trac integration/interaction would possible)


  • Netbeans 6.5

  • Python
    • Netbeans menu: Tools > Plugins, search for "Python", install



  • SAGE_ROOT = root dir of Sage
  • NETBEANS_ROOT = root dir of netbeans


  1. cd $SAGE_ROOT
  2. ./sage -sh
    • note, that $HOME still points to your home dir
  3. $NETBEANS_ROOT/bin/netbeans
  4. File > New Project - Python > with existing sources

    • Name: "SageNetbeans" or what you like, save it in your $HOME dir

    • Python platform: Manage - "New..." - select Python executable "$SAGE_ROOT/bin/python", name it "Python 2.5.2 Sage"
    • select "Python 2.5.2 Sage" on the left, on the right in tab "Python Path" you can see the paths are in $SAGE_ROOT/local/lib/... (maybe click "auto detect" ?)
  5. next > source root folder: "$SAGE_ROOT/devel/sage/sage" - finish!


  • After first startup it has to scan and index all the Python stuff (progress indicator bottom right). This could take some minutes, so don't wonder why nothing works...
  • Personally, I'm not happy with the default GTK theme in ubuntu linux, therefore I have to change the look&feel settings: edit NETBEANS_ROOT/etc/netbeans.conf - in the "netbeans_default_options" variable, change add/change parameter "--laf javax.swing.plaf.metal.MetalLookAndFeel" to get the java specific metal look&feel (or what you want).


Netbeans supports Merucrial out of the box. Right-click on files in "File" window (Window>Files), see local diffs in a special diff window, commit changes, undo local changes. The Netbeans editor itself also supports nonlinear undos, right click on the left side of a highlighted change, see the diff, change only this part as in the local repository.

Trac Integration

It is theoretically possible to integrate Netbeans with Trac using Cube°n. Maybe someone wants to look deeper into this ...

Open Issues

  • for some reason i don't know all files are marked as "ignored" by mercurial.
  • you have to build and start Sage still by hand ("./sage -br" on the command line), but it would be possible to select a python script to run in the project properties > run...

  • pyx/pxd are recognized as normal text-files

Netbeans (last edited 2010-11-29 08:43:35 by pang)