Python Belgelerim
  • Kapak
  • Django ile Çevirimiçi Ziyaretçi Sayacı Yapımı
  • elementtree Modülü
  • tarfile Modülü
  • zipfile Modülü
  • Python'da Kaynak Kodları Gizlemek
  • Pygame ile Oyun Programlama - Giriş
  • Pygame ile Oyun Programlama - display Modülü
  • Pygame ile Oyun Programlama - draw Modülü
  • Pygame ile Oyun Programlama - surface Modülü
  • Pygame ile Oyun Programlama - image Modülü
  • Pygame ile Oyun Programlama - font Modülü
  • Pygame ile Oyun Programlama - event Modülü
  • Pygame ile Oyun Programlama - rect Modülü
  • Pygame ile Oyun Programlama - music Modülü
  • Pygame ile Oyun Programlama - mixer Modülü
  • Pygame ile Oyun Programlama - time Modülü
  • Pygame ile Oyun Programlama - Sprite 1. Bölüm
  • Pygame ile Oyun Programlama - Sprite 2. Bölüm
  • Pygame ile Oyun Programlama - Sprite 3. Bölüm
  • Pygame ile Oyun Programlama - Sprite 4. Bölüm Son
  • pymunk 2B Fizik Kütüphanesi – Bölüm 1
  • pymunk 2B Fizik Kütüphanesi – Bölüm 2 Son
  • QThread ile QProgressBar Kullanımında Uygulamanın Çökmesi
  • QSettings Sınıfı Kullanımı
  • QLineEdit ile Otomatik ve Sekme ile Tamamlama
  • Qt Designer Kullanımı
  • PyQt Uygulamasında Çoklu Dil Desteği
  • PyQt'de Eski ve Yeni Sinyal Yapısı ve Kendi Sinyalimizi Oluşturmak
  • PyQt5 ile Değişken Parametreli Sinyal Oluşturmak
  • Python da Sonsuz Alt Kategori Sıralama
  • Python ile Hole Punching Yöntemi
Powered by GitBook
On this page

Was this helpful?

Python'da Kaynak Kodları Gizlemek

Previouszipfile ModülüNextPygame ile Oyun Programlama - Giriş

Last updated 5 years ago

Was this helpful?

Genelde Python ile kodladığımız bir yazılımı kaynak kodlarıyla paylaşırız. Python öğrenenlerde genellikle açık kaynak ve/veya özgür yazılım olarak kodlarını yayınlarlar. Eğer siz diğer gruba dahilseniz ya da en azından ilk başta kaynak kodlarınızı incelemek isteyenlerden; kötü yazılmış kodlarınızı saklamak isteyenlerdenseniz okumaya devam edin…

Amacı, kaynak kodları kapalı bir yazılım geliştirmek isteyen birisi en basitinden py uzantılı dosyaları derleyerek pyc olarak dağıtabilir ya da py2exe, pyinstaller ve cx_freeze gibi modüllerle çalıştırılabilir binary dosyaya dönüştürebilir.

Bizim amacımız ise masumca :) Amacımız python modüllerimizi ve/veya paketlerimizi tek bir yerde toplamak ve kalabalık yapmamak. Örneğin çalıştıracağımız py uzantılı dosyamızın adı oyun.py olsun ve aynı dizinde “lib” adında bir dizin içinde ise init.py, gui.py, ai.py dosyaları olsun. Bu durumda dosya yapımız şöyle olacaktır:

oyun.py
lib/
---- __init__.py
---- ai.py
---- gui.py

lib dizinini zip dosyası haline getireceğiz ve farklı bir isim ve uzantıyla kaydedeceğiz. Sizin bu yöntemi kullandığınızı bilmeyen acemiler kaynak kodlarınızı bulamayacaktır :) Amacım kapalı kaynak yazılım yazmayı özendirmek değil. Şu güne kadar ne kodladıysam hepsini gpl v3 ile lisanslamışımdır.

Konuya dönelim ve bu zipleme işini de zipfile modülü ile yapalım. Bu modülü bilmeyenler daha önce yazdığım inceleyebilirler.

import zipfile

zip = zipfile.ZipFile('save.data',"w",zipfile.ZIP_DEFLATED)
zip.write("lib/__init__.py")
zip.write("lib/ai.py")
zip.write("lib/gui.py")
zip.close()

lib diziniyle aynı dizinde bu betiği çalıştırırsanız save.data adında bir zip arşivi oluşacaktır. Şimdi bu save.data adlı arşivimizi oyun.py de çağıralım.

import sys

sys.path.insert(0, "save.data")

import lib.ai
from lib import gui

Görüldüğü gibi fazladan iki satır kod yazıp arşiv dosyamızı path'e ekledik ve kodları gizlemiş olduk.

Eğer modüllerinizde aynı dizin içinde, yahut zip arşivinin içine gelecek şekilde bir dosya okumaya ve/veya yazmaya çalışırsanız hata alırsınız. Pygame ile resim dosyasını göstererek Surface nesnesi oluşturmayı denerseniz hata alırsınız. Benim deneyimlerimden bunlar açığa çıktı. Bu yöntemi kullanacaksanız bunun gibi hata çıkaracak unsurlara dikkat ediniz.

yazımı