Ruby ve Python konsol komutu ekleme

Öncelikle herkese iyi forumlar.
Sorum python ve ruby’de konsola ve terminal ekranına pyinstaller ve ocra gibi nasıl komut ekleyebileceğim.
Şimdiden teşekkürler.

Genel çözüm yürütülebilir dosyanın PATH’da bulunması.

Windows’da Python için çalışmasını istediğiniz uygulamayı Python\PythonX.Y\Scripts klasörüne koyabilirsiniz. Bir modül oluşturuyorsanız dökümanlara başvurun.

Peki Ruby için nasıl eklerim ?

Aşağıdaki kodları inceleyin. path değişkenine ruby'nin çalıştırılabilir dosyalarının bulunduğu dizini yazın.

import winreg

sub_key = r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
key = winreg.OpenKey(
    winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE),
    sub_key,
    0,
    winreg.KEY_ALL_ACCESS
)
value = winreg.QueryValueEx(key, "Path")
path = "ortam değişkenlerine eklenecek yol"
new_value = value[0] + ";" + path + ";"
winreg.SetValueEx(key, "Path", 0, winreg.REG_EXPAND_SZ, new_value)

Hocam peki bunu yazdığım gibi parametre verebilirmiyim ?
Mesele şu komutu nasıl çalıştırırım.
Wormerking --merhabade

Önce ruby’nin yürütülebilir dosyalarını Ortam Değişkenlerine eklemeniz lazım. Yukarıdaki kodlar bunun için. Sonra da ruby'nin yürütülebilir dosyalarını komut satırından çalıştırabilirsiniz.

Hocam pip install winreg komutunu çalıştırdığım zaman şu hatayı alıyorum.

Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement winreg (from versions: none)
ERROR: No matching distribution found for winreg

winreg, Windows işletim sistemine özel bir standart kütüphane.

Hocam Linux için komutu nasıl hazırlıyacam peki ?

ruby, Linux’e nasıl kurulur diye aratırsanız cevabını bulursunuz bence.

How to install ruby on linux

Yükledikten sonra yüksek ihtimalle ruby'nin terminalden çalıştırılabilir bir dosyası /usr/bin klasörüne yerleştirilir. Yani Linux için ekstradan bir şey yapmak zorunda kalmazsınız diye tahmin ediyorum.

1 Beğeni

Hocam şu kodu bir ruby dosyasına yazdım:

#!/usr/bin/env ruby
puts "hello world"

ve:
chmod +x ruby.rb

şeklinde dönüştürdüm ve şu şekilde çalıştırabiliyorum:
./ruby.rb

Sadece eleman girmeyi anlamadım.

Eleman girme derken neyi kastettiniz?

pyinstaller'deki gibi --onefile demek istedim.

ocra yazınca bir şey olmuyor mu?

Default ayarlarda kodu exeye çeviriyor.
Ama farklı komutlarla rails uygulaması dönüştürebiliyoruz.

Bu bahsettiğiniz şeylerin aşağıdaki cümle ile olan ilgisini anlayamadım.

Ortam değişkenleri ile ilgili olan sorununuz çözüldü mü?

Linux için anlamadım.

Sadece merak ettiğim normal bir dosyayı çevirirken defult ayarları kullanması,veya girilirse --onefile,--noconsole gibi komutların işe yaraması.

Örnek olarak:
Normal dosyayı böyle çevirmesini:WormerKing ruby.rb
Rails klasörünü böyle çevirmesini istiyorum:WormerKing --railsapp Rails(klasör)

Neyi anlamadığınızı anlamadım ben de. Aşağıda alıntıladığım mesajınıza göre zaten ruby’yi her yerden kullanabiliyorsunuz.

Anlamaya çalışıyorum. Bir python scriptini komut satırından parametre yazarak çalıştırmak istediğimizde sys.argv kullanıyoruz.

Örnek:

#!/usr/bin/python3.8
# -*- coding: utf-8 -*-

if __name__ == "__main__":
	import sys
	if len(sys.argv) > 2 and sys.argv[1] == "--print":
		print(*sys.argv[2:])

Bu dosyanın adının test.py olduğunu varsayalım. Dosyayı parametre ile çalıştırmak için terminale şöyle bir komut yazıyoruz:

./test.py --print Hello World!

test.py'yi çalıştırdığımızda ekrana Hello World! yazısı yazdırılır.

Argümanlarla çalışmak için ayrıca argparse kütüphanesine de ihtiyaç duyabilirsiniz. Bu kütüphane kullanıcılara hangi argümanın ne iş yaptığı ile alakalı bilgiler sunuyor.

Tabi bu söylediklerim Python için geçerli. Ruby’nin komut satırı argümanlarıya çalışabilmesi hangi kütüphanenin kullanılması gerektiğini bilmiyorum.

1 Beğeni

@dildeolupbiten teşekkür ederim şimdi aanladım ve ruby için kodunu yazdım.

#!/usr/bin/env ruby

if ARGV.size >= 2 && ARGV.first == "--print"
	puts "Merhaba #{ARGV[1..].inspect}"
end

Şimdi sadece anlamam gereken ruby yorumlayıcısını nasıl exe dosyasına dahil edeceğim.

aga onları sen verilen sysargs dan parse edeceksin
bunu işletim sistemi yapmıyor

1 Beğeni