Looking for Computer Science  & Information Technology online courses ?
Check my new web site: https://www.yesik.it !

Jython est une mise en oeuvre pour Java du langage Python. Un des avantages de Jython est de pouvoir utiliser la richesse de la plate-forme Java sans avoir à utiliser le langage Java. En effet, un programme Jython s'exécute dans une JVM (Java Virtual Machine – Machine Virtuelle Java.
Un logiciel capable d'interpréter le byte-code Java pour exécuter un programme. )
et peut accéder à l'ensemble des services et classes Java disponibles – tout en conservant la lisibilité et l'expressivité du langage Python. Nous allons donc voir maintenant comment installer Jython en environnement Unix-like.

Remarque:

La procédure décrite ici explique comment installer à la main Jython.

En effet, si Jython est sans doute disponible dans votre gestionnaire de paquet, il se peut que ce soit une ancienne version. Du moins, c'est le cas sous Debian/Lenny où Jython 2.2 est disponible dans les dépôts alors que la version 2.5 vient tout juste de sortir.

Et forcément, c'est cette dernière version que je veux installer! En effet, Jython a subi pas mal d'évolutions au cours des dernières années, en particulier avec l'élimination du compilateur jythonc chargé de convertir le code Python en code Java.

Installer Jython dans son répertoire personnel

Note:

Jython requiert au minimum Java 5!

Jython est fourni sous la forme d'un jar qui contient tout le nécessaire pour installer Jython. Comme vous pourrez le constater, la procédure est des plus simples:

  1. Télécharger le jar d'installation à partir du site de Jython: http://downloads.sourceforge.net/jython/jython_installer-2.5.0.jar
  2. Lancer l'installateur contenu dans le jar. Celui-ci permet aussi bien de faire une installation avec une interface graphique (GUI), qu'en mode console. Dans le premier cas, utilisez la commande suivante:
    sh$ java -jar jython_installer-2.5.0.jar
    

    Si vous préférez (comme moi ici) faire une installation en mode texte, ajoutez l'option -c:

    sh$ java -jar jython_installer-2.5.0.jar -c
    

Note:

L'installateur supporte d'autres options. Pour en avoir la liste, vous pouvez utiliser l'option -help:

sh$ java -jar jython_installer-2.5.0.jar --help

Afin d'être exhaustif, je vais quand même détailler la procédure. Notez que dans l'installateur en mode texte, les choix par défaut sont ceux indiqués en majuscule:

sh$  java -jar jython_installer-2.5.0.jar -c
Welcome to Jython !
You are about to install Jython version 2.5.0
(at any time, answer c to cancel the installation)
For the installation process, the following languages are available: English, German
Please select your language [E/g] >>> e
Do you want to read the license agreement now ? [y/N] >>> y
[...]
Do you accept the license agreement ? [Y/n] >>> y
The following installation types are available:
 1. All (everything, including sources)
 2. Standard (core, library modules, demos and examples, documentation)
 3. Minimum (core)
 9. Standalone (a single, executable .jar)
Please select the installation type [ 1 /2/3/9] >>> 2
Do you want to install additional parts ? [y/N] >>> n
Do you want to exclude parts from the installation ? [y/N] >>> n
Please enter the target directory >>> jython-2.5.0
Unable to find directory /home/sylvain/jython/jython-2.5.0, create it ? [Y/n] >>> y
Please enter the java home directory (empty for using the current java runtime) >>> 
Your java version to start Jython is: Sun Microsystems Inc. / 1.6.0_12
Your operating system version is: Linux / 2.6.24-mobal.chicoree.fr
Summary:
  - mod: true
  - demo: true
  - doc: true
  - src: false
  - JRE: /usr/lib/jvm/java-6-sun-1.6.0.12/jre
Please confirm copying of files to directory /home/sylvain/jython/jython-2.5.0 [Y/n] >>> y
 10 %
 20 %
 30 %
 40 %
 50 %
 60 %
 70 %
 80 %
 90 %
Generating start scripts ...
 100 %
Do you want to show the contents of README ? [y/N] >>> y
Welcome to Jython 2.5.0
=======================
[...]
Please press Enter to proceed >>> 
Congratulations! You successfully installed Jython 2.5.0 to directory /home/sylvain/jython/jython-2.5.0.

La procédure d'installation en elle-même ne pose pas de problème particulier. Remarquez que dans la transcription ci-dessus, j'ai installé Jython dans le répertoire /home/sylvain/jython/jython-2.5.0 – c'est à dire dans mon répertoire personnel. Si vous voulez rendre Jython accessible à d'autres utilisateurs, il serait préférable de l'installer dans un emplacement standard comme /usr/local. C'est ce que nous allons faire maintenant.

Installation dans /usr/local

La manière la plus simple de précéder va être de copier le dossier extrait par l'installateur de jython vers le dossier /usr/local (sous Fédora, vers /opt). Ainsi, Jython sera accessible aux autres utilisateurs de votre système:

