>>> import subprocess Traceback (most recent call last): File "", line 1, in import subprocess File "", line 988, in _find_and_load File "", line 148, in __enter__ File "", line 174, in _get_module_lock File "", line 59, in __init__ File "", line 59, in __init__ File "C:\Users\Hercu\AppData\Local\Programs\Python\Python38\lib\bdb.py", line 88, in trace_dispatch return self.dispatch_line(frame) File "C:\Users\Hercu\AppData\Local\Programs\Python\Python38\lib\bdb.py", line 112, in dispatch_line self.user_line(frame) File "C:\Users\Hercu\AppData\Local\Programs\Python\Python38\lib\idlelib\debugger.py", line 24, in user_line self.gui.interaction(message, frame) AttributeError: '_ModuleLock' object has no attribute 'name' [DEBUG ON] >>> =====Wokwi2GtkWave===== Wokwi2GtkWave permet d'automatiser l'affichage des captures de chronogrammes réalisés par l'analyseur logique intégré de Wokwi. Si vous désirez plus d'informations sur l'outil: https://github.com/bvandepo/wokwi2gtkwave =====Pour Windows===== ====Installation de Wokwi2GtkWave pour Windows==== Créer un dossier wokwi dans votre dossier utilisateur, C:\Users\"votrelogin", pour avoir C:\Users\"votrelogin"\wokwi en respectant les minuscules! ===Téléchargement des fichiers=== Si vous n'avez pas Python >=3.8.6 avec PIP, le télécharger et l'installer. TRES IMPORTANT, à l'installation, cocher "add to PATH": https://bvdp.inetdoc.net/files/cesi/gtkwave/python-3.8.6-amd64.exe Télécharger dans C:\Users\"votrelogin"\wokwi: https://raw.githubusercontent.com/bvandepo/wokwi2gtkwave/main/wokwi2gtkwave.py ===En cas de problème=== En cas de problème, télécharger cette ancienne version: https://bvdp.inetdoc.net/files/cesi/gtkwave/versionwindows/wokwi2gtkwave.py Télécharger et dézipper ce fichier dans C:\Users\"votrelogin"\wokwi: https://bvdp.inetdoc.net/files/cesi/gtkwave/gtkwave-3.3.100-bin-win32.zip ====Configuration du navigateur WEB ==== ===Configuration du navigateur WEB Chromium pour la sauvegarde automatique des fichiers dans le dossier de téléchargement=== C'est le navigateur conseillé! Vous devez juste régler le dossier de Téléchargement dans Parameters->advanced parameters->location et désactiver l'option "always ask where to save the file" ===Configuration du navigateur WEB Firefox pour la sauvegarde automatique des fichiers dans le dossier de téléchargement=== Saisir l'url suivante dans Firefox: about:config Cliquer sur "accepter les risques et poursuivre" Dans la zone recherche un nom de préférence, copier: browser.helperApps.neverAsk.saveToDisk Cliquer sur le petit stylo (ou faire clic droit sur la ligne puis Modifier), puis coller dans la zone de texte: application/octet-stream Et cliquer sur le V bleu pour valider, puis fermer cet onglet ===Lancement de Wokwi-GtkWave pour Windows=== A chaque séance, vous devrez lancer une fois l'application soit en double cliquant sur le fichier wokwi2gtkwave.py dans le dossier wokwi, soit en l'exécutant depuis une console en faisant: presser touche Windows +R, puis taper cmd et "entrée", puis copier coller les lignes suivantes: echo commence cd C:\Users\%username%\wokwi python wokwi2gtkwave.py echo fini Vous devrez laisser ouverte la fenêtre de commande pendant tout le TP ! ====Test avec un fichier .vcd==== Faire un clic molette sur le lien suivant pour télécharger le fichier. Gtkwave devrait afficher les chronogrammes automatiquement: https://bvdp.inetdoc.net/files/cesi/gtkwave/test1/wokwi-logic-iut.vcd =====Pour Linux===== ====Installation de Wokwi2GtkWave pour Linux Debian==== Ouvrir un terminal en tapant sur CTRL+ALT+T puis copier la ligne suivante et saisir votre mot de passe sudo apt install python3 gtkwave wget python3-pip Puis copier les lignes suivantes: mkdir -p ~/wokwi cd ~/wokwi rm wokwi2gtkwave.py wget https://raw.githubusercontent.com/bvandepo/wokwi2gtkwave/main/wokwi2gtkwave.py chmod a+x wokwi2gtkwave.py ====Configuration du navigateur WEB ==== Faire comme indiqué pour Windows ===Lancement de Wokwi-GtkWave pour Linux=== A chaque séance, vous devrez lancer une fois l'application soit en double cliquant sur le fichier wokwi2gtkwave.py dans le dossier wokwi, soit en l'exécutant depuis une console en faisant: Presser les touches CTRL+ALT+T, puis copier coller les lignes suivantes: echo commence cd ~/wokwi python3 ./wokwi2gtkwave.py echo fini Vous devrez laisser ouverte la fenêtre de commande pendant tout le TP ! ====Test avec un fichier .vcd==== Faire un clic molette sur le lien suivant pour télécharger le fichier. Gtkwave devrait afficher les chronogrammes automatiquement: https://bvdp.inetdoc.net/files/cesi/gtkwave/test1/wokwi-logic-iut.vcd ---------------------------------------------------------------------------- =====Ajout download gtkwave===== debug=True import os import sys import math import shutil from sys import platform ######################################## #https://stackoverflow.com/questions/1051254/check-if-python-package-is-installed #install automatically watchdog if not already installed import subprocess import sys reqs = subprocess.check_output([sys.executable, '-m', 'pip', 'freeze']) installed_packages = [r.decode().split('==')[0] for r in reqs.split()] if 'watchdog' in installed_packages: if debug: print('watchdog pip package already installed') else: if debug: print('watchdog pip package missing, lets install it') import pip pip.main(['install','watchdog']) if 'wget' in installed_packages: if debug: print('wget pip package already installed') else: if debug: print('wget pip package missing, lets install it') import pip pip.main(['install','wget']) #inspiré de http://sametmax.com/reagir-a-un-changement-sur-un-fichier-avec-watchdog/ #sudo pip3 install watchdog from watchdog.events import FileSystemEventHandler from watchdog.observers import Observer #doc dans : https://pythonhosted.org/watchdog/api.html#watchdog.observers.Observer import time #to get gtkwave from the web import wget #to unzip file import shutil ########################################################## #----téléchargement de fichier, récupéré sur https://www.programcreek.com/python/example/83386/wget.download def download_file(local_path, link, checksum_reference=None): """Checks if a local file is present and downloads it from the specified path otherwise. If checksum_reference is specified, the file's md5 checksum is compared against the expected value. Keyword arguments: local_path -- path of the file whose checksum shall be generated link -- link where the file shall be downloaded from if it is not found locally checksum_reference -- expected MD5 checksum of the file """ if not os.path.exists(local_path): print('Downloading from %s, this may take a while...' % link) wget.download(link, local_path) print() if checksum_reference is not None: checksum = generate_md5_checksum(local_path) if checksum != checksum_reference: raise ValueError( 'The MD5 checksum of local file %s differs from %s, please manually remove \ the file and try again.' % (local_path, checksum_reference)) return local_path ########################################################## path_to_zip_file="gtkwave-3.3.100-bin-win32.zip" #download the zip file only if it does not exist if not os.path.exists(path_to_zip_file): print("downloading gtkwave") download_file(path_to_zip_file,"https://bvdp.inetdoc.net/files/cesi/gtkwave/gtkwave-3.3.100-bin-win32.zip", checksum_reference=None) directory_to_extract_to="./" print("unzipping gtkwave") shutil.unpack_archive(path_to_zip_file, directory_to_extract_to) =====generation d'un .exe===== https://www.askpython.com/python/pyinstaller-executable-files a l'iut le paquet pip s'est mis dans: C:\Users\bertrand.vandeportae\AppData\Roaming\Python\Python39\Scripts C:\Users\bertrand.vandeportae\AppData\Roaming\Python\Python39\Scripts\pyinstaller testdownunzip.py cd dist\testdownzip testdownzip.exe NE MARCHE PAS! https://datatofish.com/executable-pyinstaller/#:~:text=%20Steps%20to%20Create%20an%20Executable%20using%20PyInstaller,PyInstaller.%20Now%20you%E2%80%99ll%20be%20able%20to...%20More%20 =====Tentative MACOS===== installer gtkwave avec port: https://ports.macports.org/port/gtkwave/