Python 3.13'te pydub Kırılıyor: audioop vs pyaudioop
Python 3.13 çıktığında audioop modülü tamamen kaldırıldı. Standart kütüphaneden gitti. pydub kullananlar bunu hemen fark etti: "ModuleNotFoundError: No module named 'pyaudioop'" hatası.
Aslında olay şu: pydub, audioop'u bulmaya çalışıyor. Bulamazsa kendi içindeki pyaudioop'a geçiyor. Ama pyaudioop, pydub paketi içine gömülü ve mutlak yol (absolute import) ile çağrılıyor. Python 3.13'te audioop yoksa, fallback devreye giriyor; ama pyaudioop'u bulamıyor çünkü import yolu yanlış. Ayrıca pyaudioop'un kodu Python 2 zamanından kalma, buffer(),.next() gibi eski şeyler kullanıyor, çalışmaz.
pydub'ın son PyPI sürümü 0.25.1 (Mart 2021). O zamandan beri güncelleme yok. Hatta ilgili PR'ler (#816 gibi) henüz merge edilmedi.
Çözüm basit: audioop-lts kur. Topluluk tarafından bakılan, C ile yazılmış bir audioop geri dönüş paketi.
1pip install audioop-ltsKurmadan sonra import audioop doğrudan çalışır, pydub pyaudioop fallback'ine düşmez. Eğer sadece Python 3.13+ için gerekiyorsa, requirements dosyasına şöyle yaz:
1audioop-lts; python_version >= "3.13"Alternatif: fitzyracing-pydub fork'u var, o da 3.13+ için düzeltilmiş. İthalatı aynı kalıyor, kod değişikliği yok.
Kısacası, Python 3.13'e geçmek istiyorsan ve pydub kullanıyorsan, audioop-lts'yi yükle. Daha fazla detay için bu yazıyı oku.
0 yorum