Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Comment lancer les scripts de projets différents ?

+4 votes

Je développe un outil permettant de lancer des script python, peu importe leur origine (pas de racisme chez moi !). Cet outil devra être compilé, donc ces lancements seront dynamiques.

L'utilisateur entre le chemin du projet, et le script à lancer. Le but est que ce script soit lancé sans problème d'imports (tous les imports du projet doivent être... importés !)

J'ai lu l'article concernant la gestion des imports, essayé ce qui a été mis plus des bricoles avec subprocess, sys.path.append(), ou PYTHONPATH vues sur stackoverflow mais rien y fait.

Architecture actuelle du projet:
projetville --> bagdad.py
projet
armée --> modulehommes --> militaires.py
projet
armée --> module_armes --> munitions.py

Je veux lancer militaires.py dans bagdad.py mais militaires.py ne doit pas oublier avec lui les imports présents dans munitions.py. Les init.py sont présents sous chaque projets et modules.

Une idée de comment envoyer des militaires avec munitions à bagdad ?

demandé 15-Jun-2016 par poalcospe (124 points)

Tu peux préciser ton architecture? parce que là c'est pas très clair. Ni ce que tu veux faire non plus d'ailleurs: quel est ton point d'entrée?

Je suis sur à peu près le même problème en ce moment (funky coincidences!) et afin de voir mes différents modules depuis un sous-module j'ai fait un ajout du module "tout en haut" au sys.path dans l'init de mon point de départ.

c'est un jeu type wargame ou RTS que tu développes ?

@furankun: voilà l'architecture (les deux projets sont indépendants):

projet_ville
    __init__.py
    bagdad.py

projet_armée
    __init__.py
    hommes
        __init__.py
        militaires.py
    armes
        __init__.py
        munitions.py

En fait j'ai à priori réglé mon problème d'import en utilisant sans avoir à utiliser sys.path. J'ai juste utilisé:

subprocess.Popen(['python', 'D:/Project/Python/test_base/test_project/module1/test_script.py'])

Maintenant il faut que je passe des paramètres depuis bagdag.py à militaires.py. On m'a parlé de la méthode QProcess qui serait bien adaptée étant donné que j'utilise des interfaces graphiques. Je voudrais donc avoir quel est le mieux entre subprocess.Popen(), QProcess, ou autre, pour lancer mon script militaires.py si je veux en plus lui passer des arguments.

J'espère que mon problème est un peu plus clair...

@buffalo974: Haha non ce n'est pas un jeu, mais je travaille sur une projet confidentiel, donc je dois trouver des noms de classe et modules, de sorte que mon explication sur le forum soit assez clair... Apparemment ça n'a pas trop marché...

1 Réponse

0 votes

A priori si tu ne veux pas te prendre la tête avec des path, ajoute un setup.py pour installer tes modules en 'dur'. comme ça ou que tu sois, tes modules seront accessibles. Si j'ai bien compris ce que tu veux faire.

répondu 2-Aou-2016 par Hackolite (278 points)
edité 2-Aou-2016 par Hackolite
...