Ana içeriğe atla

IPython mı Jupyter mı?

IPython ve Jupyter’ın evrimi ve aralarındaki bazı temel farklara dair bir tartışma.
Güncel 2 Eki 2026  · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Bu yazıya katkılarından dolayı Brian Granger, Fernando Pérez ve Robert Kern’e çok teşekkürler!

Öğrenenler kadar ileri düzey veri bilimciler için de Jupyter Notebook, en popüler veri bilimi araçlarından biridir: etkileşimli ortam sadece öğretmek ve öğrenmek, çalışmalarınızı akranlarınızla paylaşmak için ideal olmakla kalmaz, aynı zamanda tekrarlanabilir araştırmayı da mümkün kılar. Ancak bu defteri nasıl kullanacağınızı keşfederken, sık sık IPython’a rastlayacaksınız.

İkisi bazı durumlarda eşanlamlı gibi görünür ve konuya derinlemesine girmek istediğinizde bunun oldukça kafa karıştırıcı olduğunu kabul edeceksiniz: magics (sihirler) Jupyter’ın mı yoksa IPython’ın mı parçası? Not defterlerini kaydetmek ve yüklemek IPython’ın mı yoksa Jupyter’ın mı özelliği?

Muhtemelen bu soruları uzatıp gidebilirsiniz.

Bugünkü blog yazısı, ikisinin kökenlerinden başlayarak nasıl ilişkilendiklerini açıklamakla kalmayıp, sadece birine ya da diğerine ait olan bazı özellikleri de kapsayarak, aralarındaki temel farkları daha açık bir şekilde göstermek amacıyla kaleme alındı; böylece ikisi arasında ayrım yapmanız daha kolay olacak!

İpuçları, en iyi uygulamalar, örnekler ve çok daha fazlası için DataCamp’in Jupyter Notebook’a Kapsamlı Kılavuz yazısını da okumayı düşünün.

IPython / Jupyter’ın Kökenleri

Jupyter Notebook’un ne olduğunu ve IPython’dan nasıl farklılaştığını tam olarak anlamak için, önce bu ikisinin hesaplamalı not defterlerinin tarihine ve geleceğine nasıl oturduğunu biraz okumak ilginç olabilir.

Hesaplamalı Not Defterlerinin Başlangıcı: MATLAB, Mathematica & Maple

1980’lerin ortasında, The MathWorks tarafından, Jack Little, Steve Bangert ve Cleve Moler’in kuruculuğunda MATLAB yayımlandı.

Şimdi 1980’lerin sonuna, tam olarak 1987’ye gidelim. Theodore Gray, daha sonra Mathematica not defteri ön yüzü olacak şey üzerinde çalışmaya başladı ve bir yıl sonra kamuya sunuldu. GUI, biçimlendirilmiş program kodu, biçimlendirilmiş metin ve dizgi matematik, grafikler, GUI bileşenleri, tablolar ve sesler gibi bir dizi özelliği içeren not defteri belgelerinin etkileşimli olarak oluşturulmasına ve düzenlenmesine olanak sağlıyordu. Gerçek zamanlı çok dilli yazım denetimi gibi standart kelime işlem yetenekleri de mevcuttu. Belgeleri sunumlar için slayt gösterisi ortamında çıktı olarak alabiliyordunuz.

Bu not defterlerinin nasıl yapılandığına baktığınızda, belgelerin taslağını çıkarmaya ve bölümlemeye olanak tanıyan bir hücre hiyerarşisine dayandıklarını hemen fark edersiniz; bunu bugün Jupyter not defterlerinde de görürsünüz.

Yine 1980’lerin sonunda, 1989’da, Maple ilk not defteri tarzı GUI’sini tanıttı. Macintosh için 4.3 sürümüyle birlikte sunuldu. X11 ve Windows için yeni arayüz sürümleri 1990’da geldi. Bu erken dönem not defterleri, daha sonra “veri bilimi not defterleri” olarak adlandırılacak olan şeylerin geliştirilmesi için başkalarına ilham verdi ve temel attı.

Veri Bilimi Not Defterlerinin Yükselişi

Maple ve Mathematica not defterlerinden sonra birçok hesaplamalı not defteri ortaya çıktı. Ancak bu bölüm, veri bilimi not defterlerinin yükselişine katkıda bulunan not defterlerine odaklanacaktır. Bunlardan bazılarının hâlâ hevesli ve daha deneyimli veri bilimciler arasında çok popüler olduğunu göreceksiniz.

Sage Notebook

Tarayıcı tabanlı bir sistem olarak Sage not defteri ilk kez 2000’lerin ortasında yayımlandı ve ardından 2007’de, kullanıcı hesaplarına sahip, daha güçlü ve belgeleri herkese açık yapmaya imkân veren yeni bir sürüm geldi. Sage not defterinin düzeni Google not defterlerinin düzenine dayandığı için kullanıcı arayüzü Google Docs’a benziyordu.

Sage not defterlerinin geliştiricileri, Mathematica not defterlerinin ve Maple çalışma sayfalarının sıkı kullanıcıları olduklarını doğruladılar. Sage not defterlerinin geliştirilmesini düşünürken önemli olan diğer itici güçler şunlardı: birincisi, geliştiriciler IPython ekibiyle yakın temas halindeydi; ayrıca Sage’in terminal tabanlı sürümü IPython’ı kullanıyordu. İkincisi, iki öğrencinin IPython için bir GUI sağlamaya yönelik “başarısız bir girişimi” vardı ve üçüncüsü, kullanıcıların her işlemde tüm sayfayı yenilemesini gerektirmeyen “AJAX” (Asynchronous JavaScript And XML’in sözde kısaltması) web uygulamalarının yükselişiydi.

