Effectuer du calcul formel dans un QCM AMC

Added by Joss OUIN almost 5 years ago

Bonjour à tous,

Je viens de terminer une vidéo qui détaille le mode opératoire pour effectuer du calcul formel afin de générer des questions et des réponses calculées automatiquement dans AMC.

Voici l'entrée dans le Wiki d'AMC :
Lien : https://project.auto-multiple-choice.net/projects/auto-multiple-choice/wiki/Calcul_formel_avec_Python_dans_AMC

Tous les fichiers associés sont disponibles dans la description de la vidéo.

Belle journée à tous.
🌴 José OUIN 🌴


Replies (67)

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Oui je l'ai bien déclaré.
Cela dit en testant votre exemple, je dois encore utiliser le terminal pour complier la 2ème fois en python.
Je n'y comprends plus rien.
j'ai par ailleurs mis à jour le package pythontex.
C'est quand même vraiment galère ce truc. Mais en même temps très utile.

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Package PythonTeX Warning: Missing autoprint content on input line 12.

C'est léerreur qui ne cesse de revenir quand j'essaye de compiler avec le moteur pythontex sous texshop

RE: Effectuer du calcul formel dans un QCM AMC - Added by Frédéric Bréal about 3 years ago

Certains modules python doivent être installés (sympy, pygments).

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Ils sont bien installés dans anaconda

RE: Effectuer du calcul formel dans un QCM AMC - Added by Frédéric Bréal about 3 years ago

C'est anaconda qui coince, j'ai vu une réponse sur un forum en cherchant l'erreur d'autoprint.

RE: Effectuer du calcul formel dans un QCM AMC - Added by Frédéric Bréal about 3 years ago

ici
Il faut développer les derniers commentaires.

My guess is that you had a configuration issue with Anaconda. You probably needed to set assoc and ftype. See the Python docs for how to do this. You would just change their example to use Anaconda instead.

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Bonjour,

Merci!
Oui c'est effectivement ce que j'ai pensé. J'ai passé la journée d'hier à essayer d'installer pythontex avec la console et tout ce que je récupère c'est:
(base) jlebovits@iMac-de-info-3 ~ % sudo python2 /usr/local/texlive/2020/texmf-dist/scripts/pythontex/pythontex_install.py
Preparing to install PythonTeX

You may need to run this script with elevated permissions
and/or specify the environment. For example, you may need
"sudo env PATH=$PATH". That is typically necessary when your
system includes a TeX distribution, and you have manually
installed another distribution (common with Ubuntu etc.). If
the installation path you want is not automatically detected,
it may indicate a permissions issue.

Could not find file pythontex.py
Could not find file pythontex2.py
Could not find file pythontex3.py
Could not find file pythontex_engines.py
Could not find file pythontex_utils.py
Could not find file depythontex.py
Could not find file depythontex2.py
Could not find file depythontex3.py
Could not find file pythontex.sty
Could not find file pythontex.ins
Could not find file pythontex.dtx
Could not find file pythontex.pdf
Could not find file README
Could not find file syncpdb.py
Exiting due to missing files.

j'ai essayé aussi:
sudo env PATH=$PATH

export PATH=$PATH:/usr/local/texlive/2020/texmf-dist/scripts/pythontex/pythontex_install.py

j'ai rendu exécutables tous les fichiers.py du package pythontex mais rien n'y fait.

Si vous avez une idée je suis preneur.
Merci!

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Bonsoir,

Bon j'ai finalement réussi à installer complètement pythontex en ligne de commande.
J'ai suivi scrupuleusement les consignes données dans la doc d'installation de pythontex (donc installer tous les packages python, créer les liens symboliques vers pythontex et depythontex...).
Je ne parviens cependant pas à compiler proprement via TeXshop.
Pour la deuxième compilation, j'ai crée une copie du pythontex.engine mais je crois que c'est le problème car le log semble (que je vous joins semble indiquer que la compilation python ne se fait pas). A mon avis c'est une histoire de chemin mal renseigner.

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Ah bon je n'ai pas eu le temps d'écrire la fin du message.