sh$ su root # Il faut être root pour écrire dans /usr/local
Password:
sh# cp -R jython-2.5.0 /usr/local
sh# ln -s /usr/local/jython-2.5.0 /usr/local/jython
sh# ls -ld /usr/local/jython*
lrwxrwxrwx 1 root staff   23 2009-07-22 15:28 /usr/local/jython -> /usr/local/jython-2.5.0
drwxr-sr-x 7 root staff 4096 2009-07-22 15:28 /usr/local/jython-2.5.0

Voilà, maintenant que Jython est installé dans un répertoire accessible à tous les utilisateurs, la dernière chose à faire est de définir la variable d'environnement JYTHON_HOME et modifier le PATH pour rendre le tout facilement utilisable.

Configuration

Nous allons maintenant écrire un script chargé de configurer l'environnement utilisateur afin de faciliter l'utilisation de Jython.

Préparation du répertoire profile.d

Avant d'aller plus loin, vérifiez si votre distribution contient le répertoire /etc/profile.d.

Si c'est le cas, c'est sans doute que le travail décrit dans cet encadré est déjà fait.

Dans le cas contraire, nous allons créer ce répertoire:

sh# mkdir /etc/profile.d

Reste aussi à modifier quelques scripts:

bash.bashrc

Si vous – ou vos utilisateurs – utilisez le shell Bash (ou compatible), ajoutez les lignes suivantes au script /etc/bash.bashrc:

PROFILE_DIR=/etc/profile.d
 
if [ -d "${PROFILE_DIR}" ]; then
  for i in ${PROFILE_DIR}/*.sh
  do
    . "$i"
  done
fi

Ajoutez le même code au fichier /etc/profile.

csh.cshrc

Si vous – ou vos utilisteurs – utilisez le C shell (csh ou tcsh), ajoutez les lignes suivantes au script /etc/csh.cshrc:

set PROFILE_DIR=/etc/profile.d
 
if ( -d ${PROFILE_DIR} ) then
        foreach i ( ${PROFILE_DIR}/*.csh )
                source $i
        end
endif

Scripts de configuration de Jython

Dans tous les cas, vous avez maintenant un répertoire /etc/profile.d. Et vos shells sont configurés pour charger les scripts du répertoire /etc/profile.d à chaque démarrage d'un shell interactif.

Reste à écrire ces scripts spécifiques à Jython.

bash

Créez le fichier /etc/profile.d/local-jython.sh:

sh# cat > /etc/profile.d/local-jython.sh << EOF
#
# Jython configuration for bash(1)
#

if [ -z "${JYTHON_HOME}" ]
then
  export JYTHON_HOME=/usr/local/jython
  export JYTHON_OPTS="${JYTHON_OPTS} -Dpython.cachedir=${HOME}/.jython_cachedir"
  export PATH="${JYTHON_HOME}/bin:${PATH}"
fi
EOF

csh, tcsh

Créez le fichier /etc/profile.d/local-jython.csh:

csh# cat > /etc/profile.d/local-jython.csh << EOF
#
# Jython configuration for csh(1)
#

if ( ! ${?JYTHON_HOME} ) then
        setenv JYTHON_HOME /usr/local/jython
        setenv JYTHON_OPTS "${JYTHON_OPTS} -Dpython.cachedir=${HOME}/.jython_cachedir"
        setenv PATH "${JYTHON_HOME}/bin:${PATH}"
endif
EOF


Piège:

Jython compile en Python Byte Code et met en cache les modules au fur et à mesure de leur chargement.

Normalement, les fichers compilés sont mis en cache dans ${JYTHON_HOME}/cachedir. Mais ce n'est pas possible si JYTHON_HOME référence un dossier partagé par les différents utilisateurs du système, comme c'est le cas ici.

C'est la cause de l'erreur suivante:

*sys-package-mgr*: can't create package cache dir, '/usr/local/jython-2.5.0/cachedir/packages'

Les scripts de configuration ci-dessus préviennent ce problème en forçant le répertoire de cache à être ${HOME}/.jython_cachedir:

export JYTHON_OPTS="${JYTHON_OPTS} -Dpython.cachedir=${HOME}/.jython_cachedir"

Hello Jython

Voilà, Jython est installé dans un emplacement système – et les scripts d'initialisation permettront d'y accéder directement à partir du shell. Vous pouvez tester tout de suite le fonctionnement de votre installation.

Ouvrez un nouveau shell, et tapez jython à l'invite de commande:

sh$ jython
Jython 2.5.0 (Release_2_5_0:6476, Jun 16 2009, 13:33:26) 
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_12
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Si l'invite de Jython apparaît, tout est en ordre. Vous pouvez commencer à vous amuser:

>>> print "And now, for something completly different" 
And now, for something completly different
>>> for i in ['Eric', 'Michael', 'John']:
...     print i
... 
Eric
Michael
John

Maintenant, à vous de jouer!