Setting Environment Variables Locally for Django Development

While reading the book “Two Scoops of Django“, I learned many useful things about Django. One of the really useful tips in chapter 5 of the book is the isolation of secrets (e.g. API keys and database passwords) from the source code repository, through the use of environment variables. The concept is great, but I think there is a better way for setting the environment variables on your local development machine.

The book says to put the environment variables in .bashrc, .profile, or .bash_profile, or to put them in the bin/activate script of the virtualenv. This approach is not ideal, for the following reasons:

  1. Using .bashrc and friends means that your API keys and database passwords are always loaded whenever you use the shell, even when you don’t mean to work on your Django project;
  2. In the long run, it contaminates your shell environment with useless environment variables as you work on more and more projects;
  3. At the same time, you will likely be forced to prefix the environment variable names with your project names, to prevent conflicts, making the names longer than necessary;
  4. You have to manually clean up your .bashrc (or its equivalent) after your project’s end-of-life.
  5. You have to use different syntaxes as you migrate between Linux/Unix/Mac and Windows

Even if you go with bin/activate, you are still exposing your API keys and database passwords to the shell, and you have to clean them up in the deactivate function. It’s troublesome and mistake-prone. This is actually a consequence of how virtualenv is doing it wrong.

So here is my approach, which I believe is an improvement:

  1. In the site-packages directory of your virtualenv (something like “lib/python2.7/site-packages/”), define a new mysecrets.py module. The content of this module is like this:
    # `secrets` **must** be a simple dictionary.
    # i.e. no logic to programmatically generate keys or
    # values.
    secrets = {
        'postgresql_username': 'bob',
        'postgresql_password': '132!^a8!#)',
        # etc
    }
  2. Then, in the settings/local.py module of your Django project, import this mysecrets.py module and use the secrets function:
    from .base import *
    import mysecrets
    
    SECRETS = mysecrets.secrets
    
    # The rest of the usual content in local.py…

Now the SECRETS dictionary is even accessible through the django.conf.settings object.

This approach deals with the problems above while still achieving the effect of isolating secrets from the source code repository:

  • It is shell-agnostic because you are using Python to declare environment variables, and you certainly already know Python since you are working on a Django project;
  • You don’t leak your secrets through your shell;
  • You don’t contaminate your shell environment with useless variables;
  • You don’t have to prepend your variable names with your project name;
  • You don’t have to manually edit .bashrc (or its equivalent) in order to clean up, after your project’s end-of-life. You would probably delete your project’s virtualenv anyway.
  • You don’t have to edit the deactivate function in bin/activate to clean up the environment.

Update

@pydanny is concerned that this approach may degenerate into the local_settings.py anti-pattern. While his concern is understandable, I perceive it as a matter of good sense and self-discipline. Like I said in this thread in the Hong Kong Python User Group, anybody who has read @pydanny and @pyaudrey‘s Two Scoops of Django should understand the intention of isolating secrets while keeping all the real logic under version control. The module is purposely named mysecrets.py; anybody who adds anything other than secrets (e.g. API keys and database passwords) into this module simply fails English and should not be programming in any programming language at all. Like the old saying goes: we are all consenting adults.

An even safer approach would involve writing Windows INI-style config files and using Python’s ConfigParser to parse them, as suggested by Jimmy Wong. While this avoids the degeneration into the local_settings.py anti-pattern, it also entails knowing and using an extra syntax (INI-style config file syntax), however trivial it is. It’s a trade-off that I am hesitant to take. I’m lazy this way.

Comments are most welcome.

Update 2

I don’t remember why I originally wrote `secrets` as a function. In retrospec, it should be just a dictionary. It would look more declarative and be less prone to degenerate into the local_settings.py anti-pattern. I’ve updated the code snippets above.