Bu örneğin, bir web sitesinde bir form doldurduğunuzda geçerli olduğunu düşünün: AJAX olmadan, gönder düğmesine bastığınızda, sunucudan gelen yeni bilgilerle yeni bir sayfaya yönlendirilirsiniz. AJAX ile JavaScript, isteği sunucuya yapar, yanıtı alır ve ekranı günceller. Sayfayı yenilemenize gerek yoktur ve yönlendirilmezsiniz.

Bildik olduğunuz diğer AJAX uygulamaları örneğin Gmail, Google Maps, Facebook, Twitter,… Gördüğünüz gibi neredeyse her şey AJAX.

IPython ve Jupyter Notebook

2001’in sonlarında, Guido van Rossum’un Hollanda’daki Ulusal Matematik ve Bilgisayar Bilimleri Araştırma Enstitüsü’nde Python üzerinde çalışmaya başlamasından yaklaşık yirmi yıl sonra, Fernando Pérez IPython’ı geliştirmeye başladı. Proje, Sage not defteri ve onu takip eden birçok proje gibi, Mathematica not defterleri ve Maple çalışma sayfalarından büyük ölçüde etkilendi.

2005’te, çapraz platform uygulamalar için grafiksel kullanıcı arayüzleri (GUI) oluşturmaya yönelik bir bileşen araç takımı ve araçlar kütüphanesi olan Wx ile bir not defteri sistemi kurmaya yönelik ilk girişim yapıldı. İki Google Summer of Code öğrencisi, Robert Kern ve Fernando Pérez’in yönlendirmesiyle prototip üzerinde çalıştı. Ardından, Robert bu konu üzerinde biraz daha çalıştı. Bu, bir not defteri sistemi prototipinden ziyade, IPython çekirdek kodunun, IPython kabuğuna bir wxPython GUI ön yüzü yazmayı kolaylaştırma amacıyla temizlenmesiydi. Bu temizlikler, temiz bir not defteri sistemini mümkün kılmaya yardımcı oldu ve bunların bazıları, nihayet başarıya ulaşan not defteri çalışması başlatıldığında parça parça IPython’a eklendi.

IPython için ikinci prototip, 2006 yazında Min Ragan-Kelley tarafından geliştirildi ve Brian Granger tarafından danışmanlık yapıldı. Web tabanlıydı ve bir SQL veritabanı arka ucuna sahipti, ancak dönemin web teknolojileriyle uygulaması çok karmaşık hale geldiği için çalışma durduruldu.

IPython not defterinin üçüncü prototipi Ekim 2010’da, birkaç günlük bir hack ile üçüncü bir tarafça yapıldı. Sonunda, 2011 İlkbahar-Yaz döneminde, Brian Granger 2010’da yaptığı çalışmaya dayanarak web not defteri prototipi üzerinde tam zamanlı çalışıyordu; burada Fernando Pérez ile birlikte IPython çekirdek mimarisini ve mesaj belirtimini ve Min Ragan Kelley ile birlikte PyZMQ’yu oluşturmuştu.

PyZMQ, ZeroMQ için Python bağlamaları sağlayan bir kütüphanedir; Bu kütüphane, IPython’ın paralel hesaplama özellikleri, qt konsolu ve not defteri için gerekliydi.

PyZMQ ve websockets, not defterini mümkün kılan başlıca teknolojilerdi. Aynı yılın sonbaharına gelindiğinde, diğer katkıcılar (Matthias Bussonnier, Min ve Fernando gibi) da katkıda bulunuyordu. 21 Aralık 2011’e gelindiğinde, IPython Notebook’un ilk sürümü (0.12) yayımlandı.

Sonraki yıllarda ekip, 23 Mart 2013’te Fernando Pérez’e verilen Advancement of Free Software ve Jolt Productivity Award gibi ödüller aldı ve Alfred P. Sloan Foundations gibi kurumlardan fon sağladı.

Son olarak, 2014’te Jupyter Projesi, IPython’dan ayrılan bir proje olarak başladı.

Ayrılıktan önceki son IPython sürümü, tek bir depoda etkileşimli bir kabuk, not defteri sunucusu, Qt konsolu vb. içeriyordu. Proje büyüktü ve bileşenler giderek aynı projeye ait olan, ancak birbirinden ayrışan alt projeler haline geliyordu.

Ancak, Jupyter Projesi’nin başlatılmasının tek nedeni projenin büyüklüğü değildi: 2011’den 2014’e kadar, IPython not defteri diğer programlama dilleriyle de çalışmaya başladı. İlk olarak Julia geldi, ardından R. Not defterinin sadece Python’a dayalı olduğunu ima eden IPython not defterinin Julia ve R gibi diğer programlama dillerinin çekirdekleriyle de çalışması insanları şaşırtıyordu.

Eğer başka programlama dilleri de işin içindeyse neden adı “IPython”dı?

“Jupyter” adı, bilimin önde gelen açık dilleri düşünülerek ilham alındı (yani Julia, Python ve R) ve her ne kadar başka bir kısaltma gibi görünse de, asla diğer dillere kapalı olduğu anlamına gelmiyordu. Dahası, bu ad, geliştiricilerin üzerinde çalıştığı projeyi daha iyi temsil ediyor ve projenin bilimsel köklerine gönderme yapıyordu!

