Ortam değişkenleri, geliştirme projenizin yapılandırma ayrıntılarını esnek ve güvenli bir şekilde saklamak için güçlü bir mekanizmadır. Python gibi programlama dilleri tarafından erişilebilen anahtar-değer çiftlerini saklar ve bu bilgileri meraklı gözlerden gizli tutar. Bu eğitimde, Python'da ortam değişkenleri oluşturmak ve yönetmek için bilmeniz gereken kavram ve teknikleri öğreneceksiniz.
Ortam Değişkenleri Nedir?
Ortam değişkenleri, işletim sisteminizde güvenli bir yerde saklanan ad-değer çiftleridir. Çoğunlukla şu şekilde görünürler:
Python'da bu tür değişkenleri, geliştirme projenizle ilgili hassas bilgileri saklamak için kullanabilirsiniz. Hassas bilgilere şu örnekler verilebilir:
Başka uygulamalara erişmek için API anahtarları
Betikler aracılığıyla uygulamalara giriş yapmak için kullanıcı adları ve parolalar
Veritabanı kimlik bilgileri
yanlışlıkla açığa çıkarsa güvenlik sorununa yol açabilecek her şey.
Örneğin, AWS kimlik bilgilerinizi açıkça kullanan bir Python betiği yazıp bu betiği yanlışlıkla GitHub'a gönderirseniz, kötü niyetli kişilerin bunu keşfetmesi ve AWS faturanızın ciddi şekilde artması mümkündür (bunun yaşandığı biliniyor).
Ortam değişkenlerinin bir diğer faydası da yapılandırılabilir olmalarıdır. Ortam değişkenlerini düzenleyerek ayarları (veritabanı URL'leri, dosya yolları) kodu değiştirmeden kolayca ayarlayabilirsiniz. Bu özellik, aynı ayarı projenizin birden çok bölümünde kullanıyorsanız özellikle faydalıdır.
Öyleyse, Python'da onlarla nasıl çalışacağımızı öğrenelim.
Python'un os Modülünde Ortam Değişkenleri Nasıl Alınır
İşletim sisteminizde mevcut ortam değişkenlerini almak için os modülünü kullanabilirsiniz. Değişkenleri almak için .getenv işlevine sahiptir:
.getenv() işlevi hiçbir şey döndürmez, ancak bu davranışı değiştirebiliriz. Bir değişken yoksa özel bir değer döndürmek için onun default parametresini kullanabilirsiniz:
Bir sözlük olduğundan, (önerilmez) köşeli ayraç gösterimini veya bir değeri almak için .get() işlevini kullanabilirsiniz.
os, muhtemelen en önemli sistem değişkeni olan PATH'e de erişebilir. PATH, sisteminizde yüklü tüm yürütülebilir dosyaların mutlak yollarını tutar, bu yüzden epey uzundur:
Python'da Ortam Değişkenlerini Etkin Şekilde Yönetmek için python-dotenv Kütüphanesini Kullanma
Özel ortam değişkenleri ayarlama
Artık mevcut değişkenleri nasıl çıkaracağımızı bildiğimize göre, özel olanları nasıl ayarlayacağımıza bakalım. İlk yöntem os.environ sözlüğünü kullanmaktır:
# Create a new environment variable
os.environ["NEW_VARIABLE"]="42"# Always expects a string value
os.getenv("NEW_VARIABLE")Altyapı:
Ancak bu yöntem çok kullanışlı değildir; çünkü tüm yeni değişkenler mevcut oturum sona erdiğinde kaybolacaktır.
Neyse ki, .env dosyalarını (nokta-env diye okunur) kullanarak ortam değişkenlerini daha kalıcı bir şekilde saklama yöntemi vardır. Bu dosyalar aynı sözdizimine sahiptir; bu da herhangi bir işletim sisteminde çalışacakları anlamına gelir. Örnek bir .env dosyası şöyle görünür:
.env dosyalarının sözdizimi oldukça esnektir. Örneğin, çok satırlı değerlere sahip değişkenler ayarlayabilirsiniz (tırnak işareti olmalı):
LONG_ENV="This is an environment
variable with a long message"
Altyapı:
Kaçış karakterleri kullanın:
LONG_ENV="This value uses an \"escape character"Altyapı:
Ayrıca dosyaya, ileride başvurmak üzere yorumlar da ekleyebilirsiniz:
# You can also add comments anywhere with a hashtag
CUSTOM_API_LINK=https://myapi.com/v1/api
SNOWFLAKE_USERNAME=bexgboost
MYSQL_DATABASE_PASSWORD=as3ndf03
Altyapı:
${VAR_NAME} sözdizimini kullanarak bir değişkenin değerini başka bir değişkenin içinde kullanmak da mümkündür:
FIRST_NAME=John
LAST_NAME=Doe
FULL_NAME="I am ${FIRST_NAME} ${LAST_NAME}"Altyapı:
python-dotenv ile özel ortam değişkenlerini alma
Özel değişkenleri almak öncekilerle aynıdır - sadece os modülünü kullanın:
Python-dotenvi kurduktan sonra, Jupyter kullanıyorsanız Python'a içe aktarmanız gerekmez. Kütüphane, onu otomatik olarak yükleyen bir Jupyter magic yöntemi ile birlikte gelir:
# Run this anywhere in the notebook to load EVs from .env%load_ext dotenv
%dotenv
Altyapı:
Farklı adlara sahip birden fazla .env dosyası oluşturursanız, bunların tümünün git indekslemesinden hariç tutulması için .gitignore dosyanızı değiştirin:
# Pay attention to the asterisk *
$ echo ".env*">>.gitignore
Altyapı:
Sonuç
Bu yazıda, Python'da ortam değişkenlerini etkin şekilde yönetmek için gerekli tüm temel kavram ve teknikleri öğrendik. Mevcut değişkenleri Python OS modülüyle nasıl alacağımızı ve python-dotenv kütüphanesiyle özel değerleri nasıl oluşturacağımızı keşfettik. Ayrıca en iyi uygulamalara uygun .env dosyaları yazmayı da öğrendik.
Ayrıca sizi başlangıç seviyesinden ileri seviyeye taşıyacak uygulamalı alıştırmalar ve projeler içeren Python Programlama Beceri Yolumuzu da inceleyebilirsiniz.
2 yılı aşkın deneyime sahip bir veri bilimi içerik üreticisiyim ve Medium’da en büyük takipçi kitlelerinden birine sahibim. Yapay zekâ ve makine öğrenimi üzerine, biraz da alaycı bir üslupla yazılmış, ayrıntılı makaleler kaleme almayı seviyorum; çünkü onları biraz daha az sıkıcı hale getirmek için bir şeyler yapmak gerekiyor. 130’un üzerinde makale ve bir de DataCamp kursu ürettim; bir diğeri de hazırlık aşamasında. İçeriklerim 5 milyondan fazla kişi tarafından görüldü; bunların 20 bini Medium ve LinkedIn’de takipçim oldu.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Programlama becerilerinizi geliştirin. Kodu nasıl optimize edeceğinizi, fonksiyonları ve testleri nasıl yazacağınızı ve en iyi uygulama yazılım mühendisliği tekniklerini nasıl kullanacağınızı öğrenin.
Ortam değişkenleri, geliştirme projenizin yapılandırma ayrıntılarını esnek ve güvenli bir şekilde saklamak için güçlü bir mekanizmadır. Python gibi programlama dilleri tarafından erişilebilen anahtar-değer çiftlerini saklar ve bu bilgileri meraklı gözlerden gizli tutar. Bu eğitimde, Python'da ortam değişkenleri oluşturmak ve yönetmek için bilmeniz gereken kavram ve teknikleri öğreneceksiniz.
Ortam Değişkenleri Nedir?
Ortam değişkenleri, işletim sisteminizde güvenli bir yerde saklanan ad-değer çiftleridir. Çoğunlukla şu şekilde görünürler:
Python'da bu tür değişkenleri, geliştirme projenizle ilgili hassas bilgileri saklamak için kullanabilirsiniz. Hassas bilgilere şu örnekler verilebilir:
Örneğin, AWS kimlik bilgilerinizi açıkça kullanan bir Python betiği yazıp bu betiği yanlışlıkla GitHub'a gönderirseniz, kötü niyetli kişilerin bunu keşfetmesi ve AWS faturanızın ciddi şekilde artması mümkündür (bunun yaşandığı biliniyor).
Ortam değişkenlerinin bir diğer faydası da yapılandırılabilir olmalarıdır. Ortam değişkenlerini düzenleyerek ayarları (veritabanı URL'leri, dosya yolları) kodu değiştirmeden kolayca ayarlayabilirsiniz. Bu özellik, aynı ayarı projenizin birden çok bölümünde kullanıyorsanız özellikle faydalıdır.
Öyleyse, Python'da onlarla nasıl çalışacağımızı öğrenelim.
Python'un os Modülünde Ortam Değişkenleri Nasıl Alınır
İşletim sisteminizde mevcut ortam değişkenlerini almak için
osmodülünü kullanabilirsiniz. Değişkenleri almak için .getenvişlevine sahiptir:Yukarıda, tüm sistemlerde yerleşik olan sistem kullanıcı adını alıyorum. Ev yolu gibi daha birçok değişken vardır:
Ya da Conda yürütülebilir dosyanızın yolu:
Dolayısıyla
condakomutlarını çalıştırdığınızda, terminaliniz hangi uygulamanın çalıştırılacağını bu şekilde bilir.Peki, var olmayan bir değişkeni almaya çalışırsanız ne olur:
.getenv()işlevi hiçbir şey döndürmez, ancak bu davranışı değiştirebiliriz. Bir değişken yoksa özel bir değer döndürmek için onundefaultparametresini kullanabilirsiniz:.getenv() işlevi, mevcut değişkenleri almak için en iyi yöntemdir.Bununla birlikte, başka kaynaklarda tüm ortam değişkenlerini içeren bir sözlük döndüren .environ özniteliği gibi farklı yöntemler görebilirsiniz:
Bir sözlük olduğundan, (önerilmez) köşeli ayraç gösterimini veya bir değeri almak için
.get()işlevini kullanabilirsiniz.os, muhtemelen en önemli sistem değişkeni olan PATH'e de erişebilir.PATH, sisteminizde yüklü tüm yürütülebilir dosyaların mutlak yollarını tutar, bu yüzden epey uzundur:PATHiçindeki her yol iki nokta ile ayrılır. SistemimdekiPATH'in uzunluğunu sayalım:79! Fena değil.
Python'da Ortam Değişkenlerini Etkin Şekilde Yönetmek için python-dotenv Kütüphanesini Kullanma
Özel ortam değişkenleri ayarlama
Artık mevcut değişkenleri nasıl çıkaracağımızı bildiğimize göre, özel olanları nasıl ayarlayacağımıza bakalım. İlk yöntem
os.environsözlüğünü kullanmaktır:Ancak bu yöntem çok kullanışlı değildir; çünkü tüm yeni değişkenler mevcut oturum sona erdiğinde kaybolacaktır.
Neyse ki,
.envdosyalarını (nokta-env diye okunur) kullanarak ortam değişkenlerini daha kalıcı bir şekilde saklama yöntemi vardır. Bu dosyalar aynı sözdizimine sahiptir; bu da herhangi bir işletim sisteminde çalışacakları anlamına gelir. Örnek bir .env dosyası şöyle görünür:Şimdilik yalnızca üç değişken tanımlıyor. Bu dosyayı okuyup içeriğini çıkarmak için
python-dotenvadlı bir kütüphane kullanacağız:Ardından, bir Python betiğinde veya Jupyter Notebook'ta
load_dotenvişlevini içe aktaracak ve çağıracağız:Geçerli dizinde bir
.envdosyası bulamazsa, tüm üst dizinlerde arar ve bulursa True döndürür.Yukarıdaki
.envdosyasını ev dizinimde~/.envolarak sakladım; bu nedenleload_dotenvonu bulabildi.Kendi dosyalarınızı oluşturmak için terminalde
touchkomutunu kullanabilir veya VSCode gibi bir metin düzenleyici kullanabilirsiniz:.envdosyalarının sözdizimi oldukça esnektir. Örneğin, çok satırlı değerlere sahip değişkenler ayarlayabilirsiniz (tırnak işareti olmalı):Kaçış karakterleri kullanın:
Ayrıca dosyaya, ileride başvurmak üzere yorumlar da ekleyebilirsiniz:
${VAR_NAME}sözdizimini kullanarak bir değişkenin değerini başka bir değişkenin içinde kullanmak da mümkündür:python-dotenvile özel ortam değişkenlerini almaÖzel değişkenleri almak öncekilerle aynıdır - sadece
osmodülünü kullanın:load_dotenvçağrısını önce yaptığınızdan emin olun..envdosyanızload_dotenv'in erişemeyeceği bir yerdeyse, aşağıdaki gibi doğrudan yolunu geçebilirsiniz:Jupyter'da .env dosyalarıyla çalışmak
Python-dotenvi kurduktan sonra, Jupyter kullanıyorsanız Python'a içe aktarmanız gerekmez. Kütüphane, onu otomatik olarak yükleyen bir Jupyter magic yöntemi ile birlikte gelir:Sonrasında yine
osmodülünü kullanabilirsiniz:Python'da Ortam Değişkenlerini Kullanma İçin En İyi Uygulamalar
Bu bölümde, ortam değişkenlerinin güvenli ve tam olarak kullanılabilir kalmasını sağlamak için bazı en iyi uygulamaları listeleyeceğiz.
1.
.envdosyalarını her zaman.gitignore'a ekleyin; böylece onları yanlışlıkla GitHub'a göndermemiş olursunuz.2. Değişkenleri tanımlarken açıklayıcı ve TAMAMEN BÜYÜK HARF adlar kullanın.
3. Her projede ihtiyaç duyduğunuz sistem genelindeki değişkenleri saklamak için tek bir .env dosyası oluşturun.
4. .env dosyalarınızın kapsamını yönetin. Aşağıdaki gibi, geliştirme iş akışınızın farklı bölümleri için ayrı dosyalar oluşturun:
load_dotenvbunları tanıyacaktır.Farklı adlara sahip birden fazla
.envdosyası oluşturursanız, bunların tümünün git indekslemesinden hariç tutulması için.gitignoredosyanızı değiştirin:Sonuç
Bu yazıda, Python'da ortam değişkenlerini etkin şekilde yönetmek için gerekli tüm temel kavram ve teknikleri öğrendik. Mevcut değişkenleri Python OS modülüyle nasıl alacağımızı ve
python-dotenvkütüphanesiyle özel değerleri nasıl oluşturacağımızı keşfettik. Ayrıca en iyi uygulamalara uygun.envdosyaları yazmayı da öğrendik.Python yazılım mühendisliği hakkında daha fazla bilgi edinmek istiyorsanız, Python'da Yazılım Mühendisliği İlkeleri kursumuza göz atın.
Ayrıca sizi başlangıç seviyesinden ileri seviyeye taşıyacak uygulamalı alıştırmalar ve projeler içeren Python Programlama Beceri Yolumuzu da inceleyebilirsiniz.