Re: Python et bytecode

Page principale

Répondre à ce message
Auteur: Frédéric
Date:  
À: guilde
Sujet: Re: Python et bytecode
On Jeudi 23 Juin 2005 17:31, Frédéric wrote:

> > Pour m'amuser, j'ai essayé. Le script n'est pas exécutable (install
> > par défaut sur RHAS). Même en mettant un sh devant, cela ne fonctionne
> > pas. J'ai lancé l'interpréteur python et dedans, il ne trouve pas
> > py_compile...
>
> Ce script est là pour python lui-même ; je ne crois pas qu'il ait
> vocation à être utilisé de façon systématique. En principe, c'est
> l'option -O. Sinon :
>
> $ python /usr/lib/pythonX.X/py_compile.py <script>


Bon, le script dont je t'ai parlé n'est pas celui qu'il faut utiliser.
Voici le script de post-install de python qui pré-compile ses modules.

Vue la date du script, cette façon de faire n'a pas changée depuis 1998 !

#! /bin/sh -e
#
# postinst script for the Debian python2.3-base package.
# Written 1998 by Gregor Hoffleit <flight@???>.
#

PACKAGE=`basename $0 .postinst`
DIRLIST="/usr/lib/python2.3"

# remove unconditionally
update-alternatives --remove python /usr/bin/python2.3 || true

case "$1" in
    configure|abort-upgrade|abort-remove|abort-deconfigure)


        for i in $DIRLIST ; do
            if [ "$DEBIAN_FRONTEND" != noninteractive ]; then
                echo "Compiling python modules in $i ..."
            fi
            /usr/bin/python2.3 /usr/lib/python2.3/compileall.py -q $i
            if [ "$DEBIAN_FRONTEND" != noninteractive ]; then
                echo "Compiling optimized python modules in $i ..."
            fi
            /usr/bin/python2.3 -O /usr/lib/python2.3/compileall.py -q $i
        done


        # Create empty directories in /usr/local
        if [ ! -e /usr/local/lib/python2.3 ]; then
            mkdir -p /usr/local/lib/python2.3 2> /dev/null || true
            chmod 2775 /usr/local/lib/python2.3 2> /dev/null || true
            chown root:staff /usr/local/lib/python2.3 2> /dev/null || true
        fi
        if [ ! -e /usr/local/lib/python2.3/site-packages ]; then
            mkdir -p /usr/local/lib/python2.3/site-packages 2> /dev/null || true
            chmod 2775 /usr/local/lib/python2.3/site-packages 2> /dev/null || true
            chown root:staff /usr/local/lib/python2.3/site-packages 2> /dev/null || true
        fi


        # Install a symlink for /usr/doc/python2.3
        ##if [ -d /usr/doc -a ! -e /usr/doc/python2.3 -a -d /usr/share/doc/python2.3 ]; then
        ##    ln -sf ../share/doc/python2.3 /usr/doc/python2.3
        ##fi
    ;;


    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac


--
Frédéric

http://www.gbiloba.org