Jupyter Projesi başladıktan sonra, IPython projesinin dilden bağımsız kısımları, örneğin not defteri formatı, mesaj protokolü, Qt konsolu, not defteri web uygulaması vb. Jupyter projesine taşındı. Ana Jupyter GitHub organizasyonunu burada bulabilirsiniz.

Jupyter ve IPython topluluklarında buna “Büyük Ayrılık” denir.

IPython’ın artık sadece iki rolü var: Jupyter Notebook’un Python arka ucu olmak, ki buna çekirdek (kernel) de denir, ve etkileşimli bir Python kabuğu olmak. Ancak bu kadarla sınırlı değil: IPython ekosistemi içinde ayrıca bir paralel hesaplama çerçevesi de bulacaksınız. Buna daha sonra tekrar değineceksiniz!

IPython gibi, Jupyter Projesi de aslında birçok projenin ortak adıdır: barındırdığı üç uygulama Not Defteri’nin kendisi, bir Konsol ve bir Qt konsoludur; ancak ayrıca not defteri dağıtımını destekleyen JupyterHub, eğitim amaçlı nbgrader gibi alt projeler de vardır. Jupyter mimarisine genel bir bakışı buradan görebilirsiniz.

Python camiasında IPython ve Jupyter konusundaki kafa karışıklığını açıklayan şey tam olarak bu projenin evrimidir: biri diğerinden çıktığı (hem de oldukça yakın zamanda) için, kavramlar için doğru adları benimsemekte zorlananlar var. Ancak belki de daha da karmaşıklaştıran etmen evrimin kendisi: biri diğerinden çıktığı için, bazen ayırt edilmesi güç olan IPython ve Jupyter Notebook özellikleri arasında hatırı sayılır bir örtüşme var! İkisini nasıl ayırt edeceğiniz bu yazının sonraki bölümlerinde netleşecek. IPython’ın gelişiminin nasıl ortaya çıktığı hakkında daha fazla ayrıntı öğrenmek isterseniz, not defterlerinin tarihine ilişkin Fernando Pérez ve William Stein’in kişisel anlatımlarına göz atın.

R Not Defterleri

R Markdown ile Jupyter Notebook, tekrarlanabilir bir iş akışı sunma, kodu, çıktıyı ve metni tek bir belgede örerek bir araya getirme, etkileşimli bileşenleri destekleme ve birden çok formata çıktı verme açısından ortaktır.

Ancak ikisi farklılık da gösterir: ilki tekrarlanabilir toplu yürütmeye, düz metin temsiline, sürüm kontrolüne, üretim çıktısına odaklanır ve R betikleri için kullandığınız aynı düzenleyici ve araçları sunar. İkincisi ise çıktıyı kodla satır içi göstermeye, oturumlar arasında çıktıyı önbelleğe almaya, kodu ve çıktıyı tek bir dosyada paylaşmaya odaklanır. Not defterleri etkileşimli bir yürütme modeline vurgu yapar. Düz metin temsili kullanmazlar; JSON gibi yapılandırılmış bir veri temsili kullanırlar.

Tüm bunlar, RStudio’nun not defteri uygulamasının amacını açıklar: R Markdown’ın tüm avantajlarını hesaplamalı not defterlerin sunduğu güzelliklerle birleştirir.

R not defterleriyle nasıl çalışabileceğiniz ve not defteri paylaşımı, proje yönetimi, sürüm kontrolü ve daha fazlası açısından Jupyter ile R Markdown not defterleri arasındaki tam farkları öğrenmek için DataCamp’in Jupyter ve R: R ile Not Defterleri yazısına göz atın.

Diğer Veri Bilimi Not Defterleri

Elbette, veri bilimine başlarken göz önünde bulundurabileceğiniz daha pek çok not defteri var. Son yıllarda, veri bilimcilere ve veri bilimi meraklılarına birçok yeni alternatif sunuldu: sadece Beaker Notebook, Apache Zeppelin, Spark Notebook, DataBricks Cloud gibi seçenekleri değil, aynı zamanda veri bilimi analizlerinizi etkileşimli ve tekrarlanabilir kılan Rodeo IDE veya nteract gibi diğer araçları da düşünün. Burada dikkat edilmesi gereken güzel bir nokta, nteract’ın burada bahsedilen diğer araçlardan farklı olduğudur; çünkü Jupyter mimarisini, örneğin protokoller ve formatlar gibi bileşenleri kullanır.

Not Defterlerinin Geleceği

Ve not defterleri kalıcı olacak gibi görünüyor. Yakın zamanda Jupyter Notebook’un bir sonraki nesli topluluğa tanıtıldı: JupyterLab. Notebook uygulaması sadece Not Defterlerini değil, aynı zamanda bir dosya yöneticisini, bir metin düzenleyiciyi, bir terminal öykünücüsünü, çalışan Jupyter süreçleri için bir izleyiciyi, bir IPython küme yöneticisini ve yardımı görüntülemek için bir sayfalayıcıyı da içerir.

Şimdi bunun yeni bir şey olmadığını düşünebilirsiniz; Jupyter Notebook’ta da bunların hepsi var. Ancak JupyterLab, etkileşimli hesaplamanın tüm bu yapı taşlarını yeni yollarla kullanmanızı sağlar.

Daha fazlasını buradan okuyun.

