• Sonuç bulunamadı

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