GNU/Linux >> Znalost Linux >  >> Linux

Jak používat export s Pythonem na Linuxu

Ve skutečnosti to chcete udělat

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

Není to tak jednoduché:

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

Ale:

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

Dalším způsobem, jak to udělat, pokud spěcháte a nevadí vám ta hackerská pachuť, je spustit výstup skriptu python ve vašem prostředí bash a vytisknout příkazy k provedení nastavení prostředí v pythonu. Není to ideální, ale může to udělat práci v nouzi. Není příliš přenosný přes shelly, takže YMMV.

$(python -c 'print "export MY_DATA=my_export"')

(příkaz můžete také uzavřít zpětnými znaménky v některých shellech ``)


export je příkaz, který zadáváte přímo do shellu (např. bash ), abyste mu řekli, aby přidal nebo upravil jednu ze svých proměnných prostředí. Nemůžete změnit prostředí svého shellu z podřízeného procesu (jako je Python), prostě to není možné.

Zde je to, co se stane, když vyzkoušíte os.system('export MY_DATA="my_export"') ...

/bin/bash process, command `python yourscript.py` forks python subprocess
 |_
   /usr/bin/python process, command `os.system()` forks /bin/sh subprocess
    |_
      /bin/sh process, command `export ...` changes its local environment

Když je nejspodnější /bin/sh podproces dokončí spuštění vašeho export ... příkaz, pak je zahozen spolu s prostředím, které jste právě změnili.


Linux
  1. Jak používám Vagrant s libvirt

  2. Jak používat sdílenou paměť s Linuxem v C

  3. Jak mohu použít výstražný dialog s Pythonem v linuxu?

  1. Jak používat BusyBox na Linuxu

  2. Jak nainstalovat Python na Linux

  3. Jak používám cron v Linuxu

  1. Jak používat Linux Hexdump Command s praktickými příklady

  2. Jak používat Su Command v Linuxu

  3. Příkaz SCP v Linuxu:Jak jej používat, s příklady