Jupyter Notebook’un zengin araç seti organik olarak evrildi ve kullanıcılarımızın ve geliştiricilerimizin ihtiyaçları tarafından yönlendirildi. JupyterLab, tüm bu araçları desteklemek için esnek ve duyarlı bir kullanıcı arayüzüyle, araçları bir araya bağlayabilecek kullanıcı kontrollü bir düzen sunan yeni nesil bir mimaridir.

IPython mı Jupyter mı?

Projenin evrimi ve buna bağlı “Büyük Ayrılık”, ikisi arasındaki gerçek farkları anlamanın temelini oluşturur. Ancak ikisi doğası gereği bağlantılı olduğundan, bazen neyin neyin parçası olduğundan şüpheye düşebilirsiniz.

Aşağıdaki bölüm, IPython ekosisteminin ya da Jupyter Projesi’nin parçası olan bazı özellikleri ele alacaktır.

Doğru yanıtı seçmek ve her özellik hakkında daha fazlasını keşfetmek size kalmış!

Çekirdekler (Kernels)?

Çekirdekler artık Jupyter Notebook Uygulamasında belirgin bir şekilde yer alsa da, tam bir çekirdeği ve protokolü kullanan ilk araç, Not Defteri’nden önce geliştirilmiş olan Qt konsoluydu. Günümüzde çekirdekler, hem tarihsel hem de mimari olarak, Not Defteri tarafından esnek bir şekilde kullanılmaktadır ve Not Defteri’nin değil Jupyter’ın bir özelliğidir. Bu, çekirdeklerin yalnızca bir özellikten çok daha fazlası olduğu anlamına gelir: Jupyter mimarisinin temel bir soyutlamasıdırlar ve metin konsolu, Qt konsolu, O’Reilly’nin Thebe’si, Kernel Gateway aracı, nteract’in hydrogen düzenleyicisi gibi not defteri dışı araçlar tarafından da kullanılırlar. Son olarak, JupyterLab’de çekirdekler bir not defterinden bir web konsoluna veya hatta bir metin dosyasına kadar her şeye bağlanabilir.

Bir çekirdek, kullanıcının kodunu çalıştıran ve inceleyen bir programdır: not defterleri gibi ön yüzlerle hesaplama ve iletişim sağlar. Jupyter Notebook Uygulamasının üç ana çekirdeği vardır: IPython, IRkernel ve IJulia çekirdekleri.

“Jupyter” adının bilimin önde gelen açık dillerinden (Julia, Python ve R) ilham almış olması göz önüne alındığında, bu çok da şaşırtıcı değildir. Projenin evriminden ötürü IPython çekirdeği Jupyter ekibi tarafından bakımı yapılmaktadır.

Ancak, Jupyter Notebook Uygulamasında Scala, JavaScript, Haskell, Ruby ve daha birçok dili de çalıştırabilirsiniz. Bunlar topluluk tarafından bakımı yapılan çekirdeklerdir.

Not Defteri Dağıtımı?

Not defterlerinin dağıtımı, genellikle Jupyter not defterleriyle çalışırken bulacağınız veya inceleyeceğiniz bir şeydir. Not defterlerinizi dağıtmanıza yardımcı olacak ve Jupyter ekosisteminin parçası olan epeyce paket vardır.

İşte bazıları:

  • docker-stacks, Jupyter uygulamaları ve çekirdeklerinden oluşan yığınlara Docker konteynerleri olarak ihtiyaç duyduğunuzda işinize yarar.
  • ipywidgets, Jupyter çekirdeğine bağlı ön yüz denetimlerini bir araya getiren Jupyter mimarisi için etkileşimli HTML ve JavaScript bileşenleri (kaydırıcılar, onay kutuları, metin kutuları, grafikler vb.) sağlar.
  • jupyter-drive, IPython’ın dosya yönetimi için Google Drive kullanmasına olanak tanır.
  • jupyter-sphinx-theme, not defterinize bir Jupyter Sphinx teması ekler. Akıllı ve güzel dokümantasyon oluşturmayı kolaylaştırır.
  • kernel_gateway, Jupyter çekirdeklerini başlatma ve onlarla iletişim kurma için farklı mekanizmaları destekleyen bir web sunucusudur. Bu paketin hangi kullanım durumlarında işinize yarayabileceğini görmek için buraya bakın.
  • nbviewer, not defterlerinizi paylaşmak için. Galeriye buradan göz atın.
  • tmpnb, Docker konteynerleri kullanarak geçici Jupyter Notebook sunucuları oluşturur. Kendiniz buradan deneyin.
  • traitlets, Python sınıflarının tür kontrolü, dinamik hesaplanan varsayılan değerler ve ‘değişimde’ geri çağrılarla özniteliklere sahip olmasını sağlayan bir çerçevedir. Paketi yapılandırma amacıyla da kullanabilirsiniz; değerleri dosyalardan veya komut satırı argümanlarından yüklemek için. traitlets, IPython ve Jupyter’ın yapılandırma sistemini ve IPython etkileşimli bileşenlerinin deklaratif API’sini güçlendirir.

Sistem Kabuğu Kullanımı?

IPython’ı kabuk kaçışıyla sistem kabuğu kullanımı için uyarlamak mümkündür: ! ile başlayan satırlar doğrudan sistem kabuğuna iletilir. Örneğin, !ls geçerli dizinde ls komutunu çalıştırır. Bir sistem komutunun sonucunu myfiles=!ls söz dizimiyle bir Python değişkenine atayabilirsiniz. Ancak, ls fonksiyonunun sonucunu bir değişkene atamadan, açıkça bir liste (stringler) olarak yazdırmak istiyorsanız, iki ünlem işareti (!!ls) veya atama yapmadan %sx sihirli komutunu kullanın.

