Cift tiklayarak calisan python programi

Arkadaslar windows ve linuxda asagi yukari calisma sekli ayni linuxda yazidigim .py uzantili python dosyasini ancak terminaldan python dosya.py yazarak calisdira biliriyorum acaba normal programlar gibi cift tiklayarak calistiramazmiyiz?

WindowsÔÇÖta ÔÇśpyÔÇÖ dosyalar─▒n─▒ Python program─▒ ile ili┼čkilendirerek ├žift t─▒klama ile a├žma yap─▒labiliyor. LinuxÔÇÖte de b├Âyle bir ┼čey m├╝mk├╝nd├╝ diye hat─▒rl─▒yorum. Ancak kulland─▒─č─▒n─▒z da─č─▒t─▒m ve masa├╝st├╝ ortam─▒na g├Âre de─či┼čebilir bunun nas─▒l yap─▒labilece─či.

1 Be─čeni

Debian Gnome kullaniyorum

Merhaba.

┼×u iki sat─▒rdan birini dosyan─▒z─▒n ilk sat─▒r─▒na yaz─▒n:

#!/usr/bin/env python
#!/usr/bin/env python3

Sonra da dosyaya ├žal─▒┼čt─▒rma izni verin:

$ sudo chmod u+x dosyan─▒z.py

Bu ┼čekilde ├žift t─▒klaman─▒n ├žal─▒┼čmas─▒ gerekiyor. Bu y├Ântem ayr─▒ca di─čer da─č─▒t─▒mlar i├žin de ├žal─▒┼čmal─▒.

─░yi ├žal─▒┼čmalar.

windows i├žin kulland─▒m :slight_smile:

ben cx_Freeze kullanarak hallettim .├ľncelikle python projeni tamamla ve bir isim ver ben ÔÇťdeneme1.pyÔÇŁ diyece─čim ard─▒ndan ÔÇťsetup.pyÔÇŁ dosyas─▒ olu┼čtur.Bu arada bunlar─▒ ayn─▒ klas├Âre koy d├╝zenli olsun ├ž├╝nk├╝ build dosyas─▒ kuraca─č─▒z i├žine , nedir bu dosya dersen kabaca program─▒n─▒ ├žal─▒┼čt─▒racak mod├╝llerin bar─▒nd─▒─č─▒ ve render edildi─či dosya diyebiliriz.setup dosyas─▒n─▒n i├žine ┼ču kodlar─▒ gir.

from cx_Freeze import setup, Executable
import sys
import os
import tkinter

base = None

if sys.platform == 'win64':
    base = "Win64GUI"


executables = [Executable("onurip.py", base=base)]

packages = ["tkinter"]
    options = {
        'build_exe': {
            'includes': ["os", "tkinter"],
            'include_files': [r"C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\DLLs\tcl86t.dll",
                      r"C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\DLLs\tk86t.dll"]
},

}


os.environ['TCL_LIBRARY'] = r'C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\tcl\tk8.6'
setup(
    name="Poraksis",
    version="1.0",
    description="Test",
    options=options,
    executables=executables
)

Bu dosyay─▒ olu┼čtururken python dosyan─▒n hangi dizinde oldu─čuna dikkat et sonra benim gibi yar─▒m saatin heba olmas─▒n.

┼×imdi komut istemcini a├ž >
dosyalar─▒n oldu─ču dizine gel>
"python setup.py build" yaz enterÔÇÖa bas>

DO─×RU yapt─▒ysan build dosyas─▒n─▒n i├žinde exe olu┼čmu┼č olmal─▒ art─▒k ba┼čka bilgisayarda kullanabilirsin.

D─░PNOT: tcl ve dlls klas├Ârlerindeki de─či┼čikli─če dikkat edin bunlar gui aray├╝z├╝n├╝n ├žal─▒┼čmas─▒ i├žin ┼čartt─▒r.

Eme─činize sa─čl─▒k. Ben sizinkinden bana g├Âre daha kolay bir y├Ântem ├Ânereyim .exe dosya olu┼čturmak i├žin.

sudo pip install pyinstaller ya da (pip3)

kurulur.

Ard─▒ndan ├ževirilecek kaynak dosyan─▒n bulundu─ču dizine gelinerek terminal a├ž─▒l─▒r.

pyinstaller -F ornek.py

komutu verilir. Burada -F parametresi gerekli b├╝t├╝n libleri ├╝retilecek .exe dosyas─▒na katar. Dolay─▒s─▒yla program─▒n─▒z ba─č─▒ms─▒z ├žal─▒┼č─▒r.