Je pense que le chemin de compilation python n'est pas le bon.

Comme j'ai les deux distributions python (2.7 pour mac et 3.8) j'ai crée deux python engine. Le truc c'est que je ne sais pas ce qu'il faut mettre dans

  1. For anaconda distribution of Python, use
  2. PATH=~/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/TeX/texbin
  1. For system distribution of Python, use
    PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/TeX/texbin

Est-ce que quelqu'un sait?
En vous remerciant.
Cordialement,

RE: Effectuer du calcul formel dans un QCM AMC - Added by Hervé Cabaud about 3 years ago

J'avais pas mal testé aussi pour que ça marche parce j'ai trop de versions de python sur mon mac. d'origine, anaconda miniconda , macports ...
Ce que j'ai qui marche avec macports :

dans texstudio : réglage de compilations : pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex | ppython /opt/local/share/texmf-texlive/scripts/pythontex/pythontex3.py %.tex | pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex

ppython est un raccourci crée ( trouvé sur internet pour choisir la version qui marche de python.

et le fichier prePythonTex4AMC :

#! /bin/sh
SRC=$1
echo "***** JOBNAME=$AMC_JOBNAME"
echo "***** CMD=$AMC_CMD"
rm rf ./pythontex-files*
rm -f $AMC_JOBNAME.pytxcode
$AMC_CMD
echo "***** PYTHON"
python /opt/local/share/texmf-texlive/scripts/pythontex/pythontex.py $AMC_JOBNAME.pytxcode
echo "***** END FILTER"

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Bonsoir,

Merci beaucoup pour votre réponse.
Depuis mon précédent message j'ai réussi à créer un moteur qui me permet de compiler un fichier latex+python sous TexShop.
Je l'enverrai dès mon retour (mardi prochain).

Mon dernier problème reste la compilation sous AMC avec Prepythontex. J'ai pris bonne note de votre fichier et vais bien sûr l'essayer. De toute façon je pense que c'est une question de bon chemin à renseigner...

Une question si vous le permettez. J'utilise TexShop (et donc pas texstudio) et je ne sais pas où je dois saisir ce réglage de compilation que vous indiquez:
pdflatex -synctex=1 -interaction=nonstopmode --shell-escape %.tex | ppython /opt/local/share/texmf-texlive/scripts/pythontex/pythontex3.py %.tex | pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex
En avez vous une idée?
En vous remerciant.
Et à très bientôt.

Joachim

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Bonjour à tous,

De retour auprès de mon ordinateur j’ai repris, depuis hier, mes essais pour faire fonctionner AMC avec Python.
Chou blanc jusqu’ici !

Depuis la semaine dernière, j’ai réussi à créer un moteur TeXshop pour compiler un fichier tex contenant du python: donc plus besoin de psser par la console. Pensant que ma seule incompétence en TeXshop était en cause, j’ai essayé aussi avec TexMaker de façon à pouvoir utiliser le code de Joss Ouin.
Là encore tout fonctionne très bien tant que je n’essaye pas de faire tourner AMC sur ce fichier….
J’obtiens dans ce cas, en fonction du contenu de prePythonTex4AMC, soit une génération de tous les fichiers mais avec des ?? là où je devrais avoir des nombres, soit un plantage si je m’avise de mettre un chemin absolu dans mon fichier TeX (pour la première ligne) : i.e.
%%AMC:preprocess_command=/Users/jlebovits/Dropbox/000/Demov7/prePythonTex4AMC

et non

%%AMC:preprocess_command=prePythonTex4AMC

Je n’ai plus aucun doute sur le fait que c’est le fichier prePythonTex4AMC qui me pose problème. Plus précisément la partie suivante :

echo "***** PYTHON"
python3 /usr/local/texlive/texmf-local/scripts/local/pythontex/pythontex3.py $AMC_JOBNAME.pytxcode
echo "***** END FILTER"

je crois avoir essayé à peu près toutes les possibilités sauf la bonne.
Je précise que pour TexMaker, j’avais indiqué dans le menu commande utilisateur :

pdflatex --shell-escape -synctex=1 -interaction=nonstopmode .tex|
/usr/local/bin/python3.8 /usr/local/texlive/texmf-local/scripts/local/pythontex/pythontex3.py
.tex|pdflatex --shell-escape -synctex=1 -interaction=nonstopmode %.tex|
J’ai donc dû appeler python avec l’emplacement exact de python3.

J’ai bien entendu essayé la même chose dans prePythonTex4AMC, i.e. avec

echo "***** PYTHON"
python3 /usr/local/bin/python3.8 /usr/local/texlive/texmf-local/scripts/local/pythontex/pythontex3.py
$AMC_JOBNAME.pytxcode
echo "***** END FILTER"

où encore

echo "***** PYTHON"
/usr/local/bin/python3.8 /usr/local/texlive/texmf-local/scripts/local/pythontex/pythontex3.py
$AMC_JOBNAME.pytxcode
echo "***** END FILTER"

mais hélas sans succès. Enfin je pense qu’une piste est la suivante. Lorsque je mets le fichier prePythonTex4AMC
dans le terminal pour voir l’effet, j’ai la réponse suivante.

(base) jlebovits@iMac-de-info-3 ~ % /Users/jlebovits/Dropbox/000/prePythonTex4AMC
  • JOBNAME=
  • CMD=
    rm: Applications: is a directory
    rm: Desktop: Operation not permitted
    rm: Documents: is a directory
    rm: Downloads: is a directory
    rm: Dropbox: is a directory
    rm: Google Drive: is a directory
    rm: Library: is a directory
    rm: Movies: is a directory
    rm: Music: is a directory
    rm: Pictures: is a directory
    rm: Projets-QCM: is a directory
    rm: Public: is a directory
    rm: SkyDrive: is a directory
    rm: Synchro: is a directory
    rm: Syncplicity: is a directory
    rm: bin: is a directory
    rm: completions: is a directory
    rm: docs: is a directory
    rm: manpages: is a directory
    rm: opt: is a directory
  • PYTHON
  • PythonTeX error
    Code file .pytxcode does not exist.
    Run LaTeX to create it.
    • END FILTER

J'ai donc essayé de mettre, avec prepyhton4AMC le fichier Simple_tex_jo_demovideo_5.pytxcode mais sans succès.

Est-ce que quelqu'un aurait une idée?
Comme le pèlerinage à Lourdes n'est pas possible en ce moment il me faut un miracle virtuel...
Merci de votre aide!

PS: @ Hervé Cabaud est-ce que vous pourriez m'envoyer le script ppython que vous sélectionne la bonne version de python?

PPS: J'ai également essayé de faire une aide au debug au moyen de la commande d'AMC mais impossible d'avoir ce fichier. J'utilise pourtant la commande: auto-multiple-choice gui --debug-file /Users/jlebovits/Dropbox mais rien dans le fichier après execution....

Je joins néanmoins les fichiers que j'ai.

Encore merci à celui ou ceux qui pourront m'aider

RE: Effectuer du calcul formel dans un QCM AMC - Added by Hervé Cabaud about 3 years ago

je pense que c'est :
sudo ln -s /opt/local/bin/python /usr/local/bin/ppython pour mon cas.

J'avais pris ça là : https://stackoverflow.com/questions/8201760/how-to-macports-select-python
bons tests.

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Bonsoir Hervé,

Merci pour votre réponse!
Je vais regarder cela de près.

En attendant j'ai fini par trouver une solution!!!!!!!!!!!!!!!!!

Je ne dirais pas que ce fut sans mal, ni même que la solution est élégante mais elle a le mérite de fonctionner.
J'explique ci-dessous comment je m'y suis pris, avec TexShop sous Mac Os Catalina.
Une fois pythontex installé (cf. la documentation de pythontex).

Pour TexShop

Il suffit de créer un nouveau moteur (nommé par exemple Lepythontex.engine) qui se chargera de compiler en pdflatex puis avec python et enfin de nouveau avec pdflatex tout fichier contenant du code python.

Pour ce faire, on cherche pythontex.engine dans le finder (il a été crée lors de l'installation de pythontex).

Le code original est de pythontex.engine est:

#!/bin/bash

  1. For anaconda distribution of Python, use
    PATH=~/anaconda/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/TeX/texbin
  1. For system distribution of Python, use
    #PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/TeX/texbin

filename=$1

pdflatex --file-line-error --synctex=1 $1

pythontex $1

pdflatex --file-line-error --synctex=1 $1

On fait un copié-coller de ce fichier et on le nomme par exemple Lepythontex.engine (pour le distinguer du moteur pythontex original)

Il y a alors deux choses à modifier à partir du fichier original

1-l’endroit ou latex peut trouver la distribution python (ici anaconda 3 situé à l’emplacement /usr/local/bin)

2-la localisation du fichier pythontex.py (pour python2) ou pythontex3.py (pour python 3). Pour moi ce fut:

J'ai mis ce fichier en pièce jointe (avec les deux modifications en rouge).

Concernant le fichier prePythonTex4AMC.

Je mets en pièce jointe celui que j'utilise (je mets l’exécutable et la version txt). J'ai notamment changé $AMC_JOBNAME par amc-compiled partout (comme l'avait mentionné quelqu'un sur ce forum).

Ensuite on suit la procédure indiquée par Joss OUin à une exception près.
Une fois crée le projet dans AMC avec le fichier Tex (indiquant le chemin absolu vers l'exécutable prePythonTex4AMC) on ne met pas tout de suite à jour le projet dans AMC.

On rajoute une étape supplémentaire qui est:

on fait un copié coller du fichier Tex qui est dans le projet et on le nomme amc-compiled.tex. On l'exécute alors avec un éditeur latex (texshop ou autre) et on vérifie que la compilation python a bien eu lieu.
Alors seulement on met à jour dans AMC.
Et là miracle les ?? ont disparu...

Ca vaut ce que ça vaut mais si cela peut éviter des journées entières de galère à quelqu'un alors ce message aura été utile.
Bon courage à tous et merci à Hervé, à Joss Ouin pour cette méthode et à Alexis pour cette invention vraiment géniale!

Joachim

RE: Effectuer du calcul formel dans un QCM AMC - Added by Joachim Lebovits about 3 years ago

Bonjour,

on peut même raccourcir un peu le circuit.
On appelle amc-compiled.tex le projet source qui servira à créer le projet dans AMC. Une fois le projet créé (il contient donc un fichier amc-compiled.tex (entre autres), on y rajoute le fichier prePythonTex4AMC et on compile le fichier amc-compiled.tex (avec le moteur python de l'éditeur Latex bien sûr). On peut vérifier que les ?? ne sont plus là. A cemoment là seulement on peut mettre à jour les documents sous AMC et là encore le pdf est nickel.
Bonne journée.

RE: Effectuer du calcul formel dans un QCM AMC - Added by Olivier Berger over 1 year ago

J'ai eu pas mal de problèmes à faire fonctionner pythontex. Une fois AMC démarré en mode debug, j'ai enfin vu apparaître des erreurs indiquant un problème dans pythontex qui invoque python, et ça ne fonctionne pas (pas d'alias python sur ma Debian en Python 3).

Ça se résout en mettant explicitement cet argument à pythontex dans prePythonTex4AMC : --interpreter python:python3, donc dans mon cas :
python3 /usr/bin/pythontex --interpreter python:python3 $AMC_JOBNAME.pytxcode

Ça ressemble à un bug de la Debian, mais en attendant, ce contournement résout les problèmes de ?? non compilés.

Hope this helps,

« Previous 1 2 3 (51-67/67)