# Assign the result to `ls`
ls = !ls
 
# Explicit `ls`
!!ls
 
# Or with magics
%sx
 
# Assign magics result
ls = %sx

!! komutlarının bir değişkene atanamayacağını, ancak bir sihrin (bir değer döndürdüğü sürece) sonucunun bir değişkene atanabileceğini unutmayın.

IPython ayrıca sistem çağrıları yaparken Python değişkenlerinin değerini genişletmenize olanak tanır: değişkenlerinizi veya ifadelerinizi parantez ({}) içine alın. Ayrıca, ! veya !! ile başlayan bir kabuk komutunda, $ ile öneklenmiş herhangi bir Python değişkeni genişletilir. Aşağıdaki kod parçasında, sys değişkeninin argv özniteliğini yankıladığınızı göreceksiniz. Ayrıca, sistem çıktısından Python değişkenlerine atama yapmak için $/$$ söz dizimlerini kullanabileceğinizi ve bunları daha sonra betiklerde kullanabileceğinizi unutmayın.

Kabuğa gerçek bir $ karakteri geçirmek için çift $$ kullanın. Kabuk ve $PATH gibi ortam değişkenlerine erişmek isterseniz bu gerçek $ karakterine ihtiyaç duyarsınız:

# Import and initialize
import math
x = 4
 
# System call with variable
!echo {math.factorial(x)}
 
# Expand a variable
!echo $sys.argv
 
# Use $$ for a literal $
!echo "A system variable: $$HOME"

Daha fazlasını buradan okuyun.

IPython dışında, satırların kabuk komutu olarak yürütülmesini sağlamak için özel söz dizimine sahip başka çekirdekler de olduğunu unutmayın! Bunlar, en katı anlamda gerçekten “sihirler” değildir; çünkü istedikleri herhangi bir adla uygulayabilirler ve IPython sihirlerinden tamamen farklı (ve daha zengin ya da daha sınırlı) olabilirler.

Ayrıca, sistem komutları için tanımlayabileceğiniz takma adlar vardır. Bu takma adlar, temelde bash komutlarına kısayollardır. Bir takma ad bir demettir: (“showTheDirectory”, “ls”). Daha fazla bilgi için %alias? çalıştırın!

İpucu: Tüm $PATH’inizi IPython takma adları olarak yüklemek için %rehashx kullanın.

Sihirli Komutlar (Magics)?

DataCamp’in Jupyter Notebook’a Kapsamlı Kılavuzunu okuduysanız veya Jupyter ile daha önce çalıştıysanız, “sihirli komutlar” olarak adlandırılan şeyleri muhtemelen biliyorsunuzdur. Sihirler genellikle, altta yatan dilde geçerli olmayan bir söz dizimi öğesi ve bir komut ima eden bir kelimeden oluşur. Kaputun altında, sihir fonksiyonları aslında Python fonksiyonlarıdır.

IPython çekirdeği, bildiğiniz gibi, Python’da geçerli bir tekli işlemci olmadığı için % söz dizimi öğesini kullanır. Ancak, %% ile başlayan satırlar bir hücre sihrini işaret eder: bunlar argüman olarak yalnızca geçerli satırın geri kalanını değil, aynı yürütme bloğundaki altlarındaki tüm satırları da alır. Hücre sihirleri, aldıkları girdide keyfi değişiklikler yapabilir; bu girdinin geçerli bir Python kodu olması bile gerekmez. Tüm bloğu tek bir dize olarak alırlar.

Sihirler, çekirdeklere özgüdür ve çekirdekler tarafından sağlanır; Jupyter Notebook içerisindeki çalışmanızı ve deneyiminizi çok daha etkileşimli hale getirmek için tasarlanmıştır. Belirli bir çekirdekte sihirli komutların mevcut olup olmadığı, çekirdek geliştiricilerine ve çekirdekten çekirdeğe değişir. Gördüğünüz gibi, sihirler bir çekirdek özelliğidir.

Jupyter Notebook’un Python arka ucunu, yani çekirdek olarak da bilinen IPython’ı kullanırken, programlamanızı daha hızlı, daha kolay ve daha etkileşimli hale getirecek işlevlere erişmek için aşağıdaki püf noktalarından yararlanmak isteyebilirsiniz. Listelenecek olanların kapsamlı olması amaçlanmadığını unutmayın. Tam bir genel bakış için yerleşik sihirli komutların bu listesine göz atın.

Grafikleme

IPython çekirdeğinin önemli bir özelliği, kod hücrelerini çalıştırmanın çıktısı olan grafiklerin görüntülenebilmesidir. Çekirdek, bu işlevi sağlamak için matplotlib veri görselleştirme kütüphanesiyle sorunsuz çalışacak şekilde tasarlanmıştır. Bunu kullanmak için %matplotlib sihirli komutunu kullanın.

Böylece, grafiğiniz varsayılan olarak ayrı bir pencerede görüntülenecektir. Ek olarak, inline veya qt gibi bir arka uç da belirtebilirsiniz; böylece grafik komutlarının çıktısı satır içi veya farklı bir GUI arka ucu üzerinden gösterilir. Daha fazlasını buradan okuyabilirsiniz.

Dosya Sistemi Gezinme