├ťretilen dosya olu┼čan dist klas├Âr├╝n├╝n i├žinden al─▒n─▒r.

1 Be─čeni

$ sudo chmod u+x dosyan─▒z.py

olarak ayarlad─▒m. ├žift t─▒klama ile a├ž─▒l─▒yor fakat ├Ânce execute, terminal, vs se├ženekler ├ž─▒k─▒yor. bunu nas─▒l ├Ânleyebiliriz?

@Engin_Kanat

Mesela diyelim HOME dizininde test.py isminde bir dosyan─▒z var. Yapman─▒z gereken ┼čey ┼ču:

  1. Dosyaya sa─č t─▒klayarak veya dosya se├žili haldeyken CTRL + i tu┼člar─▒na basarak ├ľzellikler se├žene─čini se├žin. Daha sonra Eri┼čim Haklar─▒ isminde bir sekme g├Ârmeniz laz─▒m. Bu sekmedeki ├çal─▒┼čt─▒rma se├žene─čini aktif hale getirin.
    2019-12-26 17-03-04 ekran g├Âr├╝nt├╝s├╝

  2. ─░smi test.desktop olan bir dosya olu┼čturun.

  3. Dosyan─▒n i├žine a┼ča─č─▒dakileri yaz─▒n.

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=test
Icon=
Exec=./test.py
  1. Dosyas─▒ kaydedin ve ├ž─▒k─▒n.
  2. Olu┼čturdu─čunuz bu dosyaya sa─č t─▒klayarak veya dosya se├žili haldeyken CTRL + i tu┼člar─▒na basarak ├ľzellikler men├╝s├╝n├╝ a├ž─▒n. Eri┼čim Haklar─▒ sekmesine gelin ve ├çal─▒┼čt─▒r se├žene─čini aktif hale getirin.
    2019-12-26 17-06-24 ekran g├Âr├╝nt├╝s├╝
  3. Daha sonra olu┼čturdu─čunuz bu test.desktop dosyas─▒na ├žift t─▒klay─▒n. ┼×├Âyle bir uyar─▒ alman─▒z gerekiyor.
    2019-12-26 17-07-28 ekran g├Âr├╝nt├╝s├╝
  4. G├╝ven ve Ba┼člat se├žene─čine t─▒klay─▒n. Bundan sonra art─▒k test.py script dosyas─▒n─▒ ├žal─▒┼čt─▒rmak i├žin ismi test olarak de─či┼čen test.desktop dosyas─▒na ├žift t─▒klayabilirsiniz.

