Editing PyMaemo/Quick start guide

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
-
= Getting Started: Setting Up Python Development Environment for N900 =
+
= Running Python code on N900 (quick start guide) =
-
A basic development environment for Python development for Maemo consists of:
+
This article will describe the necessary steps to get your Python application running on N900.
-
* A source code editor
+
It will cover:
-
* Some way to transfer application files to the tablet
+
-
* Easily run the application (without installing it)
+
-
 
+
-
Alternatively, you can try other more complex development environments, briefly described at the end of this article.
+
-
 
+
-
This article will cover:
+
* Installation of necessary packages and USB connectivity setup
* Installation of necessary packages and USB connectivity setup
-
* Some suggestions for Python code editors
 
* How to transfer the application files to the N900
* How to transfer the application files to the N900
* How to run the application
* How to run the application
-
Application packaging and final deployment will be discussed separately at a later date.
+
What will '''not''' be covered:
-
Finally, there is a [http://www.youtube.com/watch?v=onAkb_7U5pk screencast] demonstrating the instructions from this guide, which should help clarifying some of the steps in a real setup session.
+
* Programming environment setup
 +
* Application packaging and deployment
== Requirements ==
== Requirements ==
Line 31: Line 25:
Host requirements:
Host requirements:
-
* An SSH client. For Linux, OpenSSH (through the "ssh" command) is enough. For Windows, [http://en.sourceforge.jp/projects/ttssh2/releases/ Tera Term] can be used. For Mac you can use "ssh" command in the Terminal.
+
* A SSH client. For Linux, OpenSSH (through the "ssh" command) is enough. For Windows, [http://en.sourceforge.jp/projects/ttssh2/releases/ Tera Term] can be used.
-
* An SCP/SFTP client. For Linux, OpenSSH (through the "scp" command) is enough. The KDE/GNOME environments also have built-in support for these protocols. For Windows, you can try [http://winscp.net/eng/index.php WinSCP] or [http://filezilla-project.org/ FileZilla].
+
* A SCP/SFTP client. For Linux, OpenSSH (through the "scp" command) is enough. The KDE/GNOME environments also have built-in support for these protocols. For Windows, you can try [http://winscp.net/eng/index.php WinSCP] or [http://filezilla-project.org/ FileZilla].
For the purposes of this tutorial, you will '''not''' need Scratchbox installed. Scratchbox would only be necessary if you are unable to test your applications on the actual tablet.
For the purposes of this tutorial, you will '''not''' need Scratchbox installed. Scratchbox would only be necessary if you are unable to test your applications on the actual tablet.
Line 40: Line 34:
You will need to install two applications on the tablet:
You will need to install two applications on the tablet:
-
* [http://maemo.org/packages/view/openssh-server/ OpenSSH Server]
+
* OpenSSH Server
-
* [http://maemo.org/packages/view/rootsh/ rootsh]
+
* rootsh
-
 
+
-
rootsh appears to have been replaced by either running <code>sudo gainroot</code> directly, or by running <code>root</code>.
+
OpenSSH is needed to run commands remotely on your N900. This will make testing on the device a lot easier.
OpenSSH is needed to run commands remotely on your N900. This will make testing on the device a lot easier.
-
[[Root access]] is needed to allow to run commands as root on the X Terminal (using <code>sudo gainroot</code>).
+
rootsh allow to run commands as root on the X Terminal (using "sudo gainroot"). See http://wiki.maemo.org/Root_access for other options to enable root access.
To install these applications, follow these steps:
To install these applications, follow these steps:
-
# [[Extras#Using Extras|Enable the extras repository]].
+
# Enable extras repository. See http://wiki.maemo.org/Extras#Using_Extras for how to do it.
# Install the packages listed above.
# Install the packages listed above.
# The installation will ask for a new root password for SSH access. Choose a good one.
# The installation will ask for a new root password for SSH access. Choose a good one.
Line 58: Line 50:
== Enabling USB networking ==
== Enabling USB networking ==
-
USB networking allows to easily and quickly transfer files to the device and connect to it using SSH.
+
USB networking allows to easily and quickly transfer files to the device and connect to it using SSH. To enable it, follow these steps (you need to repeat them every time you reboot the device):
-
 
+
-
Note that this is not the only way to transfer files to the device. If you are already setup with your N900 and your desktop on the same LAN over Wifi, you can save yourself the trouble and skip this USB networking configuration section.
+
-
 
+
-
To enable USB networking, follow these steps (you need to repeat them every time you reboot the device):
+
# If the USB cable is plugged and in "Mass storage mode", unplug the cable and plug it again, now selecting "PC Suite Mode".
# If the USB cable is plugged and in "Mass storage mode", unplug the cable and plug it again, now selecting "PC Suite Mode".
# On N900, open "X Terminal" and run:
# On N900, open "X Terminal" and run:
-
  rootsh ifup usb0
+
  sudo gainroot
-
# Now you need to configure the host. This is dependent on which OS (or Linux distro) you use, but there are [[USB networking#Host USB Network Configuration|detailed instructions for various OSes and Linux distros]].
+
ifup usb0
 +
# Now you need to configure the host. This is dependent on which OS (or Linux distro) you use, see http://wiki.maemo.org/USB_networking#Host_USB_Network_Configuration for detailed instructions for various OSes and Linux distros.
From now on you can connect to the N900 using any SSH client and the following information:
From now on you can connect to the N900 using any SSH client and the following information:
Line 85: Line 74:
Note that the requirement to enable the "extras-devel" repository might be removed later.
Note that the requirement to enable the "extras-devel" repository might be removed later.
-
To enable extras-devel add a new catalogue to the Application Manager, as instructed in [[Extras-devel]] (did you see the big warning on that page?)
+
To enable extras-devel add a new catalogue to the Application Manager, as instructed in http://wiki.maemo.org/Extras-devel (did you see the big warning on that page?)
-
After extras-devel is enabled, you will see on Application Manager a package called "maemo-python-device-env". Installing it will also install the basic environment necessary to run most Python applications on Maemo.
+
Next, you can install the basic Python environment on the tablet by running this command on the SSH terminal:
-
== Writing your code ==
+
apt-get update && apt-get install maemo-python-device-env
-
 
+
-
Any good programmer oriented editor will be enough for development. If you have some development experience, you most probably already have chosen your favorite code editor and you can simply use it.
+
-
 
+
-
Here we list some options, both for Linux and Windows:
+
-
 
+
-
* [http://projects.gnome.org/gedit/ gedit]: the GNOME Editor has syntax highlight support for Python
+
-
* [http://www.vim.org/ VIM] and [http://www.gnu.org/software/emacs/ Emacs]: the most popular editors, with many advanced features and versions for both Linux and Windows
+
-
* [http://wiki.netbeans.org/Python NetBeans + Python plugin]: NetBeans is a multi-platform IDE, which with help of a plugin, supports development for Python
+
-
* [http://maemo.org/downloads/product/Maemo5/pygtkeditor/ PyGTKEditor]: a syntax highlighting Python editor which runs natively on Maemo devices
+
-
 
+
-
Note that none of these editors will support code completion for PyMaemo modules out of box.
+
-
 
+
-
For testing purposes, you can try the following code (the classic "hello world" example):
+
-
 
+
-
import gtk
+
-
from gtk import Window, Button, Widget
+
-
if __name__ == "__main__":
+
-
    window = Window(gtk.WINDOW_TOPLEVEL)
+
-
    window.connect("destroy", gtk.main_quit)
+
-
    button = Button("Hello World")
+
-
    button.connect_object("clicked", Widget.destroy, window)
+
-
    window.add(button)
+
-
    window.show_all()
+
-
    gtk.main()
+
-
 
+
-
Once you have your code written, you can proceed to copying application files to the device.
+
== Running the Python application on the device ==
== Running the Python application on the device ==
-
Now that you have the N900 properly setup and the code to run, you just need to copy the application files to the device and run it.
+
Now that you have the N900 properly setup, you just need to copy the Python code to the device and run it.
The simplest way to copy files it to use a SFTP or SCP client. There are many free clients available for most OSes (we listed some examples on the "Requirements" section). On the Linux command line, you can use:
The simplest way to copy files it to use a SFTP or SCP client. There are many free clients available for most OSes (we listed some examples on the "Requirements" section). On the Linux command line, you can use:
Line 131: Line 94:
  cd /root/my_application
  cd /root/my_application
  python my_application.py
  python my_application.py
-
 
-
== Alternative development environments ==
 
-
 
-
Besides the environment described on this article, there are two alternative development environments that might or might not be more appropriate for your purposes:
 
-
 
-
; PluThon (Eclipse based)
 
-
: [http://pluthon.garage.maemo.org/ PluThon] is a full Python IDE for Maemo, based on Eclipse. While PluThon is easy to use and provides a complete solution, it is not necessary for basic Python development for Maemo. If you already use Eclipse for your development, PluThon might be your best option.
 
-
; Official Maemo SDK (Scratchbox based)
 
-
: [http://www.scratchbox.org/ Scratchbox] is a cross-compilation toolkit used for native Maemo development. Although it can be used in Python development as well (and comes very handy if you do not have access to a real device), it has a non-trivial learning curve and is not needed for pure Python development. However, if you plan to write new Python extensions (for instance, using [http://www.cython.org/ Cython] or [http://docs.python.org/c-api/index.html Python/C API] directly), Scratchbox is needed to cross-compile the C code. See the [http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Development_Environment/Maemo_SDK Maemo SDK section] on Maemo 5 developer guide for more details on it.
 
-
 
-
Note that PluThon has built-in support for transferring and running code on the device. On the other hand, the Maemo SDK has no such support (unless you use some IDE like [http://esbox.garage.maemo.org/ ESbox]), so you need to follow steps similar to the ones described on this guide to copy and run your code on the tablet, if you choose to use the Maemo SDK.
 
-
 
-
== Advanced tips ==
 
-
 
-
If you want to activate USB networking automatically upon connecting the device to the computer, just create a file called /etc/event.d/usbnet on the device with the following contents:
 
-
 
-
start on G_NOKIA_READY
 
-
 
-
console output
 
-
exec ifconfig usb0 192.168.2.15 netmask 255.255.255.0 up
 
-
 
-
This way you just have to select "PC Suite mode" when plugging the device in.
 
[[Category:N900]]
[[Category:N900]]
[[Category:Python]]
[[Category:Python]]

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)