Çekirdeğin sihirli komutları, dosya sisteminizde gezinmenin bir yolunu da sağlar. %cd ve %bookmark sihirleri, dizin değiştirmek veya sık kullandığınız dizinlere daha hızlı erişmek için bir klasörü yer imlerine eklemek üzere kullanılabilir.

Hata Ayıklayıcı Erişimi

Sonraki olarak, bir yakalanmamış istisna olduğunda her seferinde bir Python hata ayıklayıcısını %pdb çağırmak için sihirleri kullanabilirsiniz. Bu, istisnayı tetikleyen kod bölümünde sizi yönlendirir ve böylece bir hatanın kaynağını hızla bulmanızı mümkün kılar.

Ayrıca, betikleri Python hata ayıklayıcısının denetimi altında çalıştırmak için %run sihirli komutunu -d seçeneğiyle kullanabilirsiniz. Başlangıç kesme noktalarını sizin için otomatik olarak ayarlayacaktır. Son olarak, daha kolay hata ayıklayıcı erişimi için %debug sihrini de kullanabilirsiniz.

IPython Uzantıları

%load_ext sihrini kullanarak bir IPython uzantısını modül adıyla yükleyebilirsiniz. IPython uzantıları, kabuğun davranışını değiştiren Python modülleridir: uzantılar sihirler kaydedebilir, değişkenler tanımlayabilir ve genel olarak kullanıcı ad alanını değiştirerek kod hücreleri içinde kullanılacak yeni özellikler sağlayabilir. İşte bazı örnekler:

  • %load_ext oct2py.ipython kullanarak M dosyalarını ve Octave fonksiyonlarını Python’dan sorunsuz bir şekilde çağırın,
  • %load_ext rpy2.ipython kullanarak bir Python sürecine gömülü çalışan R için bir arayüz kullanın,
  • %load_ext Cython kullanarak bir Python’dan C’ye derleyici kullanın,
  • sympy.init_printing() ile Sympy Basic nesnelerini otomatik olarak güzel yazdırın ve
  • Etkileşimli oturumunuzda Fortran kullanmak için %load_ext fortranmagic kullanabilirsiniz.

… Daha birçoğu var! Kendi IPython uzantılarınızı oluşturup kaydedebilir ve bunları PyPi’ye kaydedebilirsiniz: bu da orada başka birçok kullanıcı tanımlı uzantı ve sihir olduğu anlamına gelir! Bir örnek ipython_unittest olsa da, bu Uzantılar Dizinine de bakın.

Dikkat etmeniz gereken diğer uzantılardan biri de sparkmagic’tir; Livy (bir Spark REST sunucusu) aracılığıyla uzak Spark kümeleriyle Jupyter not defterlerinde etkileşimli olarak çalışmak için bir araç setidir. sparkmagic kütüphanesi, normal bir IPython not defterinden uzak bir Spark kümesine kolayca kod çalıştırmanızı sağlayan bir %%spark sihri sunar.

# Load in sparkmagic
%load_ext sparkmagic.magics
 
# Set the endpoint
%manage_spark
 
# Ask for help
%spark?

Bu sihirleri kullanarak Spark kümesiyle etkileşimli çalışmanın daha fazla örneği için buraya gidin.

IPython’ın, Jupyter Notebook’unuzdan uzantıları yönetmenize olanak tanıyan %load_ext dışında iki sihri daha olduğunu unutmayın: bir uzantıyı boşaltmak, yeniden içe aktarmak ve yüklemek için %reload_ext ve uzantıyı boşaltmak için %unload_ext.

Farklı Çekirdekler, Diğer Sihirler

Ancak, diğer dillerde sihirli komutlardaki söz dizimi öğesinin bir anlamı olabilir. R çekirdeği IRKernel’in bir sihir sistemi yoktur. Örneğin bash komutlarını yürütmek için, bir işletim sistemi komutunu çağırmak üzere system() gibi R fonksiyonlarını kullanırsınız. Örneğin system("head -5 *.csv", intern=TRUE) olabilir. intern argümanını ekleyerek, komutun çıktısını R’de bir karakter vektörü olarak yakalamak istediğinizi belirtmiş olursunuz. Markdown girdisini görüntülemek için, Markdown kodunu karakter vektörü olarak ilettiğiniz display_markdown() kullanırsınız. Benzer şekilde, Julia çekirdeği IJulia da “sihirler” kullanmaz. Bunun yerine, aynı hedeflere ulaşmak için diğer söz dizimleri Julia’da daha doğaldır, IJulia kod hücreleri dışında da çalışır ve genellikle daha güçlüdür. Ancak, IJulia çekirdeğinin geliştiricileri, bir IJulia kod hücresine bir IPython sihir komutu girdiğinizde, mümkünse Julia’da benzer bir etkiyi nasıl elde edebileceğinizi açıklayan bir yardım çıktısı görmenizi sağlamıştır.

Örneğin, IJulia’da IPython’ın %load komutunun karşılığı IJulia.load()’dır.

Öte yandan, IPython’a benzer şekilde sihirli komutları destekleyen Scala çekirdeği IScala gibi çekirdekler de vardır. Ancak, sihirlerin kümesi Scala ve JVM’in özelliklerine uyacak şekilde farklıdır. Sihirli komutlar, yüzde işaretini (%) bir tanımlayıcı ve isteğe bağlı bir girdi izler. En dikkat çekici sihirlerden bazıları şunlardır:

# Type Information
%type 1
 
# Library Management
%libraryDependencies
%update

