Skoči na vsebino
Vpiši se za sledenje  
The Mothership

environment variables v WSL

Priporočeni prispevki

V neki python skripti moram prebrat iz os.environ.

 

V winsih normalno nastavim in potem preberem s pythonom, ko pa poženem windowsov ubuntu, se moje težave prično.

 

1. ubuntu od winsow ne dobi vseh environment variablesov

 

2. v ubuntuju ročno nastavim nove spremenljivke po receptu. stvar sicer deluje v smislu, da jih lahko preberem v ukazni vrstici z "echo $[ime_spremenljivke]", python jih pa v os.environ ne dobi.

 

Vesel bom vsakršnega predloga.

Deli prispevek


Povezava do prispevka

katerkol sistem z unix toolingom maš, bo treba dat v ~/.bashrc oz ekvivalent (mac os ga neki ignorira če me spomin ne vara). drugače je pa WSL 2 povsem ločen sistem od hosta (windowsev), tko da pomoje ni šans da dobiš karkol iz windowsev. 

Deli prispevek


Povezava do prispevka
The Mothership reče Dne, 24. 6. 2020 at 12:47:

V neki python skripti moram prebrat iz os.environ.

 

zakaj moras to narediti? iz tvojega opisa deluje bolj, kot da si si ti tko zamislil in nisi iskal drugih (boljsih) nacinov

Deli prispevek


Povezava do prispevka

Če res ni mus, da bereš spremenjivke iz enviromenta, lahko uporabiš konfiguracijske datoteke v yaml formatu/notaciji. (lahk tud v xml ali json formatu, če ti je ljubše) Vpišeš kar češ v fajl in bo bralo v vseh OS-ih in to iz istega mesta mape (v obeh Win in WSL2). 

WSL2 enviroment in Windows env. sta  čisto ločena in bo potrebno v obeh nastaviti env variable. Kakor vem, ni možno v Win nastavit env variable in brati v WSL2 in vice versa.

uredilo bitje Car

Deli prispevek


Povezava do prispevka
drevored reče Dne, 2. 8. 2020 at 12:56:

 

zakaj moras to narediti? iz tvojega opisa deluje bolj, kot da si si ti tko zamislil in nisi iskal drugih (boljsih) nacinov

Skripta teče v nekem Docker kontejnerju, na katerega nimam direktnega vpliva. Na WSLju sem v času razvoja skušal simulirat okolje, v katerem teče skripta, dokler je bilo to še smiselno, da mi ni blo treba met posebej verzije za v kontejner in za lokalno.

Deli prispevek


Povezava do prispevka

pol pa tko povej

jzt si dam ponavad dobre defaulte ze v python, ce slucajno ni env variable. tle je sicer nevarno da pozabis v produkciji nastavit env variable in app vseeno dela. tko da pomembnih env variabel ne smes defaultat.

 

ce je neka kratka zadeva zazenem stvar z: MOJA_VARIABLA=vrednost python skripta.py

 

ce je pa tega dost, pa dam v source control datoteko z imenom env_vars in notr specificiram variable. pol kot developer lahk direkt sourcas file in zazenes zadevo. v dostih primerih pa mors prilagodit svojemu okolju. tko da lepo skopiram fajl in si ga lokalno spremenim in pol sourcam. tega ponavad ne dajem  source control.

 

ker sem presaltal pred casom na fish valda mors dat "set -x variable value" tko da ni vec kompatibilno z bashem mam pol se s tem probleme sam jebiga.

 

ce je malo bolj resen python projekt mam datoteko conf.py, kjer je konfiguracija noter (lahko tudi prebere iz os.environ). pol ce kot developer hocem spremenit konfiguracijo lepo nardim devconf.py in "from conf import *" pol pa overridam tist kar hocem. na koncu sam se pythonu nekak poves da naj uporabi devconf.py namest conf.py. tak pristop recimo uporablja django pa tud v lasten projekt ga ni lih tezko ufurat. enkrat se spravis zraven pol pa itak sam copy pastas v druge prjekte.

Deli prispevek


Povezava do prispevka

unga bashrc nacina se ne posluzujem

 

ker so razlike med sistemi in nikol ne vem kam moram dat tocno

 

plus ce delas na dosti projektih zakaj bi project specific nastavitve mel globalno v bashrc?

Deli prispevek


Povezava do prispevka
The Mothership reče pred 21 urami:

Skripta teče v nekem Docker kontejnerju, na katerega nimam direktnega vpliva. Na WSLju sem v času razvoja skušal simulirat okolje, v katerem teče skripta, dokler je bilo to še smiselno, da mi ni blo treba met posebej verzije za v kontejner in za lokalno.

 

če maš vsaj vpliv na to kako se kontejner zalaufa, lahko daš env variable v docker-compose oz. v docker run komando

Deli prispevek


Povezava do prispevka

skripta tece v dockerju in docker ima env variable nastavljene (verjetno preko kakega CI systema)

pol je pa mothership hotu zalaufat skripto pri sebi izven dokerja pa so mu manjkale env variable, ki jih skripta rabi

 

zato sem napisal kako jaz hendlam ponavadi take zadeve

Deli prispevek


Povezava do prispevka

Pridruži se debati

Lahko objaviš prispevek in se registriraš kasneje. Ako imaš račun, se vpiši za objavo s svojim računom.

Gost
Odgovori na temo...

×   Prilepljena vsebina je formatirana.   Odstrani formatiranje pisave

  Only 75 emoji are allowed.

×   Tvoja povezava je bila samodejno vpeta..   Namesto tega prikaži kot povezavo

×   Tvoja prejšnja vsebina je bila obnovljena.   Počisti urejevalnik

×   You cannot paste images directly. Upload or insert images from URL.

Vpiši se za sledenje  
  • Nedavno brska   0 članov

    Nihče od registriranih uporabnikov ne pregleduje strani.

×
×
  • Ustvari novo...