python include




Comment utiliser l'exportation avec Python sur Linux (6)

J'ai besoin de faire une exportation comme celle-ci en Python:

# export MY_DATA="my_export"

J'ai essayé de faire:

# -*- python-mode -*-
# -*- coding: utf-8 -*-
import os
os.system('export MY_DATA="my_export"')

Mais quand je liste exportation, "MY_DATA" n'apparaît pas:

# export

Comment puis-je exporter avec Python sans enregistrer "my_export" dans un fichier?


Une solution en ligne:

eval `python -c 'import sysconfig;print("python_include_path={0}".format(sysconfig.get_path("include")))'`
echo $python_include_path  # prints /home/<usr>/anaconda3/include/python3.6m" in my case

Panne:

Appel python

python -c 'import sysconfig;print("python_include_path={0}".format(sysconfig.get_path("include")))'

Il lance un script python qui

  1. importe sysconfig
  2. obtient le chemin d'inclusion python correspondant à ce binaire python (utilisez "quel python" pour voir lequel est utilisé)
  3. affiche le script "python_include_path = {0}", avec {0} étant le chemin de 2

Appel d'évaluation

eval `python -c 'import sysconfig;print("python_include_path={0}".format(sysconfig.get_path("include")))'`

Il exécute dans l'instance bash actuelle la sortie du script python. Dans mon cas, son exécution:

python_include_path=/home/<usr>/anaconda3/include/python3.6m

En d'autres termes, il définit la variable d'environnement "python_include_path" avec ce chemin pour cette instance de shell.

Inspiré par: http://blog.tintoy.io/2017/06/exporting-environment-variables-from-python-to-bash/


C'est un peu un bidouillage, car ce n'est pas vraiment un travail python spécial ici, mais si vous exécutez la commande d'exportation dans le même sous-shell, vous obtiendrez probablement le résultat souhaité.

import os

cmd = "export MY_DATA='1234'; echo $MY_DATA" # or whatever command
os.system(cmd)

Pas si simple:

python -c "import os; os.putenv('MY_DATA','1233')"
$ echo $MY_DATA # <- empty

Mais:

python -c "import os; os.putenv('MY_DATA','123'); os.system('bash')"
$ echo $MY_DATA #<- 123

Tu veux vraiment faire

import os
os.environ["MY_DATA"] = "my_export"

Vous pouvez essayer os.environ ["MY_DATA"] à la place.


os.system ('/home/user1/exportPath.ksh')

exportPath.ksh:

export PATH=MY_DATA="my_export"





export