Coucou Abdel,
Débu de citation
Pour ma part, j'ai aussi fait avancer un peu le travail, l'extension forPython
comporte désormais le nécessaire pour rechercher les versions de Python sur le
disque dur, et les afficher dans une liste de sous-menus figurant dans un
sous-menu du menu forPython, intitulé "Activer une version de Python installée".
Fin de citation
Je l'ai testé sur un de mes ordi (avec windows 7), et malheureusement, dans le
menu, il n'y a que 6pad++ qui apparaît.
Mon python27 qui pourtant est directement dans le disque C est ignoré.
Tandis que sur un autre avec windows XP tout apparaît bien (python25 et
python27).
Quel est ce mystère ?
Et j'avais une préoccupation quant au choix d'enregistrer les chemins vers les
exécutables de python trouvés dans un objet dictionnaire.
Les éléments dans le dictionnaire se retrouvent par une clée, qui est sensée
être unique. Or dans ton code, la clée est le nom du dossier principale de la
version de python.
Ce qui risque de poser problème dans les cas où quelqu'un aurait décidé d'avoir
plusieurs fois la même version de python sur son ordinateur. Par exemple une
version portable et une version installée. Un cas qui est certes rare, mais
n'en reste pas moins possible.
A oui, j'ai vu que tu as inclu un dossier que je n'avais pas compté: le
x:/Program Files (x86
Dans mon code, toujours concernant le repérage des pythons installés, tu veras
que je te propose une manière plus efficace de parcourir les dossier.
il s'agit de faire une itération sur les lettres alphabétiques.
Exemple:
alphabet="ABCDEFGHIJKL"
for e in alphabet:
# test d'existence
Pour ce qui est de l'exécution du module courant, nous avons fait presque
parreil.
Cependant, une petite subtilité: moi j'ai préféré envoyé les messages d'erreur
ou tout ce qui devrait s'afficher en console dans la console de 6pad++.
Et pour améliorer encore cela, je prévoit en plus parser les messages d'erreur
pour pouvoir repérer le fichier et le numéro de ligne comportant l'erreur, afin
de s'y positionner dans l'onglet courant ou dans un nouvel onglet s'il s'avère
qu'il ne s'agit pas du document courant.
Le fichier logFile est important pour retracer les erreurs, mais ne devrait pas
être ouvert dans un nouvel onglet si les erreurs sont sensées apparaître dans
la console de 6pad++ à mon humble avis.
Début de citation
pourquoi ne pas enrichir l'extension pour pouvoir compiler du code et générer
un exécutable, du style setup.py py2exe, en supposant bien sûr que Py2exe ou un
autre module servant à faire cela sera installé dans notre version de Python?
Fin de citation
Hé bien mon petit Abdel, figures-toi que j'y pensais déja.
Concernant le py2exe, j'ai gardé des notes qui sont sensés m'aider à le faire.
Je vous les collerai plus bas.
En fait, j'entrevoyais un élément de menu labélisé "Créer un exécutable"
qui déclencherait une fonction qui, suivant la présence du py2exe ou du pypi ou
même un autre créateur d'exécutable chez la version de python cochée lancerait
la génération.
Et dans le cas où plusieurs seraient repérés, pourquoi ne pas proposer le choix
de l'un d'entre eux dans une liste ?
Comme autres améliorations possibles, hormis celles que j'ai déjà cité plus
haut, il y a:
* la définition du mot clé sous le curseur et l'affichage dans la console de
6pad++
je travaille dessus. Quelques soucis avec les expressions régulières qui sont
ma foi assez différentes de celles que j'ai connu dans le vb6.
* une véritable intellicence. C'est-à-dire par exemple taper un point, et
faire ctrl+j ou ctrl+espace pour que la liste des objets et méthodes de l'objet
devant lequel on a mis le point soient proposés dans une liste.
Evitera de faire des aller et retour entre l'IDE et la documentation.
* la vérification des lignes juste après leur modification et tentative de
déplacement à une autre ligne.
Il s'agit de vérifier quelques éléments de syntaxe et d'avertir directement en
cas d'erreur supposé.
Seront vérifiés par exemple:
- l'équilibre des accolades, guillemets, appostrophes, parenthèses
- la présence des deux points à la fin des lignes qui le nécessitent
- la nécessité de ne pas mélanger de type d'indentation au début de la ligne
On peut également se servir du même évènement pour s'assurer du respect de la
cass pour certains mots clé, variables et nom de fonction.
Par exemple les True et False qui doivent avoir la majuscule en premier
caractère.
Ca peut d'ailleurs se corriger sans que l'utilisateur ne s'en rende compte.
* l'insertion automatique de fonctions (constructeur, destructeur, ou autres),
de classes (héritées ou non)
Cela tout en vérifiant l'emplacement et les niveaux d'indentation.
* l'insertion d'imports (modules et classes, etc...
* la création dans le menu d'aide d'un item qui ouvrira le fichier chm de la
version du python actuellement sélectionnée.
* la prise en compte de projets de développement et d'options de sauvegarde.
Bon je m'arrête là.
Néanmoins c'est déjà assez conséquent comme vous le conviendrez avec moi
n'est-ce pas ?
Certains sont-ils chaud pour qu'on se partage le boulot ?
Maintenant les notes sur comment créer un exécutable en ligne de commande avec
le py2exe
Début des notes
__h2 Créer un programme exécutable avec Py2exe
L'extension Py2exe permet de convertir un script Python en un programme
exécutable (uniquement pour le système d'exploitation Windows).
Ce programme exécutable (fichier avec l'extension .exe) peut ensuite être lancé
sur un ordinateur où Python n'est pas installé.
__h3 Téléchargement et installation de Py2exe
Il faut un ordinateur avec Windows et Python déjà installé (attention : Py2exe
ne supporte pas la version 3 de Python).
Le programme d'installation de Py2exe est disponible ici :
__Link sourceforge.net/projects/py2exe/files/py2exe/0.6.9/
Avec une machine 32 bits et Python version 2.7, vous devez utiliser le fichier
suivant :
__Link py2exe-0.6.9.win32-py2.7.exe
Une fois téléchargé, il suffit d'exécuter ce fichier pour installer Py2exe.
__h3 Utilisation de Py2exe
A titre d'exemple, voici le script d'un jeu de puissance 4 :
__Link jeu_puissance4.py
Télécharger et enregistrer ce script dans le répertoire où est installé Python
(chez moi, c'est le répertoire C:Python27).
Créer le script setup.py :
# setup.py
from distutils.core import setup
import py2exe
setup(windows=["jeu_puissance4.py"])
Enregistrer le script setup.py dans le répertoire courant de Python.
__h4 Remarques
si vous voulez disposer de la console en plus de l'interface graphique (GUI),
remplacer setup(windows=["jeu_puissance4.py"]) par
setup(console=["jeu_puissance4.py"])
pour traiter plusieurs scripts en même temps, il suffit de compléter la liste
:setup(windows=["jeu_puissance4.py","script2.py","script3.py"])
Ouvrir l'interpréteur de commande de Windows (Démarrer Exécuter cmd)
Placez-vous dans le répertoire courant de Python (commande cd : change
directory) :
> cd C:Python27
puis lancer Py2exe :
> python setup.py py2exe
Un sous répertoire nommé dist est créé (chez moi C:Python27dist).
Il contient le fichier exécutable jeu_puissance4.exe ainsi que toutes les
ressources nécessaires à un fonctionnement autonome (python27.dll
library.zip...).
Vous pouvez maintenant copier le répertoire complet dist et le distribuer vers
des ordinateurs qui ne possèdent pas Python.
Le programme se lancera en exécutant le fichier jeu_puissance4.exe.
Fin des notes
Amicalement,
Yannick Daniel Youalé
La programmation est une religion. Aimez-la, ou quittez-la.
www.visuweb.net
----- Original Message -----
From: _Abdel_
To: [email protected]
Sent: Monday, February 15, 2016 7:03 PM
Subject: [progliste] Re: 6pad++- amélioration au forPython- exécution de
fichier et prise en compte de multiples versions de python
Salut Yannick et la ML !
Alors, c'est la forme?
Tout d'abord, je tenais à te féliciter Yannick pour ce super travail, tu as
bien fait avancer le schmilblick lol !
Pour ma part, j'ai aussi fait avancer un peu le travail, l'extension
forPython comporte désormais le nécessaire pour rechercher les versions de
Python sur le disque dur, et les afficher dans une liste de sous-menus figurant
dans un sous-menu du menu forPython, intitulé "Activer une version de Python
installée".
Le sous-menu forPython comporte aussi une commande exécuter, activable grâce
au raccourci clavier CTRL + F5, qui exécutera, selon la version de Python
choisie dans le menu, la version de Python qui sera cochée et l'associera au
module en cours d'implémentation.
Si on veut utiliser le Python embarqué avec 6pad++, il faudra cocher le
premier élément du sous-menu "Activer une version de Python installée", qui est
coché par défaut.
Il conviendra alors de sélectionner dans le module en cours d'exploration, la
partie du code que l'on souhaite voir s'exécuter, avant de lancer le raccourci
CTRL + F5, la sortie sera dirigée vers la console.
Si on coche une version installée sur le PC, la sélection du code à exécuter
ne sera pas indispensable, ce sera tout le module en cours d'exploration ou
d'implémentation qui sera exécuté, et la sortie redirigée vers un fichier
logFile.log, qui sera ouvert automatiquement.
Les autres améliorations sont les suivantes :
Les regexps servant à atteindre les classes et fonctions ont été réunies dans
un dictionnaire, qui pourra être enrichi par d'autres regexps, au cas où vous
souhaiteriez exploiter d'autres langages de programmation, différents du Python.
La fonction événementielle onKeyUp a été mise à jour comme cité dans mon
précédent post.
PS:
Pour l'exécution d'un code Python avec le Python embarqué dans 6pad++, 2
pistes sont envisageables, elles sont très simples et ont bien été décrite par
notre ami Cyrille, que je salue au passage :
Première méthode :
# Instruction servant à créer un objet qui pourra être exécuter avec exec.
code=compile(sp.window.curPage.selectedText, sp.window.curPage.file, "exec")
# Exécution de l'objet.
exec(code)
Seconde méthode, qui est encore plus simple et qui fonctionne tout aussi
bien, elle consiste tout simplement à exécuter directement les lignes de code
avec la fonction exec :
exec(sp.window.curPage.selectedText)
La sortie sera alors redirigée vers la console Python de 6pad++.
Les fonctions compile et exec sont des fonctions appartenant au builtin de
Python.
Les perspectives à venir pour le forPython sont les suivantes :
Puisque le module subprocess et ses méthodes Popen et call accepte des
arguments dans le premier paramètre servant à définir la séquence de commandes
à exécuter, pourquoi ne pas enrichir l'extension pour pouvoir compiler du code
et générer un exécutable, du style setup.py py2exe, en supposant bien sûr que
Py2exe ou un autre module servant à faire cela sera installé dans notre version
de Python?
Ce serait super lol !
N'hésitez surtout pas à nous dire ce que vous pensez du travail réalisé,
est-ce qu'il y a quelque chose à retoucher, etc.
Voilà, merci à vous.
Bien amicalement,
Abdel.
----- Original Message -----
From: Yannick Youalé
To: [email protected]
Sent: Monday, February 15, 2016 4:33 PM
Subject: [progliste] 6pad++- amélioration au forPython- exécution de
fichier et prise en compte de multiples versions de python
Salut à tous,
Je voudrais vous soumettre aujourd'hui le fruit d'une partie de mon travail
de ces dernières semaines.
Je l'ai regroupé dans un module temporaire nommé tools, et les prédestine a
être intégrés au module forPython.
Il s'agit principalement des fonctionnalités suivantes:
* le listage comme éléments de sous-menu des versions de pythons repérés
sur l'ordinateur courant; Ce qui donne la possibilité de cocher la version pour
laquelle on décide de développer dans le 6pad++. Le choix est sauvegardé dans
le fichier de configuration.
* La création d'un menu "Exécuter CTRL+F5" qui lance l'exécution/la
précompilation du module courant par la version du python qui a été
préalablement sélectionnée dans les menus.
* La création d'un menu "arrêter l'exécution" qui est sensé arrêter de
force une exécution qui aurait été lancée par le menu précédent.
La version du python choisie est conservée dans une variable globale
curPythonPath qui est le chemin vers l'exécutable de ce python.
Une liste globale nommée pythonList contient les références des autres
pythons qui ont été détectés, et sont ordonnés selon leur position comme
éléments du sous-menu "versions de python".
Le 6pad++ est considéré comme un exécutable python puisqu'on peut faire des
script pour lui. il apparaît d'ailleurs comme premier élément du sous-menu
"Versions de python".
Mais je dois avouer que je n'ai pas pu jusqu'ici trouver la bonne
formulation de ligne de commande pour qu'il renvoi erreur ou succès à
l'exécution par ctrl+f5.
Peut-être allez-vous m'aider à faire la correction.
En m'aidant de l'extension perso.py, de Cyrille, j'ai créé la fonction
runCurPythonScript() qui est un exemple de communication par ligne de commande
et output entre deux versions de pythons totalement différentes.
J'espère que ça vous plaira.
Alors, mon petit Abdel, qu'est-ce que tu en dis ?
Quoi ? Ne me dis pas que j'arrives en retard et que tu as déja fait tout ça
!!!
MDR !
A plus !
Yannick Daniel Youalé
La programmation est une religion. Aimez-la, ou quittez-la.
www.visuweb.net