Anda benar-benar ingin melakukan
import os
os.environ["MY_DATA"] = "my_export"
Tidak sesederhana itu:
python -c "import os; os.putenv('MY_DATA','1233')"
$ echo $MY_DATA # <- empty
Tapi:
python -c "import os; os.putenv('MY_DATA','123'); os.system('bash')"
$ echo $MY_DATA #<- 123
Cara lain untuk melakukan ini, jika Anda sedang terburu-buru dan tidak keberatan dengan hacky-aftertaste, adalah dengan mengeksekusi keluaran skrip python di lingkungan bash Anda dan mencetak perintah untuk menjalankan pengaturan lingkungan dengan python. Tidak ideal tetapi dapat menyelesaikan pekerjaan dalam keadaan darurat. Ini tidak terlalu portabel di seluruh shell, jadi YMMV.
$(python -c 'print "export MY_DATA=my_export"')
(Anda juga dapat menyertakan pernyataan di backticks di beberapa shell ``)
export
adalah perintah yang Anda berikan langsung ke shell (misalnya bash
), untuk memintanya menambah atau memodifikasi salah satu variabel lingkungannya. Anda tidak dapat mengubah lingkungan shell Anda dari proses anak (seperti Python), itu tidak mungkin.
Inilah yang terjadi saat Anda mencoba 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
Saat paling bawah /bin/sh
subproses selesai menjalankan export ...
Anda perintah, lalu dibuang, bersama dengan lingkungan yang baru saja Anda ubah.