Importez dynamiquement des modules lors de l'exécution avec .exe renforcé avec pyinstaller --onefile

Bien que cela ne soit pas recommandé par le responsable Python, lorsque vous passez l'artefact à une personne, placez le * config.py * suivant dans la même hiérarchie que * main.py *, importez-le avec * mian.py * et utilisez-le tel quel J'avais quelque chose à faire.

config.py


width = 10
height = 10
count = 100
threshold = 50

main.py


from config import *

Je voulais importer dynamiquement des paramètres externes à partir du .exe qui a été durci avec pyinstaller cette fois, mais j'en étais accro, alors prenez note des CONSEILS.

Tout d'abord, cet article a été très utile. (Référence) https://ja.coder.work/so/python/1422895

Normalement, .exe est importé dynamiquement en utilisant importlib, mais si vous le corrigez avec * --onefile *, il semble que config.py soit également pris en charge et codé en dur. Ce problème a été résolu en supprimant * config.py * lors de sa conversion en .exe (bien que ce soit une méthode trouble). (La procédure correcte est probablement d'éditer le fichier .spec en utilisant * --hidden-import * ou quelque chose comme ...)

Le reste est dans * main.py *

main.py


import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '.'))

config = importlib.import_module('config')

width = config.width
height = config.height
count = config.count
threshold = config.threshold

Si vous ajoutez le répertoire actuel au chemin et que vous l'importez, c'est OK.

Recommended Posts

Importez dynamiquement des modules lors de l'exécution avec .exe renforcé avec pyinstaller --onefile
Créer un exe Scrapy avec Pyinstaller
Méthode de mise à jour automatique par python Pyinstaller exe
EXE l'application créée avec PyQt5 avec PyInstaller