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-lts

Kurmadan 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.

konu hakkında tepkinizi verebilirsiniz