Yukarıda okuduğunuz gibi, sparkmagic kütüphanesi ayrıca uzak bir Spark kümesine otomatik olarak bağlanmanıza, kod ve SQL sorguları çalıştırmanıza, Livy sunucunuzu ve Spark iş yapılandırmanızı yönetmenize ve otomatik görselleştirmeler üretmenize olanak tanıyan bir Scala ve bir Python çekirdeği seti sunar. Hem de herhangi bir koda ihtiyaç duymadan!

Örneğin, %%sql ile SparkSQL sorgularını kolayca çalıştırabilir veya %%info sihri aracılığıyla Spark uygulama bilgilerine ve günlüklerine erişebilirsiniz.

Başka bir çekirdekle çalışıyorsanız ve sihirli komutları kullanıp kullanamayacağınızı merak ediyorsanız, metakernel projesi üzerine inşa edilen ve çoğu durumda IPython çekirdeğinde de bulacağınız aynı sihirleri kullanan bazı çekirdeklerin olduğunu bilmek faydalı olabilir. Metakernel sihirlerinin bir listesini burada bulabilirsiniz. Metakernel, temel sihir fonksiyonlarını içeren bir Jupyter/IPython çekirdek şablonudur.

Bazı örnekler:

Bu, örneğin MATLAB çekirdeğini kullanırken aşağıdaki sihirlerin mevcut olacağı anlamına gelir:

Available line magics:
%cd  %connect_info  %download  %edit  %get  %help  %html  %install  %install_magic  %javascript  %kernel  %kx  %latex  %load  %ls  %lsmagic  %magic  %parallel  %plot  %pmap  %px  %python  %reload_magics  %restart  %run  %set  %shell  %spell
 
Available cell magics:
%%debug  %%file  %%help  %%html  %%javascript  %%kx  %%latex  %%processing  %%px  %%python  %%shell  %%show  %%spell

Yukarıda yazdırılan parçaya bakarsanız, bu sihirli komutlardan bazılarının çok tanıdık göründüğünü göreceksiniz. Sihirleri çok iyi bilmeyenler için, yukarıdaki parçayı IPython çekirdeğinde varsayılan olarak mevcut sihirlerle karşılaştırın; bazı sihirlerin aynı olduğunu göreceksiniz:

Available line magics:
%alias  %alias_magic  %autocall  %automagic  %autosave  %bookmark  %cat  %cd  %clear  %colors  %config  %connect_info  %cp  %debug  %dhist  %dirs  %doctest_mode  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %lf  %lk  %ll  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %lx  %macro  %magic  %man  %matplotlib  %mkdir  %more  %mv  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %popd  %pprint  %precision  %profile  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %rep  %rerun  %reset  %reset_selective  %rm  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode
 
Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile

Özünde, hangi sihirlerin IPython’a özgü olduğunu ve hangilerinin diğer çekirdeklerde de kullanılabileceğini ayırt etmek için tek bir soru kullanabilirsiniz: bu işlev Python’a özgü mü, yoksa çalıştığınız dilde de kullanılabilecek genel bir şey mi?

Örneğin, %pdb yani Python Hata Ayıklayıcı veya %matplotlib, JavaScript çekirdeğiyle çalışırken anlam ifade etmeyecek Python’a özgü şeylerdir. Ancak, %cd ile dizin değiştirmek tipik olarak çok genel bir şeydir ve herhangi bir dilde çalışmalıdır; çünkü bu kadar “genel” bir komuttur. Dolayısıyla, bunun diğer çekirdeklerde de kullanılabilecek bir sihir olma olasılığı yüksektir. Elbette, çekirdeğinizin sihirleri kullanıp kullanmadığını yine de bilmeniz gerekir.

Not Defterlerini Dönüştürme ve Biçimlendirme?

Not defterlerini dönüştürmek ve biçimlendirmek, Jupyter ekosisteminde bulacağınız özelliklerdir. Bu görevler için tipik olarak karşılaşacağınız iki araç nbconvert ve nbformattır.

İlkini, not defterlerini bilgiyi alışıldık formatlarda sunmak, araştırmayı yayımlamak ve not defterlerini makalelere gömmek, başkalarıyla iş birliği yapmak ve içeriği daha geniş bir kitleyle paylaşmak için çeşitli diğer formatlara dönüştürmek amacıyla kullanabilirsiniz.

İkincisi ise temelde Jupyter Notebook formatını içerir ve not defteri dosyalarının basit JSON belgeleri olduğunu anlamanın anahtarıdır; bu belgeler şunları içerir: meta veriler (örneğin çekirdek veya dil bilgisi), not defteri formatının sürümü (ana ve minör) ve tüm metin, kod vb.’nin saklandığı hücreler.

Not Defterlerini Kaydetme ve Yükleme?

Not defterlerini kaydetmek ve yüklemek, Jupyter Notebook Uygulamasının bir özelliğidir. Başkalarının oluşturduğu, .ipynb dosya uzantısıyla kaydedilmiş not defterlerini indirip Jupyter uygulamasında açarak yükleyebilirsiniz. Daha spesifik olmak gerekirse, yeni bir not defteri oluşturup “Dosya” sekmesine tıklayarak, “Aç”ı seçerek ve indirdiğiniz not defterini seçerek dosyayı açmayı tercih edebilirsiniz.