34 thoughts on “Setting Environment Variables Locally for Django Development”

  1. Bierzesz wesele? To za niedługo a Ty nadal nie masz zorganizowanej muzyki już?
    Bardzo dobrze dotarłeś, dj na wesele owe idealny pomysł!
    Poznań atrakcyjny jest z genialnego otoczenia muzycznego.
    Ważne studium, dosyć jednakowa aktora, spróbowanie, sposób wykonywania natomiast adolescencję.

    Przeciągle zastanawialiśmy się między ensemblem (na co energicznie pili
    ojcowie) a DJ’em a uznać pragniemy, że ułomność nasza historyczna strzałem w 10-ciu!!!
    Resztą zajmiemy się nasza firma – DJ na szczęście natomiast Wódz – wypożyczeni poprzez Was opiniodawcy.
    Dj zajedzie, opracuje rynsztunek – tudzież jak zjawią się starcy
    i najistotniejsza w bieżącym dniu Niepoważna Dwójka – pozdrowi wszelkich natomiast patetycznie inauguruje loterię.
    Dopytaj azali używa mikrofonu. Poproś o zdjęcia lub filmy z podobnych
    imprez. Najlepiej spotkaj się z dejotem, niekiedy jedna rozmowa pokazuje czy ktoś jest
    pewny owego co robi, czy bajcuje aż miło. Dodatkowo jesteś
    zobligowany polubić swojego DJ-a, iżby złapać z nim czucie, jak ktoś już na spotkaniu nie jest rozmowny to jakim cudem
    ma złapać kontakt z publiką na imprezie? Na koniec wspominaj złoty trójkąt tanio,
    dobrze, szybko, we wszystkich służbach działa to tak samo – możesz wybrać duet
    z tych cech równocześnie. Ma być dobrze i szybko – nie pozostanie
    tanio, ma być oszczędnie i szybko – nie będzie dobrze. Jeśli mowa o samych pieniądzach to tłumaczyłem ile zapłacisz za
    organizacja imprez poznań i tyle już. Ano rzucasz hasło do ziomeczków, pewnie jeszcze na
    FB. Jednego możesz być obojętnie jaki, na 100% ktoś poleci Ci jakiegoś dejota, jeśliby nawet nie Twoi znajomi to znajomi
    ich znanych i tak dostajesz namiar na Zenka. Pytasz Kasi czy Zenon potrafi przeglądać temat, pół biedy jeśliby
    grał na weselu Kasi, jeśli nie znów posiadasz dobre słowo
    (tym całkowicie znajomej), że daje dyspozycję.
    Lepiej gdy ma fanpage, zaraz go sprawdzisz,
    atoli nie zawsze tak jest. Poszukiwania profesjonalnego dj na wesele jest troszkę dotkliwe, wiadomo,
    jednak nawet na rzecz leniwych osób, nie musi to być uciążliwy ambaras, ponieważ w sieci zdołasz znaleźć ogromną bazę intrygujących firm oferujących swoją pomagier np.
    przy organizacji wesel, imprez, spotkań integracyjnych i tym podobne.
    Jeżeli poszukujesz dj na wesele Poznań to nie musisz się martwić, albowiem w tym
    mieście, jakże na swój sposób urokliwym stanowiskiem w Polsce, znajdziesz wiele elitarnych
    firm, wodzirejów też!

  2. Nasza firma powstała w 2005 roku kalendarzowym.
    Zaczynaliśmy działalność od jednego samochodu typu Bus o masie całkowitej do trzy, 5 tony oraz równorzędności z jednym ze międzynarodowych liderów w dziedzinie międzynarodowego przewozu drogowego i lotniczego tj.
    firmą DHL Express. Z upływem czasu oraz zwiększającym
    się zapotrzebowaniem na usługi transportowe stopniowo rozbudowywaliśmy nasz tabor.

    Teraz dysponujemy taborem o dopuszczalnej masie całkowitej (DCM)od trzecia, 5
    tony do czterdzieści ton. Obszar działalności korporacje obejmuje Europę,
    a preferowane kierunki to Niemcy, Italia, a w szczególności kraje Skandynawskie m.
    in. Dania natomiast Szwecja. O solidności a kompetencji naszej firmy świadczy wierność
    klientów, którzy od zarania istnienia firmy korzystają z naszych usług.
    Wychodząc naprzeciwko potrzebom rynku, zapewniam całościową i terminową dostawę materiałów.

    Zatrudniamy stałą załogę sprawdzonych i
    kompetentnych kierowców, z którymi jesteśmy w ciągłym kontakcie co umożliwia nam sprawne i szybkie rozwiązywanie ewentualnych kłopotów, nawet nie
    licząc granicami kraju. Wszystkie pojazdy mają zamontowany system nawigacji satelitarnej GPS.

    Posiadamy rynsztunek umożliwiający załadunek i rozładunek towarów, co dla mnóstwa klientów jest dużym uefektywnieniem.
    Gwarantujemy dokładność i znajomość rzeczy działania,
    szybką i sprawną realizację zleceń, indywidualnie podejście
    do każdego klienta, solidność i niezawodność powierzonych
    mnie zleceń. To wyjątkowe trumfy naszej firmy,
    które możemy Państwu zagwarantować. O nas – transport międzynarodowy Nasze
    zakład pracy Usługi Transportowe Ryszard Sobański realizuje przewozy ładunków na rynku krajowym
    i międzynarodowym od 1989 roku. Nieustannie rozwijamy polską ofertę w sektorze
    lokomocji drogowego, co pozwala nam wychodzić
    naprzeciw oczekiwaniom pewnych naszych klientów.

    Zatrudniamy aktualnie ponad sześćdziesięciu doświadczonych a wyszkolonych pracowników,
    charakteryzujących się profesjonalnym i odpowiedzialnym opuszczeniem do powierzonych im zadań, co ma znaczący wpływ na wysoką jakość
    organizowanych zadań i błyskawiczne bieg realizacji zleceń.

    Nasz nowomodny tabor składa się z wysokiej klasy pojazdów, przystosowanych aż
    do transportu wszelkiego rodzaju ładunków.
    W celu podniesienia jakości usług brukarskich i zachowania bezpieczeństwa powierzonych nam
    towarów, samochody utrzymujemy w pełnej gotowości do realizacji transportu oraz na bieżąco kontrolujemy ich sprawność techniczną w autoryzowanych serwisach.
    Specjalizujemy się w zakresie transportu drogowego oraz świadczymy usługi spedycyjne
    na rynku krajowym oraz ponadgranicznym. Całodobowa obsługa działu spedycji pozwala na monitorowanie ładunku na każdym etapie nurtu
    transportowego. Począwszy od załadunku, poprzez transport i rozładunek
    macie Państwo możliwość napastowania swoich towarów i
    inspekcji czasu ich dostarczenia. Terminowość dostawy i bezpieczeństwo powierzonych nam towarów są zawsze naszym priorytetem, dlatego każde
    zlecenie realizujemy indywidualnie, podług
    oczekiwaniami naszych klientów.

  3. I have been browsing online more than 4 houirs today,
    yet I never found any interesting article like yours. It is pretty worth enough for me.
    Personally, if all web owners and bloggers made good content as you did, thee internet will be
    a loot moee useful than ever before.

  4. Sprasza całkowitych koneserów aut glorii Mazda na Track Day,
    który poczyni się we Wrocławiu. Dealer dopomoże Bieżący asortymentu sfinalizować właściwego, tedy bezustannie, skoro korzystasz punkt ze
    naszym autem Mazda 6 zapytaj obok pośrednika radę.

    Dziarski ciąg reputacji zezwolił a przekształcić plakietkę także przykroić Master Auto
    w 100% do pragnień grup. Jak że priorytetowy teren narodowej aktywności toteż zgromadź aut we Wrocławiu wyrażamy gwałtownie
    wielce do faktu oraz jak wielbiciele motorowerów fabrykujemy rodzimą funkcję ze 100% zatrudnieniem.
    Lokalny rotacja aut niedobrych współczesne przyrzeczenie momentalnej wartości pro
    wysyłkę pojazdu. Istnieje zatem ale regula – w casusu aut piękniejszych doceniaj nad
    takich co do jakich zwerbujemy, że przystaje wykreślić erudycyjne oględziny należy automobil oddać do swojskiej chałupy we Wrocławiu.
    Operujemy naprawdę z trudem – kompletna ugoda przypadkiem wypalić się w sezonie lichszym niż 24h.
    Napęd Mazdy 323 bieżące 1. sześć w grupy LX i GLX, spośród sekwencji
    Mazda 626 zajmuje dwulitrowy motocykl GLX. Handlem AUT co więcej kasę wypełniamy się od 2010 roku – na skutek słynnym stosunkom proponowanym na skroś rodzimą
    spółkę dostąpili w rzeczonym przebiegu wielkość prowadzącego na rynku skupu AUT.
    Skup samochodów w Wrocławiu owe bardzo popularny temat.
    Jeżeli jesteś zainteresowany, odezwij się do nas.
    W styczniu 2015 roku pojawiła się ewenement odkryciu dziesięciu archetypów Mazdy,
    jakie wykluczone nie wyruszyły na ścieżkę.

    Dzięki ostatniemu, że mamusi impresariów w ćwiartek zamiast wojewódzkich, potrafisz wyprzedać przystępne auto wyłącznie w mało er.
    Wrocław i ziemie – wtedy przeto sprawujemy wystawnie odbiorców, którzy docenili słony zabytek załogi.
    Istniejemy żwawi a chętni – postępujemy doskonale plus nie tolerujemy własnym klientom miesiącami na siebie przenosić.

  5. Najem samochodów dostawczych w Warszawie atoli usługa
    idealnie skrojona na ilość potrzeb współczesnego Użytkownika!
    Stolica jest stroną, w której idzie relatywnie sporo wypożyczalni
    aut, natomiast ich mężczyznami są nie tylko przybywający tutaj w handlach biznesmeni,
    jakkolwiek dodatkowo zwykli obywatele Stolicy polski, jacy wymagają samochodu
    tak rzadko, iż nie finansuje im się umieć go na cecha – po prostu w razie
    sprawy go wynajmują. Jesteśmy skupieni na nowoczesnym, aby dać Państwu całe szczęście – niezależnie od nowoczesnego, lub potrzebują Państwo podjąć decyzję się na wynajem krótkoterminowy,
    średnioterminowy albo i długoterminowy, własna oferta zawsze przesądza efektywna a będzie ekskluzywnym wsparciem niezależnie z robionej poprzez Państwa działalności.

    Jednostka prowadzi także możliwość przedsprzedaży telefonicznej, i swej
    w lokalnej wypożyczalni pojazdów w Stolicy
    która posługuje okoliczne stronie w blasku pięćdziesiąt km.
    To profesjonalista w przestrzeni wynajmu samochodów, dały się tym setki osób,
    nie czekaj, dobierz do towarzystwa już teraz aktualnego.
    Krótkoterminowy najem aut wysyłany jest niepomiernie dla dziewczyn, które przychodzą do kraju z różnych zakątków świata (w kierunkach
    firmowych lub własnych) na Lotnisko im. Fryderyka Chopina Warszawa
    – Okęcie, lotnisko Warszawa – Modlin czy też na Dworzec Kluczowy w Stolicy i pragną
    auta do użytku na łańcuch pobytu w rogu a kierowcom, którzy
    zamierzają się na wynajem auta zastępczego na porządek naprawy ich naszego samochodu.
    W naszej ofercie znajdują się wyłącznie sprawdzone, sprawne i pojemne
    pojazdy. Umiemy, jak ważne jest oprzyrządowanie samochodu.

    Z tego asumptu każdy z naszych środków transportowych posiada klimatyzację, na pożądanie
    wyposażamy auto w: nadajnik CB, nawigację GPS tudzież wózek transportowy.
    Z uwagi na Krajów wygodę, jesteśmy w stanie podstawić wehikuł
    we wskazane miejsce. Zakładamy, że tak elastyczne zasady współpracy w połączeniu spośród nowoczesną flotą znajdą obok Państwa uznanie.
    Nasza aktywność skoncentrowana jest wokół wypożyczania samochodów dostawczych.
    Przez lata działalności niezbędne doświadczenie i doskonale wiemy nabyliśmy,
    czego potrzebują nasi klienci. Nie zważając na tego, czy są Państwo zainteresowani wynajmem samochodu na dobę czy kilka tygodni, służymy
    pomocą. W naszej ofercie znajdują się
    pojazdy dostawcze, busy, kontenery o ładowności do 3, 5 tony.

    Wszelkie samochody dostawcze wypożyczamy w atrakcyjnych cenach.

  6. Ajencja samochodu w Lublinie owo gwarancja sprawdzonej
    i profesjonalnej usługi. Działamy również w wielu innych miastach Mowa ojczysta: Łodzi, Lublinie, Rzeszowie,
    Katowicach, Wrocławiu, Poznaniu, Szczecinie, Trójmieście,
    Krakowie, Białymstoku, Bydgoszczy, Olsztynie oraz Puławach.
    Dostarczamy samochody w dowolnych miastach Polski. Jesteśmy jedną z prowadzących firm w tej zawodowej branży, wielokrotnie nagradzaną
    wspaniałą nagrodą FLEET DERBY, potwierdzającą jakość naszych usług oraz
    odpowiednie podejście do wymagań Klienta. To sprawdzony sposób na bezproblemowe wypożyczenie samochodów lecz również w Lublinie.
    Nasza flotylla składa się z ponad 850 samochodów o sprawdzonym
    standardzie jakości. Wypożyczanie samochodów w Lublinie prowadzimy
    w kilku słowach oraz średnio terminowo
    – kolejno na okres aż do 30 dni oraz od 30 dni do
    23 miesięcy, a także na weekend. Nasza usługa wynajmu auta
    w Warszawie może być usługą w opcji bez limitu km.
    Modele z naszej floty to między innymi takie pojazdy jak:
    Skoda Fabia, VW Golf, Ford Focus, Toyota Auris kombi,
    Audi Q5, czy BMW serii trzech lub 5 sedan. Tani wynajem
    samochodów to służba obejmująca zarówno osobowe, i dostawcze
    modele na ajencja Lublinie. Funkcjonujemy również jako wypożyczalnia samochodów luksusowych.
    Przedkładane przez nas modele bezbłędnie sprawdzą się w
    przypadku Delikwentów indywidualnych, którzy w związku z wypadkiem lub awarią nie dysponują własnym pojazdem, przyjmą zagranicznych gości lub pożądają samochodu
    osobowego lub dostawczego do innych celów prywatnych.

    Także przedsiębiorcy będą zaspokojeni z pakietu usług
    wypożyczalni samochodów w Lublinie – nasze samochody znakomicie
    sprawdzą się w przypadku organizacji wyjazdów służbowych, czy jako farmaceutyk lokomocji dla pracowników
    sporadycznych. Aby wynająć u nas samochód, Klient powinien dysponować ważne (przynajmniej
    od 24 miesięcy) prawo jazdy na terenie Mowa ojczysta oraz mieć ukończone dwudziesty pierwszy lat.

    Zapraszamy do zapoznania się ze szczegółami oferty!
    Następnym krokiem jest pilne określenie kryteriów wyszukiwania
    – miejscowości, konkretnej lokalizacji (na lotnisku
    bądź w mieście), daty wraz z godziną wypożyczenia
    i zwrotu. W niektórych wyszukiwarkach wpisuje się też
    od razu wiek kierowcy, bądź określa klasę poszukiwanego przez nas samochodu.
    Jest to do tego stopnia ważne, że już na tym etapie mogą wyczekiwać na nas liczne pułapki.
    Warto zwrócić uwagę na ekonomizacja czasu i elastyczność podróżowania samochodem.
    Nie jesteśmy omotani od rozkładów jazdy, dzięki czemu
    możemy dynamicznie rozmieszczać dalszą podróż.

    Samochód znajduje się zatem idealny na przykrótkie, weekendowe wypady, gdy pożądamy zobaczyć sporo miejsc.
    Poruszanie się środkami komunikacji publicznej zajmowałoby po prostu za dużo
    czasu. Z kolei jeśli planujemy bytność „stacjonarny”,
    wypożyczenie auta mija się z celem.

Leave a Reply

Your email address will not be published. Required fields are marked *