OVH Cloud OVH Cloud

Python et les plate-formes

20 réponses
Avatar
Bibi F
Je suis interessé par Python parce-qu'il tourne sous plusieurs plate-formes.
J'ai donc lu tout ce que j'ai pu trouver (le langage, les outils etc..)
Seulement avant de me lancer j'aimerais comprendre un truc que je n'ai pas
trouvé :
comment on crée un programme qui tourne sous toutes les platforms ?
J'ai bien vu py2exe qui permet de créer des exécutables pour windows (avec
des dll et w9xpopen, ce qui me paraît lourd..), mais je n'ai pas trouvé
comment on fait pour Linux ou Mac ?
Est-ce-qu'il faut toujours une console python pour les faire tourner ou bien
est-ce-qu'on peut créer des exécutables simples ?
Merci d'avance pour vos réponses ou vos pistes de lecture

10 réponses

1 2
Avatar
R12y
comment on crée un programme qui tourne sous toutes les platforms ?
J'ai bien vu py2exe qui permet de créer des exécutables pour windows (avec
des dll et w9xpopen, ce qui me paraît lourd..), mais je n'ai pas trouvé
comment on fait pour Linux ou Mac ?


Il faudrait pour cela dans un premier temps que tu ne fasse que des
actions faisable sur toutes les plateformes.

Sinon,

print "hello world"

Dans un fichier fonctionne sur toutes les plateformes ou il y a un python.

Est-ce-qu'il faut toujours une console python pour les faire tourner ou
bien est-ce-qu'on peut créer des exécutables simples ? Merci d'avance
pour vos réponses ou vos pistes de lecture


Je ne les utilise pas, mais il me semble que pour Linux, on peut
byte-compiler le script python et ainsi le lancer en tant que simple
"executable".

Mais je pense que pour "s'assurer" que le code tournera sur tout où il y a
python, il suffit de distribuer le programme avec les sources (si les
sources ont été concues portables bien sûr)...

--
Debian/apt Repo: http://locataire-serveur.info/sections/liens/debian-repository
Fedora/yum Repo: http://locataire-serveur.info/sections/liens/fedora-core-yum

Avatar
Bibi F
"R12y" a écrit

Il faudrait pour cela dans un premier temps que tu ne fasse que des
actions faisable sur toutes les plateformes.


Comment je peux le savoir, si je n'utilise ni mac ni Linux ?

Mais je pense que pour "s'assurer" que le code tournera sur tout où il y a
python, il suffit de distribuer le programme avec les sources (si les
sources ont été concues portables bien sûr)...
Même question : comment je fais pour savoir quelles instructions sont

portables ?

Avatar
R12y
On Wed, 19 Apr 2006 21:53:43 +0200, Bibi F wrote:
Même question : comment je fais pour savoir quelles instructions sont
portables ?


En lisant la doc de ce que tu utilise. en général c'est écrit quand c'est
Unix-Only, ou Windows-Only.

--
Debian/apt Repo: http://locataire-serveur.info/sections/liens/debian-repository
Fedora/yum Repo: http://locataire-serveur.info/sections/liens/fedora-core-yum

Avatar
jean-michel bain-cornu
Bonsoir,
Perso j'utilise Windows et Linux.
Bibi F wrote:
Je suis interessé par Python parce-qu'il tourne sous plusieurs plate-formes.
J'ai donc lu tout ce que j'ai pu trouver (le langage, les outils etc..)
Seulement avant de me lancer j'aimerais comprendre un truc que je n'ai pas
trouvé :
comment on crée un programme qui tourne sous toutes les platforms ?
Une partie des problèmes est réglée si tu prends os.sep comme séparateur

dans les paths de fichiers et si tu teste os.name qui te donne le nom de
l'os sur lequel tourne ('nt', 'posix', etc).
Il reste le jeu de caractères qui oblige souvent à mettre un truc du
style # -*- coding: iso-8859-1 -*- en ligne 1 ou 2, plus un éventuel
'chaine.decode('iso-8859-1')' pour afficher 'chaine' correctement.
J'ai bien vu py2exe qui permet de créer des exécutables pour windows (avec
des dll et w9xpopen, ce qui me paraît lourd..), mais je n'ai pas trouvé
comment on fait pour Linux ou Mac ?
Le problème ne se pose pas trop. Créer un exe est utile sous windows car

