mon problème se présente de la façon suivante: un programme A.py (son
vrai nom est latexbd.py, voir lien ci-dessous) exécute du code en
prenant ses données dans un fichier F.tex. Bien que mon code python soit
surement très mauvais, cela marche extrèmement bien, mais je voudrais maintenant
inclure directement des lignes de code et là je bute:
- première idée lire les lignes dans F.tex et les exécuter.
- deuxième idée, écrire les lignes dans un fichier B.py puis inclure ce
fichier dans A.py.
La première méthode semble vouée à l'échec mais je me trompe
peut-être. Je pensais que la seconde pouvait marcher mais je n'ai rien
trouvé de concluant dans la doc, j'ai peut-être mal cherché. J'ai essayé
execfile et import mais j'ai des erreurs car le code de B.py fait appel
à celui de A.py alors que ces commandes ne semblent pas le permettre.
Peut-on procéder comme je l'envisage? Dois-je changer de stratégie?
Merci pour votre aide.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Quentel
On 22 avr, 08:47, Etienne Marache wrote:
Bonjour,
mon problème se présente de la façon suivante: un programme A.py (s on vrai nom est latexbd.py, voir lien ci-dessous) exécute du code en prenant ses données dans un fichier F.tex. Bien que mon code python soit surement très mauvais, cela marche extrèmement bien, mais je voudrais maintenant inclure directement des lignes de code et là je bute:
- première idée lire les lignes dans F.tex et les exécuter.
- deuxième idée, écrire les lignes dans un fichier B.py puis inclur e ce fichier dans A.py.
La première méthode semble vouée à l'échec mais je me trompe peut-être. Je pensais que la seconde pouvait marcher mais je n'ai rien trouvé de concluant dans la doc, j'ai peut-être mal cherché. J'ai e ssayé execfile et import mais j'ai des erreurs car le code de B.py fait appel à celui de A.py alors que ces commandes ne semblent pas le permettre.
Peut-on procéder comme je l'envisage? Dois-je changer de stratégie? Merci pour votre aide.
Je ne suis pas sûr de comprendre ce que tu veux dire par "je voudrais maintenant inclure directement des lignes de code"
J'essaie de reformuler : - tu as du code Python quelque part dans un fichier .tex - dans ton programme a.py tu veux lire ce code et l'exécuter
Si c'est ça ce que tu appelles "la première méthode" marche bien. Il suffit de faire dans a.py :
code_python = (extraction de la partie utile du fichier tex) exec code_python
N'hésite pas à relancer si j'ai compris de travers Pierre
On 22 avr, 08:47, Etienne Marache <e.mara...@wanadoo.fr> wrote:
Bonjour,
mon problème se présente de la façon suivante: un programme A.py (s on
vrai nom est latexbd.py, voir lien ci-dessous) exécute du code en
prenant ses données dans un fichier F.tex. Bien que mon code python soit
surement très mauvais, cela marche extrèmement bien, mais je voudrais maintenant
inclure directement des lignes de code et là je bute:
- première idée lire les lignes dans F.tex et les exécuter.
- deuxième idée, écrire les lignes dans un fichier B.py puis inclur e ce
fichier dans A.py.
La première méthode semble vouée à l'échec mais je me trompe
peut-être. Je pensais que la seconde pouvait marcher mais je n'ai rien
trouvé de concluant dans la doc, j'ai peut-être mal cherché. J'ai e ssayé
execfile et import mais j'ai des erreurs car le code de B.py fait appel
à celui de A.py alors que ces commandes ne semblent pas le permettre.
Peut-on procéder comme je l'envisage? Dois-je changer de stratégie?
Merci pour votre aide.
mon problème se présente de la façon suivante: un programme A.py (s on vrai nom est latexbd.py, voir lien ci-dessous) exécute du code en prenant ses données dans un fichier F.tex. Bien que mon code python soit surement très mauvais, cela marche extrèmement bien, mais je voudrais maintenant inclure directement des lignes de code et là je bute:
- première idée lire les lignes dans F.tex et les exécuter.
- deuxième idée, écrire les lignes dans un fichier B.py puis inclur e ce fichier dans A.py.
La première méthode semble vouée à l'échec mais je me trompe peut-être. Je pensais que la seconde pouvait marcher mais je n'ai rien trouvé de concluant dans la doc, j'ai peut-être mal cherché. J'ai e ssayé execfile et import mais j'ai des erreurs car le code de B.py fait appel à celui de A.py alors que ces commandes ne semblent pas le permettre.
Peut-on procéder comme je l'envisage? Dois-je changer de stratégie? Merci pour votre aide.
Je ne suis pas sûr de comprendre ce que tu veux dire par "je voudrais maintenant inclure directement des lignes de code"
J'essaie de reformuler : - tu as du code Python quelque part dans un fichier .tex - dans ton programme a.py tu veux lire ce code et l'exécuter
Si c'est ça ce que tu appelles "la première méthode" marche bien. Il suffit de faire dans a.py :
code_python = (extraction de la partie utile du fichier tex) exec code_python
N'hésite pas à relancer si j'ai compris de travers Pierre
MCI, Shadok Gouroudoudou
Bonjour !
Pour inclure du code "externe" dans un script en cours, il y a bien sûr l'instruction import
Mais, si l'on modifie le fichier source, une nouvelle utilisation de import ne fera rien, car le module est déjà chargé. Il faut alors utiliser reload() (voir le doc).
Une autre possibilité, c'est execfile(). Avantage, on peut utiliser un nom de fichier quelqueconque. Note : il est préférable d'utiliser la forme : execfile(cheminfichier, globals(), globals()) qui précise l'environnement d'exécution.
Troisième piste : eval(chaine) ; là, on va mettre le code-source dans une chaîne de caractères, puis on va l'exécuter. Avantage, on peut modifier le chaîne en mémoire, et la réexécuter. Là aussi, la forme eval(source, globals(), globals()) est à considérer.
Dernière piste, pour aujourd'hui : compile + exec Comme précédemment, on met le code-source dans une chaîne. Mais, on force la compilation par Python, ce qui retourne un objet-code, que l'on peut exécuter. Exemple : import sys try: ccod=compile(chainesource,'mon_code_source:','exec') flagcompile=True except: print "Erreur de compilation" flagcompileúlse if flagcompile==True: try: exec(ccod,globals(),globals()) except: tb=sys.exc_info()[2] #traceback print str(sys.exc_info()[0]),traceback.format_exc()
Tel que c'est traité dans l'exemple, on a l'avantage d'avoir un contrôle de la syntaxe, et une information sur les erreurs éventuelles.
On pourrait déblatérer pendant de nombreux paragraphes, sur les façons de faire décrites, ou sur d'autres. Néanmoins, cela devrait te permettre d'avancer dans le direction qui te plaît...
-- @-salutations
Michel Claveau
Bonjour !
Pour inclure du code "externe" dans un script en cours, il y a bien sûr
l'instruction import
Mais, si l'on modifie le fichier source, une nouvelle utilisation de
import ne fera rien, car le module est déjà chargé.
Il faut alors utiliser reload() (voir le doc).
Une autre possibilité, c'est execfile(). Avantage, on peut utiliser un
nom de fichier quelqueconque.
Note : il est préférable d'utiliser la forme :
execfile(cheminfichier, globals(), globals())
qui précise l'environnement d'exécution.
Troisième piste : eval(chaine) ; là, on va mettre le code-source dans
une chaîne de caractères, puis on va l'exécuter.
Avantage, on peut modifier le chaîne en mémoire, et la réexécuter.
Là aussi, la forme eval(source, globals(), globals()) est à considérer.
Dernière piste, pour aujourd'hui : compile + exec
Comme précédemment, on met le code-source dans une chaîne. Mais, on
force la compilation par Python, ce qui retourne un objet-code, que
l'on peut exécuter. Exemple :
import sys
try:
ccod=compile(chainesource,'mon_code_source:','exec')
flagcompile=True
except:
print "Erreur de compilation"
flagcompileúlse
if flagcompile==True:
try:
exec(ccod,globals(),globals())
except:
tb=sys.exc_info()[2] #traceback
print str(sys.exc_info()[0]),traceback.format_exc()
Tel que c'est traité dans l'exemple, on a l'avantage d'avoir un
contrôle de la syntaxe, et une information sur les erreurs éventuelles.
On pourrait déblatérer pendant de nombreux paragraphes, sur les façons
de faire décrites, ou sur d'autres.
Néanmoins, cela devrait te permettre d'avancer dans le direction qui te
plaît...
Pour inclure du code "externe" dans un script en cours, il y a bien sûr l'instruction import
Mais, si l'on modifie le fichier source, une nouvelle utilisation de import ne fera rien, car le module est déjà chargé. Il faut alors utiliser reload() (voir le doc).
Une autre possibilité, c'est execfile(). Avantage, on peut utiliser un nom de fichier quelqueconque. Note : il est préférable d'utiliser la forme : execfile(cheminfichier, globals(), globals()) qui précise l'environnement d'exécution.
Troisième piste : eval(chaine) ; là, on va mettre le code-source dans une chaîne de caractères, puis on va l'exécuter. Avantage, on peut modifier le chaîne en mémoire, et la réexécuter. Là aussi, la forme eval(source, globals(), globals()) est à considérer.
Dernière piste, pour aujourd'hui : compile + exec Comme précédemment, on met le code-source dans une chaîne. Mais, on force la compilation par Python, ce qui retourne un objet-code, que l'on peut exécuter. Exemple : import sys try: ccod=compile(chainesource,'mon_code_source:','exec') flagcompile=True except: print "Erreur de compilation" flagcompileúlse if flagcompile==True: try: exec(ccod,globals(),globals()) except: tb=sys.exc_info()[2] #traceback print str(sys.exc_info()[0]),traceback.format_exc()
Tel que c'est traité dans l'exemple, on a l'avantage d'avoir un contrôle de la syntaxe, et une information sur les erreurs éventuelles.
On pourrait déblatérer pendant de nombreux paragraphes, sur les façons de faire décrites, ou sur d'autres. Néanmoins, cela devrait te permettre d'avancer dans le direction qui te plaît...
-- @-salutations
Michel Claveau
Etienne Marache
MCI, Shadok Gouroudoudou writes:
Tout d'abord grand merci pour ces deux réponses
Bonjour !
Pour inclure du code "externe" dans un script en cours, il y a bien sûr l'instruction import
Une autre possibilité, c'est execfile(). Avantage, on peut utiliser un nom de fichier quelqueconque. Note : il est préférable d'utiliser la forme : execfile(cheminfichier, globals(), globals()) qui précise l'environnement d'exécution.
Pour ces deux méthodes, je suis très perplexe, lorsque je les avais essayé avant d'écrire mon message, j'avais des erreurs car python exécutait le contenu sans tenir compte du fichier principal.
Maintenant je n'ai plus d'erreur mais le contenu n'est plus exécuté.
Au tennis, on casse sa raquette, mon ultra-portable se fait tout petit!
Troisième piste : eval(chaine) ; là, on va mettre le code-source dans une chaîne de caractères, puis on va l'exécuter. Avantage, on peut modifier le chaîne en mémoire, et la réexécuter. Là aussi, la forme eval(source, globals(), globals()) est à considérer.
Dernière piste, pour aujourd'hui : compile + exec Comme précédemment, on met le code-source dans une chaîne. Mais, on force la compilation par Python, ce qui retourne un objet-code, que l'on peut exécuter. Exemple : import sys try: ccod=compile(chainesource,'mon_code_source:','exec') flagcompile=True except: print "Erreur de compilation" flagcompileúlse if flagcompile==True: try: exec(ccod,globals(),globals()) except: tb=sys.exc_info()[2] #traceback print str(sys.exc_info()[0]),traceback.format_exc()
Tel que c'est traité dans l'exemple, on a l'avantage d'avoir un contrôle de la syntaxe, et une information sur les erreurs éventuelles.
Bon là ça va beaucoup mieux, (sauf traceback.format_exc()), je peux déjà avancer avec cette méthode. Y a-t-il une limite à la longueur de la chaîne?
Pour inclure du code "externe" dans un script en cours, il y a bien
sûr l'instruction import
Une autre possibilité, c'est execfile(). Avantage, on peut utiliser un
nom de fichier quelqueconque.
Note : il est préférable d'utiliser la forme :
execfile(cheminfichier, globals(), globals())
qui précise l'environnement d'exécution.
Pour ces deux méthodes, je suis très perplexe, lorsque je les avais
essayé avant d'écrire mon message, j'avais des erreurs car python
exécutait le contenu sans tenir compte du fichier principal.
Maintenant je n'ai plus d'erreur mais le contenu n'est plus exécuté.
Au tennis, on casse sa raquette, mon ultra-portable se fait tout petit!
Troisième piste : eval(chaine) ; là, on va mettre le code-source dans
une chaîne de caractères, puis on va l'exécuter.
Avantage, on peut modifier le chaîne en mémoire, et la réexécuter.
Là aussi, la forme eval(source, globals(), globals()) est à considérer.
Dernière piste, pour aujourd'hui : compile + exec
Comme précédemment, on met le code-source dans une chaîne. Mais, on
force la compilation par Python, ce qui retourne un objet-code, que
l'on peut exécuter. Exemple :
import sys
try:
ccod=compile(chainesource,'mon_code_source:','exec')
flagcompile=True
except:
print "Erreur de compilation"
flagcompileúlse
if flagcompile==True:
try:
exec(ccod,globals(),globals())
except:
tb=sys.exc_info()[2] #traceback
print str(sys.exc_info()[0]),traceback.format_exc()
Tel que c'est traité dans l'exemple, on a l'avantage d'avoir un
contrôle de la syntaxe, et une information sur les erreurs éventuelles.
Bon là ça va beaucoup mieux, (sauf traceback.format_exc()), je peux déjà
avancer avec cette méthode. Y a-t-il une limite à la longueur de la
chaîne?
Pour inclure du code "externe" dans un script en cours, il y a bien sûr l'instruction import
Une autre possibilité, c'est execfile(). Avantage, on peut utiliser un nom de fichier quelqueconque. Note : il est préférable d'utiliser la forme : execfile(cheminfichier, globals(), globals()) qui précise l'environnement d'exécution.
Pour ces deux méthodes, je suis très perplexe, lorsque je les avais essayé avant d'écrire mon message, j'avais des erreurs car python exécutait le contenu sans tenir compte du fichier principal.
Maintenant je n'ai plus d'erreur mais le contenu n'est plus exécuté.
Au tennis, on casse sa raquette, mon ultra-portable se fait tout petit!
Troisième piste : eval(chaine) ; là, on va mettre le code-source dans une chaîne de caractères, puis on va l'exécuter. Avantage, on peut modifier le chaîne en mémoire, et la réexécuter. Là aussi, la forme eval(source, globals(), globals()) est à considérer.
Dernière piste, pour aujourd'hui : compile + exec Comme précédemment, on met le code-source dans une chaîne. Mais, on force la compilation par Python, ce qui retourne un objet-code, que l'on peut exécuter. Exemple : import sys try: ccod=compile(chainesource,'mon_code_source:','exec') flagcompile=True except: print "Erreur de compilation" flagcompileúlse if flagcompile==True: try: exec(ccod,globals(),globals()) except: tb=sys.exc_info()[2] #traceback print str(sys.exc_info()[0]),traceback.format_exc()
Tel que c'est traité dans l'exemple, on a l'avantage d'avoir un contrôle de la syntaxe, et une information sur les erreurs éventuelles.
Bon là ça va beaucoup mieux, (sauf traceback.format_exc()), je peux déjà avancer avec cette méthode. Y a-t-il une limite à la longueur de la chaîne?
Merci encore,
Etienne
MCI, Shadok Gouroudoudou
Re !
Y a-t-il une limite à la longueur de la chaîne?
J'ai testé avec des chaines de 10Mo sans problèmes ; ça fait quand même 10 millions de caractères ! En pratique, je dépasse rarement 30 ko, avec des pointes à 100-200 ko, alors que la plupart des chaînes font entre 30 et 200 caractères.
Pour info, j'utilise souvent cette technique pour faire du Python à partir d'autres applications/langages, via un serveur COM en Python. Je me suis un peu plus intéressé aux performances. Ainsi, ça fonctionne avec plusieurs milliers d'appels par secondes, mais, pour 10 Mo, il faut 5 ou 6 secondes...
J'ai une autre utilisation, encore en gestation, qui consiste à intégrer développement et application, ce va permettre de modifier des (conception d') écrans, sans sortir de l'application, mais nécessite que le script puisse se modifier lui-même.
Je serais curieux de savoir pour quelle genre d'applications vous envisagez ces techniques.
Pour le traceback, je n'ai pas précisé, mais il faut un import traceback préalable...
-- @-salutations
Michel Claveau
Re !
Y a-t-il une limite à la longueur de la chaîne?
J'ai testé avec des chaines de 10Mo sans problèmes ; ça fait quand même
10 millions de caractères ! En pratique, je dépasse rarement 30 ko,
avec des pointes à 100-200 ko, alors que la plupart des chaînes font
entre 30 et 200 caractères.
Pour info, j'utilise souvent cette technique pour faire du Python à
partir d'autres applications/langages, via un serveur COM en Python.
Je me suis un peu plus intéressé aux performances. Ainsi, ça fonctionne
avec plusieurs milliers d'appels par secondes, mais, pour 10 Mo, il
faut 5 ou 6 secondes...
J'ai une autre utilisation, encore en gestation, qui consiste à
intégrer développement et application, ce va permettre de modifier des
(conception d') écrans, sans sortir de l'application, mais nécessite
que le script puisse se modifier lui-même.
Je serais curieux de savoir pour quelle genre d'applications vous
envisagez ces techniques.
Pour le traceback, je n'ai pas précisé, mais il faut un
import traceback
préalable...
J'ai testé avec des chaines de 10Mo sans problèmes ; ça fait quand même 10 millions de caractères ! En pratique, je dépasse rarement 30 ko, avec des pointes à 100-200 ko, alors que la plupart des chaînes font entre 30 et 200 caractères.
Pour info, j'utilise souvent cette technique pour faire du Python à partir d'autres applications/langages, via un serveur COM en Python. Je me suis un peu plus intéressé aux performances. Ainsi, ça fonctionne avec plusieurs milliers d'appels par secondes, mais, pour 10 Mo, il faut 5 ou 6 secondes...
J'ai une autre utilisation, encore en gestation, qui consiste à intégrer développement et application, ce va permettre de modifier des (conception d') écrans, sans sortir de l'application, mais nécessite que le script puisse se modifier lui-même.
Je serais curieux de savoir pour quelle genre d'applications vous envisagez ces techniques.
Pour le traceback, je n'ai pas précisé, mais il faut un import traceback préalable...
-- @-salutations
Michel Claveau
Etienne Marache
MCI, Shadok Gouroudoudou writes:
Re !
Y a-t-il une limite à la longueur de la chaîne?
J'ai testé avec des chaines de 10Mo sans problèmes ; ça fait quand même 10 millions de caractères ! En pratique, je dépasse rarement 30 ko, avec des pointes à 100-200 ko, alors que la plupart des chaînes font entre 30 et 200 caractères.
Bon en entrée avec au plus quelques dizaines de lignes de code, ce sera confortable.
Pour info, j'utilise souvent cette technique pour faire du Python à partir d'autres applications/langages, via un serveur COM en Python. Je me suis un peu plus intéressé aux performances. Ainsi, ça fonctionne avec plusieurs milliers d'appels par secondes, mais, pour 10 Mo, il faut 5 ou 6 secondes...
J'ai une autre utilisation, encore en gestation, qui consiste à intégrer développement et application, ce va permettre de modifier des (conception d') écrans, sans sortir de l'application, mais nécessite que le script puisse se modifier lui-même.
Je serais curieux de savoir pour quelle genre d'applications vous envisagez ces techniques.
Merci de t'intéresser à mes problèmes, d'ailleurs un petit avis même
superficiel me serait très profitable, je me suis lancé sans rien connaître à Python comme tu as pu t'en rendre compte. Mon programme marche bien mais d'un point de vue programmation, je fais peut-être d'énormes erreurs. Pour placer le cadre il s'agit d'utiliser des données provenant de bases (postgres, mysql ou autre) dans des documents. Pour la partie données j'utilise SQLAlchemy (sans trop comprendre) et pour la partie présentation LaTeX (là je suis beaucoup plus à l'aise). Voici l'adresse du programme qui fonctionne seul ou plutôt appelé par un script bash.
L'idée est que l'utilisateur lance la partie python et la partie latex depuis un seul fichier source de type latex, les instructions python étant déguisées en commandes et environnements latex, ceci parce que le programme s'adresse à des utilisateurs de latex qui ont l'habitude de travailler ainsi.
Ceci pour expliquer que je voudrais créer un nouveau pseudo-environnement latex dans lequel il n'y aurait que des commandes python et ces commandes seraient injectées dans le fichier latexbd.py. Je pensais au départ que import ou execfile répondaient à mes besoins mais cela a l'air plus compliqué.
D'ailleurs même avec la méthode du exec sur la chaîne j'ai un problème, je n'arrive pas à écrire dans un fichier, la méthode write semble désactivée: open(fichier,'w').write('quelque-chose') ne provoque pas d'erreur mais n'écrit rien.
Pour le traceback, je n'ai pas précisé, mais il faut un import traceback préalable...
J'ai testé avec des chaines de 10Mo sans problèmes ; ça fait quand
même 10 millions de caractères ! En pratique, je dépasse rarement 30
ko, avec des pointes à 100-200 ko, alors que la plupart des chaînes
font entre 30 et 200 caractères.
Bon en entrée avec au plus quelques dizaines de lignes de code, ce sera
confortable.
Pour info, j'utilise souvent cette technique pour faire du Python à
partir d'autres applications/langages, via un serveur COM en Python.
Je me suis un peu plus intéressé aux performances. Ainsi, ça
fonctionne avec plusieurs milliers d'appels par secondes, mais, pour
10 Mo, il faut 5 ou 6 secondes...
J'ai une autre utilisation, encore en gestation, qui consiste à
intégrer développement et application, ce va permettre de modifier des
(conception d') écrans, sans sortir de l'application, mais nécessite
que le script puisse se modifier lui-même.
Je serais curieux de savoir pour quelle genre d'applications vous
envisagez ces techniques.
Merci de t'intéresser à mes problèmes, d'ailleurs un petit avis même
superficiel me serait très profitable, je me suis lancé sans rien
connaître à Python comme tu as pu t'en rendre compte. Mon programme
marche bien mais d'un point de vue programmation, je fais peut-être
d'énormes erreurs. Pour placer le cadre il s'agit d'utiliser des données
provenant de bases (postgres, mysql ou autre) dans des documents. Pour
la partie données j'utilise SQLAlchemy (sans trop comprendre) et pour la
partie présentation LaTeX (là je suis beaucoup plus à l'aise). Voici
l'adresse du programme qui fonctionne seul ou plutôt appelé par un
script bash.
L'idée est que l'utilisateur lance la partie python et la partie latex
depuis un seul fichier source de type latex, les instructions python
étant déguisées en commandes et environnements latex, ceci parce que le programme
s'adresse à des utilisateurs de latex qui ont l'habitude de travailler
ainsi.
Ceci pour expliquer que je voudrais créer un nouveau
pseudo-environnement latex dans lequel il n'y aurait que des commandes
python et ces commandes seraient injectées dans le fichier
latexbd.py. Je pensais au départ que import ou execfile répondaient à
mes besoins mais cela a l'air plus compliqué.
D'ailleurs même avec la méthode du exec sur la chaîne j'ai un problème,
je n'arrive pas à écrire dans un fichier, la méthode write semble
désactivée: open(fichier,'w').write('quelque-chose') ne provoque pas
d'erreur mais n'écrit rien.
Pour le traceback, je n'ai pas précisé, mais il faut un
import traceback
préalable...
J'ai testé avec des chaines de 10Mo sans problèmes ; ça fait quand même 10 millions de caractères ! En pratique, je dépasse rarement 30 ko, avec des pointes à 100-200 ko, alors que la plupart des chaînes font entre 30 et 200 caractères.
Bon en entrée avec au plus quelques dizaines de lignes de code, ce sera confortable.
Pour info, j'utilise souvent cette technique pour faire du Python à partir d'autres applications/langages, via un serveur COM en Python. Je me suis un peu plus intéressé aux performances. Ainsi, ça fonctionne avec plusieurs milliers d'appels par secondes, mais, pour 10 Mo, il faut 5 ou 6 secondes...
J'ai une autre utilisation, encore en gestation, qui consiste à intégrer développement et application, ce va permettre de modifier des (conception d') écrans, sans sortir de l'application, mais nécessite que le script puisse se modifier lui-même.
Je serais curieux de savoir pour quelle genre d'applications vous envisagez ces techniques.
Merci de t'intéresser à mes problèmes, d'ailleurs un petit avis même
superficiel me serait très profitable, je me suis lancé sans rien connaître à Python comme tu as pu t'en rendre compte. Mon programme marche bien mais d'un point de vue programmation, je fais peut-être d'énormes erreurs. Pour placer le cadre il s'agit d'utiliser des données provenant de bases (postgres, mysql ou autre) dans des documents. Pour la partie données j'utilise SQLAlchemy (sans trop comprendre) et pour la partie présentation LaTeX (là je suis beaucoup plus à l'aise). Voici l'adresse du programme qui fonctionne seul ou plutôt appelé par un script bash.
L'idée est que l'utilisateur lance la partie python et la partie latex depuis un seul fichier source de type latex, les instructions python étant déguisées en commandes et environnements latex, ceci parce que le programme s'adresse à des utilisateurs de latex qui ont l'habitude de travailler ainsi.
Ceci pour expliquer que je voudrais créer un nouveau pseudo-environnement latex dans lequel il n'y aurait que des commandes python et ces commandes seraient injectées dans le fichier latexbd.py. Je pensais au départ que import ou execfile répondaient à mes besoins mais cela a l'air plus compliqué.
D'ailleurs même avec la méthode du exec sur la chaîne j'ai un problème, je n'arrive pas à écrire dans un fichier, la méthode write semble désactivée: open(fichier,'w').write('quelque-chose') ne provoque pas d'erreur mais n'écrit rien.
Pour le traceback, je n'ai pas précisé, mais il faut un import traceback préalable...
ok, je me doutais qu'il manquait qqchose.
Merci encore Etienne
Laurent Pointal
Etienne Marache wrote:
Ceci pour expliquer que je voudrais créer un nouveau pseudo-environnement latex dans lequel il n'y aurait que des commandes python et ces commandes seraient injectées dans le fichier latexbd.py. Je pensais au départ que import ou execfile répondaient à mes besoins mais cela a l'air plus compliqué.
Ton post m'a rappelé un de ceux de Gael Varoquaux sur la liste pythonfr, il en a d'ailleurs fait une page ici: http://gael-varoquaux.info/computers/pyreport/index.html
Au cas où ça pourrais aider... il y a peut-être des éléments similaires dans vos problématiques.
Etienne Marache wrote:
Ceci pour expliquer que je voudrais créer un nouveau
pseudo-environnement latex dans lequel il n'y aurait que des commandes
python et ces commandes seraient injectées dans le fichier
latexbd.py. Je pensais au départ que import ou execfile répondaient à
mes besoins mais cela a l'air plus compliqué.
Ton post m'a rappelé un de ceux de Gael Varoquaux sur la liste pythonfr, il
en a d'ailleurs fait une page ici:
http://gael-varoquaux.info/computers/pyreport/index.html
Au cas où ça pourrais aider... il y a peut-être des éléments similaires dans
vos problématiques.
Ceci pour expliquer que je voudrais créer un nouveau pseudo-environnement latex dans lequel il n'y aurait que des commandes python et ces commandes seraient injectées dans le fichier latexbd.py. Je pensais au départ que import ou execfile répondaient à mes besoins mais cela a l'air plus compliqué.
Ton post m'a rappelé un de ceux de Gael Varoquaux sur la liste pythonfr, il en a d'ailleurs fait une page ici: http://gael-varoquaux.info/computers/pyreport/index.html
Au cas où ça pourrais aider... il y a peut-être des éléments similaires dans vos problématiques.
Etienne Marache
Laurent Pointal writes:
Etienne Marache wrote:
Ceci pour expliquer que je voudrais créer un nouveau pseudo-environnement latex dans lequel il n'y aurait que des commandes python et ces commandes seraient injectées dans le fichier latexbd.py. Je pensais au départ que import ou execfile répondaient à mes besoins mais cela a l'air plus compliqué.
Ton post m'a rappelé un de ceux de Gael Varoquaux sur la liste pythonfr, il en a d'ailleurs fait une page ici: http://gael-varoquaux.info/computers/pyreport/index.html
Au cas où ça pourrais aider... il y a peut-être des éléments similaires dans vos problématiques.
Merci, pour l'indication, je vais regarder ce programme. A première vue, il ne poursuit pas du tout le même but que moi. Si j'ai bien compris c'est plutôt le contraire, il part d'un fichier python et utilise des outils de translation en latex. En ce qui me concerne, l'idéal serait de n'utiliser que du latex dont rien ne peut remplacer la qualité typographique (une translation automatique ne peut pas générer du code de qualité). Malheureusement latex est assez lent de nature, alors si on le fait calculer ou gérer des bases de données c'est catastrophique, aussi mon idée est de déléguer à un logiciel de base de données tout ce qui est stockage et traitement de données un peu comme pstricks délègue la partie dessin à postscript. J'ai choisi python un peu par hasard mais surtout à cause de psycopg et sqlalchemy. D'autre font des choses analogues avec perl, avec ...
Quant à la liste, aurais-tu un lien pour les archives?
Ceci pour expliquer que je voudrais créer un nouveau
pseudo-environnement latex dans lequel il n'y aurait que des commandes
python et ces commandes seraient injectées dans le fichier
latexbd.py. Je pensais au départ que import ou execfile répondaient à
mes besoins mais cela a l'air plus compliqué.
Ton post m'a rappelé un de ceux de Gael Varoquaux sur la liste pythonfr, il
en a d'ailleurs fait une page ici:
http://gael-varoquaux.info/computers/pyreport/index.html
Au cas où ça pourrais aider... il y a peut-être des éléments similaires dans
vos problématiques.
Merci, pour l'indication, je vais regarder ce programme. A première vue,
il ne poursuit pas du tout le même but que moi. Si j'ai bien compris
c'est plutôt le contraire, il part d'un fichier python et utilise des
outils de translation en latex. En ce qui me concerne, l'idéal serait de
n'utiliser que du latex dont rien ne peut remplacer la qualité
typographique (une translation automatique ne peut pas générer du code
de qualité). Malheureusement latex est assez lent de nature, alors si on
le fait calculer ou gérer des bases de données c'est catastrophique,
aussi mon idée est de déléguer à un logiciel de base de données tout ce
qui est stockage et traitement de données un peu comme
pstricks délègue la partie dessin à postscript. J'ai choisi python un
peu par hasard mais surtout à cause de psycopg et sqlalchemy. D'autre
font des choses analogues avec perl, avec ...
Quant à la liste, aurais-tu un lien pour les archives?
Ceci pour expliquer que je voudrais créer un nouveau pseudo-environnement latex dans lequel il n'y aurait que des commandes python et ces commandes seraient injectées dans le fichier latexbd.py. Je pensais au départ que import ou execfile répondaient à mes besoins mais cela a l'air plus compliqué.
Ton post m'a rappelé un de ceux de Gael Varoquaux sur la liste pythonfr, il en a d'ailleurs fait une page ici: http://gael-varoquaux.info/computers/pyreport/index.html
Au cas où ça pourrais aider... il y a peut-être des éléments similaires dans vos problématiques.
Merci, pour l'indication, je vais regarder ce programme. A première vue, il ne poursuit pas du tout le même but que moi. Si j'ai bien compris c'est plutôt le contraire, il part d'un fichier python et utilise des outils de translation en latex. En ce qui me concerne, l'idéal serait de n'utiliser que du latex dont rien ne peut remplacer la qualité typographique (une translation automatique ne peut pas générer du code de qualité). Malheureusement latex est assez lent de nature, alors si on le fait calculer ou gérer des bases de données c'est catastrophique, aussi mon idée est de déléguer à un logiciel de base de données tout ce qui est stockage et traitement de données un peu comme pstricks délègue la partie dessin à postscript. J'ai choisi python un peu par hasard mais surtout à cause de psycopg et sqlalchemy. D'autre font des choses analogues avec perl, avec ...
Quant à la liste, aurais-tu un lien pour les archives?
Merci, Etienne.
Laurent Pointal
Quant à la liste, aurais-tu un lien pour les archives?
Le lien vers la liste: https://www.aful.org/wws/info/python
Et celui vers les archives: https://www.aful.org/wws/arc/python
Le post de Gaël: https://www.aful.org/wws/arc/python/2006-06/msg00006.html
A+
Laurent.
Quant à la liste, aurais-tu un lien pour les archives?
Le lien vers la liste:
https://www.aful.org/wws/info/python
Et celui vers les archives:
https://www.aful.org/wws/arc/python
Le post de Gaël:
https://www.aful.org/wws/arc/python/2006-06/msg00006.html
Quant à la liste, aurais-tu un lien pour les archives?
Le lien vers la liste: https://www.aful.org/wws/info/python
Et celui vers les archives: https://www.aful.org/wws/arc/python
Le post de Gaël: https://www.aful.org/wws/arc/python/2006-06/msg00006.html
A+
Laurent.
Etienne Marache
Laurent Pointal writes:
Quant à la liste, aurais-tu un lien pour les archives?
Le lien vers la liste: https://www.aful.org/wws/info/python
Et celui vers les archives: https://www.aful.org/wws/arc/python
Le post de Gaël: https://www.aful.org/wws/arc/python/2006-06/msg00006.html
Merci beaucoup pour ces liens, le fil en question est effectivement sur mon problème dirait-on. Il faudrait que par l'intermédiaire du exec, python interprète le code exactement comme s'il faisait partie du fichier principal. C'est le cas avec la solution de Michel pour toutes les instructions que j'ai essayé (pas beaucoup) sauf pour le open(fichier,'w').write qui laisse python de marbre.
Quant à la liste, aurais-tu un lien pour les archives?
Le lien vers la liste:
https://www.aful.org/wws/info/python
Et celui vers les archives:
https://www.aful.org/wws/arc/python
Le post de Gaël:
https://www.aful.org/wws/arc/python/2006-06/msg00006.html
Merci beaucoup pour ces liens, le fil en question est effectivement
sur mon problème dirait-on. Il faudrait que par l'intermédiaire du exec,
python interprète le code exactement comme s'il faisait partie du
fichier principal. C'est le cas avec la solution de Michel pour toutes
les instructions que j'ai essayé (pas beaucoup) sauf pour le
open(fichier,'w').write qui laisse python de marbre.
Quant à la liste, aurais-tu un lien pour les archives?
Le lien vers la liste: https://www.aful.org/wws/info/python
Et celui vers les archives: https://www.aful.org/wws/arc/python
Le post de Gaël: https://www.aful.org/wws/arc/python/2006-06/msg00006.html
Merci beaucoup pour ces liens, le fil en question est effectivement sur mon problème dirait-on. Il faudrait que par l'intermédiaire du exec, python interprète le code exactement comme s'il faisait partie du fichier principal. C'est le cas avec la solution de Michel pour toutes les instructions que j'ai essayé (pas beaucoup) sauf pour le open(fichier,'w').write qui laisse python de marbre.