[Çözüldü] Python, her şey olması gerektiği gibi ancak...

Başlatan burk, 09 Ocak 2011 - 23:30:24

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

burk

Arkdaşlar İstihza adresinden ve sitenin sahibinin kitabından Python'u öğrenmeye çalışıyorum ve daha ikinci derste tıkandım; sanırım sistem hatası yaşıyorum, anlatımda deneme.py adlı bir gedit dosyası oluşturun diyor, oluşturuyorum ve programın başına
"#!/usr/bin/env python" eklememe rağmen "chmod a+x deneme.py" komutundan sonra "./deneme" komutu ile açmaya çalıştığımda şu uyarıyı alıyorum:
"bash: ./deneme: No such file or directory"

Bunun yanısıra dosyayı YOL'a eklemeye çalıştığımda;
"sudo cp Masaüstü/deneme /usr/bin"
şu hatayı alıyorum;
"cp: 'Masaüstü/deneme' durumlanamadı: No such file or directory"

İstihza sitesine de yazdım ancak cevap gelmiyor, yardımcı olursanız çok sevinirim.

doganaydin


utdmr

Masaüstü/deneme yerine Masaüstü/deneme.py şeklinde kullanacaksınız, zira söylediğinize göre dosyanın adı "deneme" değil, "deneme.py".
./deneme.pysudo cp Masaüstü/deneme.py /usr/bin şeklinde.

Bu arada, dosyayı /usr/bin'e kopyalamak yerine, dosyanın bulunduğu klasörü PATH'a eklemeyi düşünebilirsiniz, değiştirmek daha güzel olur.
export PATH=$PATH:/home/torunaga/projelerim şeklinde.
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

burk

@utdmr

Evet dosyanın adı o ancak anlatımda tam da dosyayı bir program gibi açmaktan bahsediyor;
Alıntı YapBöyle bir hata almamak için o satırı #!/usr/bin/env python şeklinde yazmaya özen gösteriyoruz. Böylece Python nereye kurulmuş olursa olsun sistemimiz Python'ı tespit edebiliyor.

Yukarıdaki işlemlerden sonra bu deneme.py dosyasının isminin sonundaki .py uzantısını kaldırıp,
./deneme

komutuyla da programımızı çalıştırabiliriz.
Yani dersin konusu bu ancak denileni yaptığım halde olmuyor.

Ayrıca deneme.py şeklindeki komutta da aynı hatayı alıyorum, üstelik uzantısını yazmadan ilk mesajımdaki haliyle komutu girdiğimde /usr/bin klasöründe dosyayı görüyorum yani o hatayı alsam bile dosya kopyalanmış oluyor. ::)

utdmr

Alıntı Yap[utdmr@utdmr-arch runner]$ ls
a.out  main.py  main.py~
[utdmr@utdmr-arch runner]$ ./main
bash: ./main: No such file or directory
[utdmr@utdmr-arch runner]$ ./main.py
#program çalıştı
"./deneme" bende çalışmıyor, zaten "./"ın tam mantığını bilmiyorum, ama eminim ki cp komutu uzantısız işlemez. Zaten düşününce, aynı klasörde "deneme" ve "deneme.py" adlı iki dosya olabilir, cp'nin bunları ayırt edebilmesi için dosyanın adını ve uzantısını doğrudan vermemiz gerekir. Peki:
cd
ls Masaüstü
komutlarının çıktısında Masaüstü altında deneme.py görünüyor mu?
Kişisel Blogum: Çoğunlukla Zararsız - cogunluklazararsiz.org
--
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -and a lot of courage- to move in the opposite direction.

burk

Evet dostum hatta;
Alıntı Yapdeneme.py           
deneme.py~
ikinci bir dosyası bile var. Dosyanın /usr/bin dosyasına .py uzantısı olmadan o şekilde atıldığına eminim;
[IMG]http://i51.tinypic.com/124hvn8.png[/img]
Yani hani hata verse de atıyor o konuma ancak bir program gibi, olması gerektiği gibi uçbirimi deneme yazdığımda çalışmıyor.
Bak bu da dersin anlatıldığı sayfa, dediğim kısım ortalarda bi yerde
http://www.istihza.com/py2/python-programlarini-kaydetmek.html