ça évite de déployer python. Tu déploies juste ton exe (et le bazar qui
va avec) et tout va bien.
Python est toujours installé par défaut sur la plupart des distributions
linux courantes (Debian, Ubuntu, RH, Mandriva) et dans une version
récente ; tu peux donc lancer ton script tel que ; il reste à surveiller
la présence/installation des packages non standards que tu utilises
éventuellement. Pour mac, je ne sais pas.
Est-ce-qu'il faut toujours une console python pour les faire tourner ou bien
est-ce-qu'on peut créer des exécutables simples ?
Tu mets #!/usr/bin/python en ligne 1 et Linux sait que c'est du python.

Il faut aussi flagger le fichier comme exécutable (chmod +x fichier)
Merci d'avance pour vos réponses ou vos pistes de lecture
A+

jm

Avatar
R12y
On Thu, 20 Apr 2006 01:55:00 +0200, Bruno Desthuilliers wrote:

est-ce-qu'on peut créer des exécutables simples ?
C'est quoi un "exécutable simple" ?



Je dirais qu'il entend par là un binaire
unique (et statique) sur lequel il suffirait de double-cliquer.

--
Debian/apt Repo: http://locataire-serveur.info/sections/liens/debian-repository
Fedora/yum Repo: http://locataire-serveur.info/sections/liens/fedora-core-yum


Avatar
Bibi F
Merci à tous.
A c'est dur de se faire comprendre quand on n'est pas un pro. Quand je
disais une "console python" je voulais dire l'interpréteur python. Et pour
l'exécutable simple, R12y a bien compris : un fichier unique, avec extension
.exe sur lequel on fait un double clic..
Désolé, je suis un utilisateur de winXX et connais très peu les autres
plate-formes.

je pense avoir suffisamment d'infos maintenant. Il faut simplement que je
relise correctement vos posts.
Avatar
R12y
On Thu, 20 Apr 2006 00:09:09 +0200, Bibi F wrote:

R12y a bien compris : un fichier unique, avec extension
.exe sur lequel on fait un double clic..
Désolé, je suis un utilisateur de winXX et connais très peu les autres
plate-formes.


Eh bien sache que ce n'est pas comme cela que ça se passe sur "les autres
plateformes"
Par exemple, sous Unix-Like tu gagnerais à avoir un truc "autotoolé".
Moi ce que je te conseille c'est de plutot favoriser la "conformité" pour
Unix-like, ça sera facile d'en faire un binaire pour Windows ensuite.
La démarche inverse n'est pas ausi facile.... loin de la.

Par exemple, ce projet:
http://v2v.cc/~j/ffmpeg2theora/download.html
(Il n'est pas en python mais en C)
Il est conforme aux autotools.
Et comme tu vois il y a un executable Linux, Windows et autres...

Il y en a plein des comme lui:
http://v2v.cc/~j/ffmpeg2theora/download.html
http://download.openoffice.org/2.0.2/index.html

ah .... et quelques uns en python que j'ai failli oublier:
http://www.zope.org/Products/Zope/2.9.2
http://plone.org/products/plone
http://www.cps-project.org/sections/downloads

Les autotools:
http://www-src.lip6.fr/homepages/Alexandre.Duret-Lutz/autotools.html
Et je projette dans un avenir proche d'en faire un en Français.

On est un peu sorti du sujet initial, mais je pense que c'était nécessaire
de dire ça. Voilà.

--
Debian/apt Repo: http://locataire-serveur.info/sections/liens/debian-repository
Fedora/yum Repo: http://locataire-serveur.info/sections/liens/fedora-core-yum

Avatar
R12y
On Thu, 20 Apr 2006 00:45:41 +0200, R12y wrote:

Eh bien sache que ce n'est pas comme cela que ça se passe sur "les autres
plateformes"


Je veux dire : pas de .exe. Sous *NIX, pas besoin d'extension.

--
Debian/apt Repo: http://locataire-serveur.info/sections/liens/debian-repository
Fedora/yum Repo: http://locataire-serveur.info/sections/liens/fedora-core-yum

Avatar
Bruno Desthuilliers
Je suis interessé par Python parce-qu'il tourne sous plusieurs plate-formes.
J'ai donc lu tout ce que j'ai pu trouver (le langage, les outils etc..)
Seulement avant de me lancer j'aimerais comprendre un truc que je n'ai pas
trouvé :
comment on crée un programme qui tourne sous toutes les platforms ?


Généralement, en n'utilisant pas de fonctionnalités spécifiques à une
plateforme donnée, et en utilisant des couches d'abstraction pour
masquer les différences (exemple : les modules os et os.path).

J'ai bien vu py2exe qui permet de créer des exécutables pour windows (avec
des dll et w9xpopen, ce qui me paraît lourd..),


