setup.py

import subprocess
import sys
import os

required_packages = [
   'librosa',
   'soundfile',
   'numpy',
   'pyloudnorm',
   'scipy',
   'matplotlib',
   'pyrubberband',
   'pydub',
   'noisereduce',
   'scikit-learn'
]

def install(package):
   try:
       subprocess.check_call([sys.executable, '-m', 'pip', 'install', package])
       print(f"{package} başarıyla yüklendi.")
   except subprocess.CalledProcessError:
       print(f"{package} yüklenirken bir hata oluştu. Alternatif yollar denenecek...")
       attempt_alternative_install(package)

def attempt_alternative_install(package):
   # Denemek için farklı yükleme yöntemleri
   methods = [
       lambda: subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', package]),
       lambda: subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--no-cache-dir', package]),
       lambda: subprocess.check_call(['pip', 'install', package])
   ]
   
   for method in methods:
       try:
           method()
           print(f"{package} başarıyla yüklendi (alternatif yöntem).")
           return
       except subprocess.CalledProcessError:
           print(f"{package} alternatif yöntemle yüklenemedi.")

   print(f"Tüm yükleme yöntemleri başarısız oldu: {package}")

def create_virtual_env(env_name):
   print("Sanal ortam oluşturuluyor...")
   if os.name == 'nt':
       subprocess.check_call([sys.executable, '-m', 'venv', env_name])
   else:
       subprocess.check_call(['python3', '-m', 'venv', env_name])

def main():
   env_name = "venv"

   create_virtual_env(env_name)

   print("Sanal ortam aktive edilmeden yükleme yapılıyor...")
   for package in required_packages:
       print(f"{package} yükleniyor...")
       install(package)

   print("Tüm yüklemeler tamamlandı.")

if __name__ == "__main__":
   main()