Öncelikle konu için teşekkürler fakat bir kaç düzeltme şart gibi. İlk olarak şunu belirteyim: kodları korumak iki anlama gelebilir:
-
Kodların size ait olduğunu kanıtlamak. Bunun için bir lisans kullanırsınız. Kodlarınızın içeriği herkese açık (open source) veya kapalı olabilir, her koşulda eserinize sahip çıkmak en doğal hakkınız.
-
Sizin bahsettiğiniz gibi kodların kendilerini korumak. Diğer bir ifadeyle yazdıklarınızı diğerlerinden saklamak. Bunun için farklı yollar mevcut.
Bunun dışında sizin bahsettiğiniz birinci yöntem kodlarınızın içeriğini korumak konusunda hiçbir işe yaramaz ne yazık ki. Çünkü kodlara sahip olan kişi, sizin yazdığınız haliyle elinde tuttuğu için, kodlarınızı rahatlıkla görebilir, değiştirebilir, kopyalayabilir vs. Ayrıca programlamada başlangıç seviyesindeki biri bile bu korumayı(!) rahatlıkla farkedebilir ve kaçınabilir.
İkinci yöntem ise Python’un kendi içerisinde kullanılan bir özellik. Amacını şu konuda anlatmıştım. Koruma sağlamaktan çok bize betikler üzerinde kontrol sağlıyor.
Öte yandan üçüncü yöntem ciddi anlamda bir koruma için ilk adım sayılabilir. Compiled Python File (.pyc), kodlarınızın bytecode çevrilmiş halidir. Sizin de dediğiniz gibi geri çevrilmesi zordur. Fakat imkansız değildir. Deneyimli ve azimli bir programcı kodları geri çevirebilir. Okuduğum bazı tartışmalarda sunulan bir yöntem vardı: kodlarınızı yazdıktan sonra değişkenlerin isimlerini karmaşık ifadelerde değiştirmek. Bu sayede kodlar geri çevrilse bile çeviren kişi kodları anlamakta iyice zorlanacaktır.
Son yöntem bir öncekinden daha çok koruma sağlayacaktır. Fakat eksisi yalnızca Windows platformunda işe yaraması. Ayrıca PyInstaller daha güncel ve önerilen bir alternatif.
Ekleme: Şu ana kadar okuduğum tartışmalarda çıkarılan genel sonuç Python’un kod saklama konusunda pek uygun bir dil olmadığı. Yine de gördüğüm en iyi çözüm kodların çekirdek kısmını (core) Cython ile yazmak. Alabileceğiniz en güçlü çözüm şimdilik bu.