Je ne vois pas le rapport ? Py2exe est fait pour simplifier le
déploiement d'une application Python sous Windows, c'est tout.

mais je n'ai pas trouvé
comment on fait pour Linux ou Mac ?


Comment on fait quoi ? Déployer une appli Python ? Sous Linux, il y a
beaucoups de solutions, la plus simple étant un tarball avec les sources
du projet et un script d'install.

Est-ce-qu'il faut toujours une console python pour les faire tourner


C'est quoi une "console Python" ?

ou bien
est-ce-qu'on peut créer des exécutables simples ?


C'est quoi un "exécutable simple" ?

Avatar
bruno at modulix
Bibi F wrote:
Merci à tous.
A c'est dur de se faire comprendre quand on n'est pas un pro.


Et oui... Tout métier a son jargon - et la programmation est
probablement un des métiers les plus "jargonnant" !-)

Quand je
disais une "console python" je voulais dire l'interpréteur python.


L'interpréteur est une chose, le "shell" python (le programme en mode
texte permettant d'exécuter du code de façon interactive) en est une autre.

Le premier est bien entendu indispensable pour exécuter un programme
Python (de même que la VM Java pour un programme en Java, ou le
'runtime' VB6 pour une appli VB6, etc...). Ce que font des appli comme
py2exe est juste d'"emballer" avec ton appli l'interpréteur et les
bibliothèque nécessaires.

Le terme de "console" vient de l'époque d'avant les PC, et désigne
originellement un terminal informatique passif. Avec les PC, le terme de
"console" en est venu à désigner les émulateurs de terminaux et les
shells en mode texte, puis, avec l'apparition des environnements
graphiques, la fenêtre accueillant un shell en mode texte.

Et pour
l'exécutable simple, R12y a bien compris : un fichier unique, avec extension
.exe sur lequel on fait un double clic..


Je l'avais bien compris - ma question visait à *te* faire te demander si
*tu* avais bien compris de quoi il retournait !-)

Les ".exe" sont une spécificité DOS/Windows. Accessoirement, une appli
Windows est *très* rarement constituée d'un unique fichier exécutable -
il y a généralement toute une floppée de bibliothèques (.dll) et autres
ressources nécessaires au fonctionnement de l'appli. Pour pas mal de
langages, le '.exe' n'est en fait rien d'autre qu'un "lanceur" -
l'essentiel du code est ailleurs.

Sérieusement, tu connais beaucoup d'applis Windows qui soient
constituées d'un seul et unique fichier .exe ? Moi pas...

Quand au fait de lancer une appli "par un double-clic", c'est sans grand
rapport avec le fait que cette appli soit entièrement contenue dans un
unique fichier avec l'extension '.exe'. Normalement, sous Windows, un
fichier .pyw peut aussi être exécuté de cette façon - à condition bien
sûr que l'interpréteur Python soit installé sur la machine...

Sur d'autres plateformes, on obtient le même résultat par des moyens
différents, spécifiques à la plateforme - voire, sous *n*x, au
gestionnaire de bureau utilisé (Gnome, KDE, etc...). En tout état de
cause, à part quelques scripts très simples, une appli est rarement
constituée d'un seul fichier - d'où l'utilisation de programmes gérant
l'empaquetage et le déploiement.

Désolé, je suis un utilisateur de winXX et connais très peu les autres
plate-formes.


Je l'avais bien compris. Je dirais même que tu connais peu Windows
lui-même... Pas d'offense, on est tous passés par là - enfin moi j'y
sois passé, et j'ai eu du mal à m'y retrouver au début !-)

Plus concrètement, je pense que tu t'embêtes pour pas grand chose.
Commence déjà par écrire un programme - en tenant compte des problèmes
de portabilité si tu souhaite qu'il tourne sur d'autres plateformes -,
tu verra le problème du déploiement quand tu aura quelque chose à déployer.

--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"

1 2