270 votes

Pourquoi Python exécute-t-il mon module lorsque je l'importe, et comment l'arrêter ?

J'ai un programme Python que je suis en train de construire et qui peut être exécuté de deux façons : la première est d'appeler python main.py qui invite l'utilisateur à saisir des données de manière conviviale, puis exécute les données saisies par l'utilisateur dans le programme. L'autre méthode consiste à appeler python batch.py _-file-_ qui passera en revue toutes les entrées amicales et fera passer un fichier entier d'entrées par le programme en une seule fois.

Le problème est que lorsque je lance batch.py il importe certaines variables/méthodes/etc. de main.py et lorsqu'il exécute ce code :

import main

à la première ligne du programme, il se trompe immédiatement parce qu'il essaie d'exécuter le code en main.py .

Comment empêcher Python d'exécuter le code contenu dans le fichier main que j'importe ?

-2voto

user3569257 Points 1

Bien que vous ne puissiez pas utiliser import sans exécuter le code ; il y a une façon assez rapide d'entrer vos variables ; en utilisant numpy.savez qui stocke les variables sous forme de tableaux numpy dans un fichier .npz. Ensuite, vous pouvez charger les variables en utilisant numpy.load .

Voir une description complète dans la documentation de scipy

Veuillez noter que cela ne vaut que pour les variables et les tableaux de variables, et non pour les méthodes, etc.

-5voto

Dave Lewis Points 58

Essayez d'importer les fonctions nécessaires à partir de main.py ? Donc,

from main import SomeFunction

Il se peut que vous ayez nommé une fonction dans batch.py de la même manière que dans main.py, et lorsque vous importez main.py, le programme exécute la fonction main.py au lieu de la fonction batch.py ; la procédure ci-dessus devrait résoudre ce problème. Je l'espère.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X