Python Programlarını Kaydetmek
3.1 GNU/Linux Sistemi
E˘ger kullandı˘gınız sistem GNU/Linux’ta KDE masaüstü ortamı ise ba¸slangıç düzeyi için Kwrite veya Kate adlı metin düzenleyicilerden herhangi biri yeterli olacaktır. ¸Su a¸samada kullanım kolaylı˘gı ve sadeli˘gi nedeniyle Kwrite önerilebilir.
E˘ger kullandı˘gınız sistem GNU/Linux’ta GNOME masaüstü ortamı ise Gedit’i kullanabilirsiniz.
˙I¸se yeni bir Kwrite belgesi açarak ba¸slayalım. Yeni bir Kwrite belgesi açmanın en kolay yolu ALT+F2 tu¸slarına basıp, çıkan ekranda:
kwrite yazmaktır.
Yeni bir Gedit belgesi olu¸sturmak için iseALT+F2 tu¸slarına basıp:
gedit
komutunu veriyoruz.
Bo¸s Kwrite veya Gedit belgesi kar¸sımıza geldikten sonra ilk yapmamız gereken, ilk satıra:
27
#!/usr/bin/env python
yazmak olacaktır. Peki bu komut ne i¸se yarıyor?
Bu komut, biraz sonra yazaca˘gımız kodların birer Python kodu oldu˘gunu ve Python’ın da sistemde hangi konumda yer aldı˘gını gösteriyor. Böylece sistemimiz Python’ı nerede bulması gerekti˘gini anlıyor.
GNU/Linux sistemlerinde Python’ın çalı¸stırılabilir dosyası genellikle /usr/bin dizini altındadır.
Dolayısıyla yukarıdaki satırı aslında ¸söyle de yazabilirsiniz:
#!/usr/bin/python
Böylece sisteminiz Python’ı /usr/bin dizini altında arayacak ve yazdı˘gınız programı Python’la çalı¸stırması gerekti˘gini anlayacaktır. Ancak bazı GNU/Linux sistemlerinde Python’ın
çalı¸stırılabilir dosyası ba¸ska bir dizinin içinde de olabilir (Mesela /usr/local/bin). Bu durumda, çalı¸stırılabilir dosya /usr/bin altında bulunamayaca˘gı için, bazı ko¸sullarda sistem yazdı˘gınız programı çalı¸stıramayacaktır. Python’ın çalı¸stırılabilir dosyasının her sistemde aynı dizin altında bulunmama ihtimalinden ötürü yukarıdaki gibi sabit bir dizin adı vermek iyi bir fikir olmayabilir. Bu tür sistem farklılıklarına kar¸sı önlem olarak GNU/Linux sistemlerindekienv adlı bir betikten yararlanabiliriz. /usr/bin dizini altında bulundu˘gunu varsayabilece˘gimiz bu env beti˘gi Python’ın sistemde hangi dizin içinde oldu˘gunu bulmamızı sa˘glar. Böylece yazdı˘gımız bir programın, Python’ın /usr/bin dizini haricinde bir konuma kuruldu˘gu sistemlerde çalı¸stırılması konusunda endi¸se etmemize gerek kalmaz. Programımızın en ba¸sına ekledi˘gimiz#/usr/bin/env python satırı sayesinde Python sistemde nereye kurulmu¸s olursa olsun kolaylıkla tespit edilebilecektir.
Uzun lafın kısası,#!/usr/bin/python yazdı˘gımızda sisteme ¸su emri vermi¸s oluyoruz:
“Python’ı /usr/bin dizini içinde ara!“
#!/usr/bin/env python yazdı˘gımızda ise ¸su emri: “Python’ı nereye saklandıysa bul!“
Neyse... Biz daha fazla teknik ayrıntıya dalmadan yolumuza devam edelim.
Aslında metin içine kod yazmak, Python komut satırına kod yazmaktan çok farklı de˘gildir.
¸
Simdi a¸sa˘gıda verilen satırları Kwrite veya Gedit belgesinin içine ekleyelim:
#!/usr/bin/env python a = "elma"
b = "armut"
c = "muz"
print "bir", a, "bir", b, "bir de", c, "almak istiyorum"
Bunları yazıp bitirdikten sonra sıra geldi dosyamızı kaydetmeye. ¸Simdi dosyamızı deneme.py adıyla herhangi bir yere kaydediyoruz. Gelin biz masaüstüne kaydedelim dosyamızı. ¸Su anda masaüstünde deneme.py adında bir dosya görüyor olmamız lazım. ¸Simdi hemen bir konsol ekranı açıyoruz. (Ama Python komut satırını çalı¸stırmıyoruz.) ¸Su komutu vererek,
masaüstüne, yani dosyayı kaydetti˘gimiz yere geliyoruz:
cd Desktop
Tabii burada ben sizin ev dizininde oldu˘gunuzu varsaydım. Komut satırını ilk ba¸slattı˘gınızda içinde bulundu˘gunuz dizin ev dizininiz olacaktır (/home/kullanici_adi). Dolayısıyla yukarıda gösterdi˘gimizcd Desktop komutu sizi masaüstünün oldu˘gu dizine götürür. Tabii e˘ger siz komut satırını farklı bir dizin içinde açmı¸ssanız tek ba¸sına yukarıdaki komutu vermeniz sizi masaüstüne götürmez. Öyle bir durumda, ¸suna benzer bir komut vermeniz gerekir:
cd /home/kullanici_adi/Desktop
Not: Bazı Türkçe GNU/Linux sistemlerinde masaüstünü gösteren dizin “Desktop” yerine
“Masaüstü” adını da ta¸sıyabilmektedir. Öyle ise tabii ki verece˘giniz komutta “Desktop”
kelimesini “Masaüstü” kelimesiyle de˘gi¸stirmeniz gerekir.
E˘ger ba¸sarıyla masaüstüne gelmi¸sseniz, yazdı˘gınız programı çalı¸stırmak için ¸su komutu verip ENTER tu¸suna basın:
python deneme.py
E˘ger her ¸sey yolunda gitmi¸sse ¸su çıktıyı almamız lazım:
bir elma, bir armut, bir de muz almak istiyorum
GNOME kullanıcıları da yukarıda anlatılan i¸slemleri takip ederek ve Kwrite yerine Gedit adlı metin düzenleyiciyi kullanarak dosyayı kaydedip çalı¸stırabilir.
Gördü˘günüz gibi,python deneme.py komutuyla programlarımızı çalı¸stırabiliyoruz. Normal
¸
sartlar altında tercih edece˘gimiz program çalı¸stırma biçimi de bu olacaktır. Peki, ama acaba Python programlarını ba¸sapython komutu eklemeden çalı¸stırmanın bir yolu var mı? ˙I¸ste burada biraz önce bahsetti˘gimiz#!/usr/bin/env python satırının önemi ortaya çıkıyor.
Ba¸sapython komutu getirmeden programımızı çalı¸stırabilmek için öncelikle programımıza çalı¸stırma yetkisi vermemiz gerekiyor. Bunu ¸su komut yardımıyla yapıyoruz:
Öncelikle:
cd Desktop
komutuyla dosyayı kaydetti˘gimiz yer olan masaüstüne geliyoruz. Bunun ardından:
chmod a+x deneme.py
komutuyla da deneme.py adlı dosyaya çalı¸stırma yetkisi veriyoruz, yani dosyayı çalı¸stırılabilir (executable) bir dosya haline getiriyoruz.
Artık komut satırında ¸su komutu vererek programımızı çalı¸stırabiliriz:
./deneme.py
Peki, tüm bu i¸slemlerin#!/usr/bin/env python satırıyla ne ilgisi var?
E˘ger bu satırı metne yerle¸stirmezsek, sistem bu beti˘gi hangi programla çalı¸stırması
gerekti˘gini anlayamayaca˘gı için./deneme.py komutu çalı¸smayacaktır. python deneme.py komutunu verdi˘gimizde, beti˘gi Python programının çalı¸stıraca˘gı anla¸sılıyor. Ancak ba¸staki
“python” ifadesini kaldırdı˘gımızda, e˘ger beti˘gin ilk satırında#!/usr/bin/env python da yoksa, sistem bu betikle ne yapması gerekti˘gine karar veremez.
E˘ger bu satırı #!/usr/bin/python ¸seklinde yazarsanız ve e˘ger programınızın çalı¸stırıldı˘gı sistemde Python’ın çalı¸stırılabilir dosyası /usr/bin/ dizini altında de˘gilse ¸suna benzer bir hata çıktısı alırsınız:
bash: ./deneme.py: /usr/bin/python: bad interpreter: No such file or directory Böyle bir hata almamak için o satırı#!/usr/bin/env python ¸seklinde yazmaya özen gösteriyoruz. Böylece Python nereye kurulmu¸s olursa olsun sistemimiz Python’ı tespit edebiliyor.
Yukarıdaki i¸slemlerden sonra bu deneme.py dosyasının isminin sonundaki .py uzantısını kaldırıp,
./deneme
komutuyla da programımızı çalı¸stırabiliriz.
Ya biz programımızı sadece ismini yazarak çalı¸stırmak istersek ne yapmamız gerekiyor?
Bunu yapabilmek için programımızın PATH de˘gi¸skeni içinde yer alması, yani Türkçe ifade etmek gerekirse, programın YOL üstünde olması gerekir. Peki, bir programın YOL üstünde olması ne demek?
Bilindi˘gi gibi, bir programın veya dosyanın yolu, kabaca o programın veya dosyanın içinde yer aldı˘gı dizindir. Örne˘gin fstab dosyasının yolu /etc/fstab‘dır. Ba¸ska bir örnek vermek gerekirse, xorg.conf dosyasının yolu /etc/X11/xorg.conf ‘tur. Bu “yol” kelimesinin bir de daha özel bir anlamı bulunur. Bilgisayar dilinde, çalı¸stırılabilir dosyaların (.bin ve .sh dosyaları çalı¸stırılabilir dosyalardır) içinde yer aldı˘gı dizinlere de özel olarak YOL adı verilir ve bu anlamda
kullanıldı˘gında “yol” kelimesi genellikle büyük harfle yazılır.
˙I¸sletim sistemleri, bir programı ça˘gırdı˘gımızda, söz konusu programı çalı¸stırabilmek için bazı özel dizinlerin içine bakar. Çalı¸stırılabilir dosyalar e˘ger bu özel dizinler içinde iseler, i¸sletim sistemi bu dosyaları bulur ve çalı¸stırılmalarını sa˘glar. Böylece biz de bu programları do˘grudan isimleriyle ça˘gırabiliriz. ¸Simdi bu konuyu daha iyi anlayabilmek için birkaç deneme yapalım.
Hemen bir konsol ekranı açıp ¸su komutu veriyoruz:
echo $PATH
Bu komutun çıktısı ¸suna benzer bir ¸sey olacaktır:
/usr/local/sbin:/usr/local/bin:/usr/sbin:
/usr/bin:/sbin:/bin:/usr/games
Bu çıktı bize YOL de˘gi¸skeni (˙Ingilizce’de PATH variable) dedi˘gimiz ¸seyi gösteriyor. ˙I¸sletim sistemimiz, bir programı ça˘gırmak istedi˘gimizde öncelikle yukarıda adı verilen dizinlerin içini kontrol edecektir. E˘ger ça˘gırdı˘gımız programın çalı¸stırılabilir dosyası bu dizinlerden herhangi birinin içinde ise o programı ismiyle ça˘gırabiliyoruz.
Örne˘gin;
which gedit
komutunun çıktısına bir bakalım:
/usr/bin/gedit
Gördü˘günüz gibi Gedit programının YOL’u /usr/bin/gedit. Hemen yukarıdaecho $PATH
komutunun çıktısını kontrol ediyoruz ve görüyoruz ki /usr/bin/ dizini YOL de˘gi¸skenleri arasında var. Dolayısıyla, Gedit programı YOL üstündedir, diyoruz. Zaten Gedit programının YOL
üstünde olması sayesinde, konsolda sadecegedit komutunu vererek Gedit programını çalı¸stırabiliyoruz.
¸
Simdi e˘ger biz de yazdı˘gımız programı do˘grudan ismiyle ça˘gırabilmek istiyorsak programımızı echo $PATH çıktısında verilen dizinlerden birinin içine kopyalamamız gerekiyor. Mesela
programımızı /usr/bin içine kopyalayalım. Tabii ki bu dizin içine bir dosya kopyalayabilmek için rootyetkilerine sahip olmalısınız. ¸Su komut i¸sinizi görecektir:
sudo cp Desktop/deneme /usr/bin
¸
Simdi konsol ekranında:
deneme
yazınca programımızın çalı¸stı˘gını görmemiz lazım.
Program dosyamızı YOL üstünde bulunan dizinlerden birine eklemek yerine, dosyamızın içinde bulundu˘gu dizini YOL’a eklemek de mümkün. ¸Söyle ki:
PATH=$PATH:$HOME/Desktop
Bu ¸sekilde masaüstü dizinini YOL’a eklemi¸s olduk. ˙Isterseniz;
echo $PATH
komutuyla masaüstünüzün YOL üstünde görünüp görünmedi˘gini kontrol edebilirsiniz. Bu sayede artık masaüstünde bulunan çalı¸stırılabilir dosyalar da kendi adlarıyla ça˘grılabilecekler.
Ancak masaüstünü YOL’a ekledi˘ginizde, masaüstünüz hep YOL üstünde kalmayacak, mevcut konsol oturumu kapatılınca her ¸sey yine eski haline dönecektir. E˘ger herhangi bir dizini kalıcı olarak YOL’a eklemek isterseniz, .profile dosyanızda de˘gi¸siklik yapmanız gerekir. Mesela masaüstünü YOL’a eklemek için /home/kullanici_adi/.profile dosyanızın en sonuna ¸su satırı eklemelisiniz:
export PATH=$PATH:$HOME/Desktop
Yoruldunuz mu? Yoksa sıkıldınız mı? Bence ne yorulun, ne de sıkılın... Çünkü bu bölümde verdi˘gimiz bilgiler, Python’la bir program yazıp bu programı, kullandı˘gınız da˘gıtımın KDE veya GNOME menüsüne eklemek istedi˘ginizde i¸sinize çok yarayacaktır. E˘ger GNU/Linux altında herhangi bir programlama faaliyetinde bulunmak istiyorsanız yukarıda verdi˘gimiz bilgileri özümsemeniz gerekir.
Gelelim Windows kullanıcılarına...