Tersine, kendi not defterlerinizi de aynı “Dosya” sekmesine tıklayıp “Farklı indir”i seçerek kendi not defteri dosyanızı elde edebilir veya dosyayı kaydetmeyi ve bir denetim noktası (checkpoint) oluşturmayı tercih edebilirsiniz. Bu, küçük bir sürüm kontrolü yapmak ve belki de not defterinizin önceki bir sürümüne geri dönmek istediğinizde çok kullanışlıdır. Elbette, değişiklikleriniz birkaç dakikada bir otomatik olarak kaydedilir, bu nedenle bu işlemi her zaman açıkça yapmanız gerekmez.

Ayrıca, orijinal bir not defterinde yapılan değişiklikleri kaydetmemeyi, onun bir kopyasını oluşturarak ve tüm değişiklikleri bu kopyaya kaydederek tercih edebileceğinizi unutmayın!

Klavye Kısayolları ve Çoklu İmleç Desteği?

Birden çok hücreyi seçmek, hücre çıktısını açıp kapatmak, yeni hücreler eklemek vb. Tüm bu işlemler için Jupyter Notebook’un bir parçası olan klavye kısayolları vardır. Klavye kısayollarının bir listesini üstteki menüde bulabilirsiniz: “Yardım” sekmesine gidin ve “Klavye Kısayolları”nı seçin.

Ayrıca, çoklu imleç desteği de Jupyter Notebook’ta bulacağınız bir özelliktir!

Paralel Hesaplama Ağı?

Paralel hesaplama ağı IPython projesinin bir parçasıydı, ancak 4.0 itibarıyla ipyparallel adlı bağımsız bir paket haline geldi. Paket, temel olarak Jupyter için kümeleri kontrol etmeye yönelik bir CLI betikleri koleksiyonudur.

Her ne kadar ayrılmış olsa da, hâlâ genellikle gözden kaçan, ancak IPython ekosisteminin güçlü bir bileşenidir; Çünkü tek bir Python çekirdeği çalıştırmak yerine, birçok makine üzerinde birçok dağıtık çekirdek başlatmanıza olanak tanır.

ipyparallel için tipik kullanım durumları, örneğin bir modelin çıktılarının dağılımlarını tahmin etmek veya girdi parametreleriyle nasıl değiştiklerini görmek için modeli birçok kez çalıştırmanız gereken durumları içerir. Modelin çalıştırmaları birbirinden bağımsız olduğunda, bunları bir kümedeki birden çok bilgisayarda paralel olarak çalıştırarak süreci hızlandırabilirsiniz. Dağıtık model eğitimi veya benzetimler gibi.

Terminal?

Bu özellik Jupyter ekosisteminin bir parçasıdır: Jupyter Console ve bir Jupyter terminal uygulamanız vardır. Ancak başlangıçtan itibaren IPython, Python için özgün, etkileşimli komut satırı terminalini ifade etmek için kullanılmıştır. Özellikle bilimsel hesaplamaya uyarlanmış, geliştirilmiş bir okuma-değerlendirme-yazma döngüsü (REPL) ortamı sunar. 2011’de Not Defteri aracı tanıtılmadan ve Python’a modern ve güçlü bir web arayüzü sunmaya başlamadan önce standart olan buydu.

Sonrasında, iki süreç başlatan IPython konsolunuz da vardı: özgün IPython terminal kabuğu ve aksi belirtilmedikçe başlatılan varsayılan profil veya çekirdek. Varsayılan olarak bu Python’du. IPython konsolu artık kullanımdan kaldırılmıştır ve başlatmak isterseniz Jupyter Console’u kullanmanız gerekir; bu, Jupyter çekirdekleri için terminal tabanlı bir konsol ön yüzüdür. Bu kod, tek süreçli IPython terminaline dayanır. Jupyter Console, terminalde IPython’ın etkileşimli istemci tarafı deneyimini sağlar, ancak yalnızca IPython’a değil, herhangi bir Jupyter çekirdeğine bağlanma olanağıyla. Bu, yüklü olabilecek herhangi bir Jupyter Çekirdeğini, bunun için tam teşekküllü bir Not Defteri başlatmaya gerek kalmadan terminalde test etmenizi sağlar. Console, IJulia, IRKernel gibi diğer Jupyter çekirdekleriyle konsol tabanlı etkileşime olanak tanır.

Son olarak, Jupyter Notebook Uygulamasının bir Terminal Uygulaması da vardır: tarayıcınızda çalışan basit bir bash kabuk terminali. Uygulamayı başlattığınızda açılır menüden yeni bir terminal seçerek kolayca bulabilirsiniz.

Qt Konsolu?

Qt konsolu eskiden IPython projesinin bir parçasıydı, ancak şimdi Jupyter projesine taşındı. Büyük ölçüde bir terminal gibi hissettiren, ancak bir GUI’de mümkün olan geliştirmeler sunan, hafif bir uygulamadır; satır içi şekiller, sözdizimi vurgulamalı düzgün çok satırlı düzenleme, grafiksel çağrı ipuçları ve çok daha fazlası gibi. Qt konsolu herhangi bir Jupyter çekirdeğini kullanabilir.

Sonuç

Bugünkü blog yazısı, DataCamp’in Kapsamlı Kılavuzu’na bir ek olarak, iki projenin tarihini ve her ikisinin de bazı temel özelliklerini daha ayrıntılı bir şekilde ele aldı; böylece ikisinin evrimini ve aralarındaki farkı daha net anlayabilirsiniz. Amaç, iki projenin tarihsel perspektifini dikkate almazsanız aradaki ayrımın bazen zor olduğunu göstermekteydi. Bazı durumlarda, kolayca sınıflandırılamayan bir gri alan, bir “arada” vardır.

Konular
Python
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör