Python - PyCharm’da Çoklu Ortam Kullanımı

Merter Gulbahar
3 min readAug 23, 2024

--

Sonuç

PyCharm ile yeni bir proje oluşturacağız. Projenin ilk dosyasının adı main.py olsun. Daha sonra ana dizinde environment adında bir klasör oluşturalım.

Bu klasörün içine production adında bir dosya ekleyelim. Bu dosyanın içeriği aşağıdaki gibi olabilir.

server_address=10.100.0.100:1433
db_name=prod_db
db_user=merter_prod
db_pass=pass_prod

Aynı şekilde environment dosyasınına test adında bir dosya daha ekleyelim. Bu dosyanın da içeriği aşağıdaki gibi olabilir.

server_address=194.100.0.100:1433
db_name=test_db
db_user=merter_test
db_pass=pass_test

Bu dosyaların uzantısı olmadığını dikkat edelim.

Daha sonra PyCharm’daki konfigurasyon penceresini açalım.

Açılan penceredeki ilk inputta main olan ismi production olarak değiştirelim. Environment variables inputunun değerine de aralarına noktalı virgül gelecek şekilde env_file=production ekleyelim.

Son durum aşağıdaki gibi olmalıdır.

Aynısını test konfigurasyonu için de yapmalıyız. Konfigurasyon penceresinde sol üsteki + butonuna basalım ve yeni bir çalıştırma konfigurasyonu ekleyelim. Son durum aşağıdaki gibi olmalıdır.

Sonraki adımda main.py dosyasını açıyoruz. Terminalden dotenv ve os paketlerini yüklüyoruz.

$ pip install dotenv os

main.py dosyasına aşağıdaki kodu ekleyelim.

from dotenv import load_dotenv
import os

Daha sonra load_env adında bir fonksiyon tanımlayalım. Bu fonksiyon bize seçtiğimiz ortama ait dosyanın bilgilerini dönsün.

def load_env():
#env_file degiskenini oku
env_name = os.getenv("env_file")

home_dir = "environments/"
if env_name == 'test':
# gecerli environment'i yukle
load_dotenv(home_dir + 'test')
elif env_name == 'production':
# gecerli environment'i yukle
load_dotenv(home_dir + 'production')

#dosya icerigini obje olarak don.
return {
'server_address': os.getenv("server_address"),
'db_name': os.getenv("db_name"),
'db_user': os.getenv("db_user"),
'db_pass': os.getenv("db_pass"),
}

main.py dosyanın son hali aşağıdaki gibidir.

from dotenv import load_dotenv
import os

def load_env():
#env_file degiskenini oku
env_name = os.getenv("env_file")

home_dir = "environments/"
if env_name == 'test':
# gecerli environment'i yukle
load_dotenv(home_dir + 'test')
elif env_name == 'production':
# gecerli environment'i yukle
load_dotenv(home_dir + 'production')

#dosya icerigini obje olarak don.
return {
'server_address': os.getenv("server_address"),
'db_name': os.getenv("db_name"),
'db_user': os.getenv("db_user"),
'db_pass': os.getenv("db_pass"),
}


if __name__ == '__main__':
env = load_env()
print("server_addr -> " + env['server_address']) # objenin bir elemanina erisim
print('-------')
print(env) #objeyi yazdir
pass

Sonuç

Test ve production ortamlarında çalıştırma sonuçları

Test

server_addr -> 194.100.0.100:1433
-------
{'server_address': '194.100.0.100:1433', 'db_name': 'test_db', 'db_user': 'merter_test', 'db_pass': 'pass_test'}

Production

server_addr -> 10.100.0.100:1433
-------
{'server_address': '10.100.0.100:1433', 'db_name': 'prod_db', 'db_user': 'merter_prod', 'db_pass': 'pass_prod'}

İyi Çalışmalar!

--

--

Merter Gulbahar
Merter Gulbahar

Written by Merter Gulbahar

Bilgisayar Mühendisi ve Sporcu

No responses yet