Cela dépend de la façon dont le second script python est appelé.
Si vous avez un shell et que le shell exécute d'abord le premier script python, alors le second ne fonctionnera pas. La raison en est que le premier script python hérite de l'environnement du shell. Mais modifier os.environ[]
ou appeler putenv()
ne modifiera alors que l'environnement hérité --- celui du second script python, et non celui du script shell. Si maintenant le script shell exécute le deuxième script python, il héritera à nouveau de l'environnement du shell ... et comme le script shell n'est pas modifié, vous ne pouvez pas voir la modification du premier script python.
Une façon de achive votre objectif est d'utiliser un fichier d'aide:
#!/bin/bash
rm -f envfile
./first_pythonscript
test -f envfile && . envfile
rm -f envfile
./second_pythonscript
Ce code est brut, il ne fonctionnera pas si deux instances de l'exécution du script shell, il ne faut pas l'utiliser AS- est. Mais j'espère que vous avez l'idée.
Même une autre façon est de faire de votre second_pythonscript non pas un programme, mais un module Python que le premier_pythonscript peut importer. Vous pouvez également en faire une bibliothèque hybride, lorsqu'elle est importée, lorsqu'elle est exécutée via la construction if __name__ == "__main__":
.
Enfin, vous pouvez utiliser l'une des fonctions os
, par ex. os.spawnvpe
Ce qui est fonctionnellement équivalent à 'sh -c « VAR =/répertoire_travail_actuel exec/chemin/vers/votre/seconde/script.py' (à condition que vous êtes sous Unix, et le second script est correctement chmod + x et a une ligne de shebang correcte). – tripleee
Oui, il fait la même chose, mais sa déclaration était: "J'essaie de définir la variable d'environnement en utilisant python";) – Frodon