Disons que nous sommes sur une ligne de commande et que nous déclarons une variable d'environnement:
export x=100
Quand je vais à python et que je tape:
os.environ['x'] = '100000'
Si je suis revenu à la ligne de commande, x
reste 100
. Est-il possible de changer cette variable dans python?
Il n'y a aucun moyen de changer les variables d'environnement à partir d'un processus enfant. Et il y a exactement la même question sur SO .
Il existe une solution de contournement à ce que vous souhaitez réaliser. En supposant que vous utilisiez bash comme shell, vous pouvez écrire les modifications dans les fichiers d’initialisation de bash (j’ai choisi ~/.bashrc
):
#!/usr/bin/python
import os
os.system('bash -c \'echo "export a=100000" >> ~/.bashrc\'')
os.system('bash -c \'source ~/.bashrc\'')
Vous devez préfixer bash -c
, car python utilise sh
comme shell par défaut.
Idée dérivée de ne question similaire sur SO (différente de celle falconer posté).