Exec={test.pyÔÇÖnin ilk satirindaki #!interpreter} ./test.py dersek 1. adima gerek yok.

ÔÇő5. adima gerek yok.

Evet, @aibÔÇÖin dedi─čin gibi 1. ve 5. ad─▒mlara gerek yok.

  1. py uzant─▒l─▒ dosyan─▒n 1. sat─▒r─▒nda shebang ifadesi yer als─▒n.
    ├ľrnek: #!/usr/bin/env python3

  2. Bir tane desktop dosyas─▒ olu┼čturun, ilgili yerleri (name ve exec sat─▒rlar─▒n─▒) de─či┼čtirerek dosyan─▒n i├žine a┼ča─č─▒dakileri yaz─▒n:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=test
Icon=
Exec=./test.py
  1. ─░lgili yerleri de─či┼čtirerek konsola a┼ča─č─▒daki komutu yaz─▒n.
    chmod +x test.py test.desktop

  2. Sonra da olu┼čturdu─čunuz desktop uzant─▒l─▒ dosyaya ├žift t─▒klay─▒n.

Yok, dedigim tam olarak buna gerek yok.

Dosyayi ./test.py yerine /usr/bin/env python3 ./test.py seklinde calistirdigin surece dosyayi executable yapmana gerek yok: Basina #! koymaya da, executable bitÔÇÖlerini set etmeye de (+x) gerek yok.

Exec sat─▒r─▒ndaki ./test.py yerine /usr/bin/env python3 ./test.py yazd─▒m, a┼ča─č─▒daki uyar─▒y─▒ al─▒yorum ve test.desktop dosyas─▒ (bu ├Ârnekte ismi d.desktop) a├ž─▒lm─▒yor.
2019-12-27 13-54-05 ekran g├Âr├╝nt├╝s├╝

XDG standardinda yok; KDE, LXDE ve XFCEÔÇÖde calisiyor. Gnome mu Unity mi o?

Neyse, bazi versiyonlari icin gerekiyormus hakkaten o a+x. Bazi versiyonlari icin ise:

Bu arada /usr/bin/python3'u dogrudan calistirmak da mantikli olabilir. (env hackÔÇÖine oldum olasi uyuz olmusumdur)

Bu arada py dosyasini executable yapmaya hala ihtiyac yok. (Degil mi?)

Shell script gibi surekli calistirilmayacaksa (https://github.com/aib/dotfiles/blob/master/bin/git-drop-commits.py) interpreterÔÇÖini explicit bir sekilde yazmanin daha dogru olduguna inaniyorum artik ("python3 hede.py"):

  • kolay calistirmaya gerek yok; shellÔÇÖde ust ok veya IDEÔÇÖde F5 var zaten
  • env hackÔÇÖine gerek kalmiyor
  • interpreter opsiyonu verebiliyoruz (terminal disinda calistirirken -u gerekiyor)

Gnome mi unity mi emin de─čilim. gnome-shell, gnome-session-b ├žal─▒┼č─▒yor ┼ču anda.
Tab CompletionÔÇÖ─▒ kullanarak unity ile alakal─▒ sadece unity-scope-loader program─▒n─▒ buluyorum. Ama gnome ile alakal─▒ ├žok fazla program var.

gnome-calculator              gnome-keyring-daemon          gnome-session-inhibit         gnome-terminal.real
gnome-calendar                gnome-language-selector       gnome-session-properties      gnome-terminal.wrapper
gnome-characters              gnome-logs                    gnome-session-quit            gnome-text-editor
gnome-control-center          gnome-mahjongg                gnome-shell                   gnome-thumbnail-font
gnome-disk-image-mounter      gnome-menus-blacklist         gnome-shell-extension-prefs   gnome-todo
gnome-disks                   gnome-mines                   gnome-shell-extension-tool    gnome-tweaks
gnome-font-viewer             gnome-power-statistics        gnome-shell-perf-tool         gnome-www-browser
gnome-help                    gnome-screenshot              gnome-sudoku                  
gnome-keyring                 gnome-session                 gnome-system-monitor          
gnome-keyring-3               gnome-session-custom-session  gnome-terminal    

Herhalde gnome ├Ân-tan─▒ml─▒. (?)
Ama chmod +x hede.py komutunu kullanmak gerekiyor ger├žekten. ├ç├╝nk├╝ di─čer t├╝rl├╝ ├žal─▒┼čm─▒yor. G├╝venilir uygulama ba┼člat─▒c─▒ uyar─▒s─▒na bir kereli─čine evet dedikten sonra, bir daha kar┼č─▒m─▒za b├Âyle bir soru gelmiyor.

Yorumlay─▒c─▒ k─▒sm─▒na bazen #!/usr/bin/python3, bazen #!/usr/bin/env python3, bazen #!/usr/bin/env python3.8 yaz─▒yorum. Yani de─či┼čtiriyorum arada.

Aynen ├Âyle, bir python beti─čini executable yapmaya ger├žekten ihtiya├ž yok. Hi├ž Python bilgisi olmayan bir arkada┼ča PythonÔÇÖ─▒ kur, beti─či de filanca yolla ├žal─▒┼čt─▒r diyebiliyorsun ve kar┼č─▒ taraf hi├ž bir sorun ya┼čamadan program─▒ kullanabiliyor. Hatta Ubuntu kullanan birisine PythonÔÇÖ─▒ kur bile deme ihtiyac─▒ olu┼čmuyor. Scripti yolluyorsun o ├žal─▒┼čt─▒r─▒yor. Beti─čin i├žine gerekli mod├╝llerin kurulumunun talimat─▒n─▒ da veriyorsun. Kullan─▒c─▒n─▒n tek yapmas─▒ gereken python3 hede.py yazmak oluyor. Onu da yazs─▒n bir zahmet. :innocent:

├ľzetle benim i├žin program─▒ ./hede.py ┼čeklinde ├žal─▒┼čt─▒rmak, ├žift t─▒klayarak ├žal─▒┼čt─▒rmaktan daha kolay ve kullan─▒┼čl─▒. Tabi ba┼čkas─▒na farkl─▒ bir y├Ântem daha kullan─▒┼čl─▒ gelebilir, oras─▒n─▒ bilemem.