eribol

İyi de deneme dosyası yok ki. ./deneme şeklinde çalıştırabilmek için dosyanın adını da deneme olarak kaydetmek gerekiyor ve dosyanın bulunduğu dizinde ./deneme komutunu işletmek gerekiyor. deneme.pyçıktısı nedir?

burk

Alıntı yapılan: eribol - 10 Ocak 2011 - 00:52:02
İyi de deneme dosyası yok ki. ./deneme şeklinde çalıştırabilmek için dosyanın adını da deneme olarak kaydetmek gerekiyor ve dosyanın bulunduğu dizinde ./deneme komutunu işletmek gerekiyor. deneme.pyçıktısı nedir?

O dosya olmaz olur mu ben anlatıldığı şekilde masaüstüne bir deneme.py dosyasını gedit programı ile oluşturdum içinde tam olarak da;
Alıntı Yap#!/usr/bin/env python

a = "elma"
b = "armut"
c = "muz"
print "bir",a,"bir,",b,"bir de",c,"almak istiyorum."
bunlar yazılı, ben bunu uçbirimde ./deneme.py yazıdğımda görüyorum, dersin gerikalanında bunu YOL'a ekleyip bir program gibi çalıştırma yöntemi anlatılıyor, yani uçbirime deneme yazdığında çalışşsın istiyor, ben de yukarda gösterdiğim şekilde /usr/bin klasörüne deneme.py dosyamı atıyorum ancak uçbirime deneme yazdığımda bahsettiğim hatayı alıyorum, olay bu.

eribol

Tamam ben de onu diyorum. deneme.pykomutunu verdiğinizde çalışır çünkü ismi deneme.py Size söylenen yöntemde ayrıca isminin de deneme şeklinde değiştirilmesi gerektiği söylenmiyor mu?

Alıntı Yapsudo nano /usr/bin/deneme
[sudo] password for meribol:
meribol@meribol:~/Belgeler$ sudo chmod +x /usr/bin/deneme
meribol@meribol:~/Belgeler$ deneme
bir elma bir, armut bir de muz almak istiyorum.
meribol@meribol:~/Belgeler$

burk

Alıntı YapŞimdi eğer biz de yazdığımız programı doğrudan ismiyle çağı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 root yetkilerine sahip olmalısınız. Şu komut işinizi görecektir:
sudo cp Desktop/deneme /usr/bin

Şimdi konsol ekranında:
deneme

yazınca programımızın çalıştığını görmemiz lazım.
Dersin ilgili bölümü bu şekilde verilmiş, evet, deneme.py yazdığımda çalışıyor ancak yukarıda dosyanın adını değiştirerek çalıştırma gibi bir anlatım yok, ayrıca bu adımdan önce chmod a+x deneme.py komutu sizin gösterdiğiniz şekilde değil yazdığım şekilde verildi, yani sanırım siz chmod komutu ile adını değiştiriyorsunuz, bana ise çalıştırılabilir olması gösteriliyor.
Yani toparlayacak olursam;
Anlatımda dosya adı değişimi yok, anlatımdaki yolla ilk mesajımdaki hataları alıyorum, ancak sizin son mesajınızdaki yöntemle İstihza'nın istediklerini yapabiliyorum.


eribol

Biraz daha dikkat edilirse onların da aynı şeyi söylediği anlaşılır.
Alıntı Yapprogramı doğrudan ismiyle çağırabilmek istiyorsak

burk

Peki, teşekkür ederim ilginiz için, konu çözülmüştür.

eribol

Bir not düşeyim, orada dosyanın adı doğrudan deneme olarak ele alınmış ve öyle anlatılmış. Ayrıca chmod +x dosyaya çalıştırma hakkı vermek için kullanılan bir komut.