Terminalden bir .ipynb Jupyter Notebook nasıl çalıştırılır?


160

Bir .ipynb dosyasında bazı kod var ve ben gerçekten IPython Notebook "interaktif" özelliğine ihtiyaç duyma noktasına var. Doğrudan bir Mac Terminal Komut Satırından çalıştırmak istiyorum.

Temelde, bu sadece bir .py dosyası olsaydı, komut satırından sadece python dosyaadı.py yapabileceğime inanıyorum. Bir .ipynb dosyası için benzer bir şey var mı?


Bunun gibi bir şey: github.com/paulgb/runipy ?
idjaw

Bunun gibi bir şey. inputIpython not defterimde bazı ifadeler var ve bununla ilgili bir sorun var gibi görünüyor
Vincent

Yanıtlar:


107

Komut satırından bir not defterini şu komutla python'a dönüştürebilirsiniz:

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

Python mistune paketini yüklemeniz gerekebilir :

sudo pip install -U mistune

14
Alt komutların ipython nbconvertjupyter nbconvert lehine kullanımdan kaldırıldı
PenguinEngineer

6
Bu cevabın doğru olduğunu düşünmüyorum. Çalıştığının farkındayım, ancak soru .ipynb'nin terminalden nasıl çalıştırılacağı, bir .py'ye nasıl dönüştürüleceği ve daha sonra nasıl çalıştırılacağıdır.
Giacomo

3
Herhangi bir hücrenin çalışması 30 saniyeden uzun sürerse Nbconvert başarısız olur, eklemek isteyebilirsiniz --ExecutePreprocessor.timeout=600.
bckygldstn

En son güncellemeler bu şekilde çalışır, not defteri dosyasından bir HTML alırsınızjupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb
b-ak

160

nbconvert dizüstü bilgisayarları --executebayrakla çalıştırmanıza izin verir :

jupyter nbconvert --execute <notebook>

Bir not defteri çalıştırmak ve yeni bir not defteri oluşturmak istiyorsanız şunları ekleyebilirsiniz --to notebook:

jupyter nbconvert --execute --to notebook <notebook>

Veya mevcut not defterini yeni çıktıyla değiştirmek istiyorsanız :

jupyter nbconvert --execute --to notebook --inplace <notebook>

Bu gerçekten uzun bir komut olduğundan, bir takma ad kullanabilirsiniz:

alias nbx="jupyter nbconvert --execute --to notebook"
nbx [--inplace] <notebook>

1
Bu, conda sanal ortamının arkasında çalışmıyor gibi görünüyor
Ramesh-X

9
Bu, not defterini statik bir HTML sayfasına dönüştürür
Jim Daniël Teunis


Hangi hücrelerin yürütüleceğini belirtmenin bir yolu var mı? Örneğin, hücre 10 ve aşağısı veya hücre 10 - hücre 20 arası
Al Conrad

2
Ayrıca, uzun süre çalışan hücreleriniz varsa ayarlayabilirsiniz --ExecutePreprocessor.timeout=[timeout_in_seconds] ( -1kısıtlama olmadan kullanın ).
Zaccharie Ramzi

38

Tüm kodunuzu dışa aktarabilir .ipynbve bir .pykomut dosyası olarak kaydedebilirsiniz . Daha sonra komut dosyasını terminalinizde çalıştırabilirsiniz.

kod dışa aktarma örneği

Umarım yardımcı olur.


Bu cevap (y)
ColinMac

3
orijinal soruya cevap vermiyor
baxx

14

Terminalinizde ipython'u çalıştırın:

ipython

sonra komut dosyanızı bulun ve oraya koyun:

%run your_script.ipynb

bu bir kabuk betiğine nasıl konabilir
baxx

1
Bu en pratik cevap.
Ed Williams

10

Bunun yerine yeni sürüm için:

ipython nbconvert --to python <YourNotebook>.ipynb

İpython'un jupyter instend'ini kullanabilirsiniz:

jupyter nbconvert --to python <YourNotebook>.ipynb

bu sorunun cevabı nasıl?
baxx

4

Daha iyi görünürlük için yazarın alıntı yaptığı yorum ile güncelleme:

Yazarın notu "Bu proje, Jupyter'ın şu anda komut satırından not defterlerini çalıştırmanın önerilen yolu olan yürütme API'sinden önce başladı. Runipy kullanımdan kaldırıldı ve sürdürülmediğini düşünün." - Sebastian Palma

Kodunuzu terminalde çalıştırmaya izin veren runipy kütüphanesini kurun

pip install runipy

Kodunuzu derledikten sonra:

runipy <YourNotebookName>.ipynb

Sen de cronjob deneyebilirsiniz. Tüm bilgiler burada


11
Yazarın notu "Bu proje, Jupyter'ın şu anda komut satırından not defterlerini çalıştırmanın önerilen yolu olan yürütme API'sinden önce başladı. Runipy kullanımdan kaldırıldı ve sürdürülmediğini düşünün."
Sebastian Palma

3

Benim durumumda, bana en uygun komut şuydu:

jupyter nbconvert --execute --clear-output <notebook>.ipynb

Neden? Bu komut fazladan dosya oluşturmaz (tıpkı bir .pydosya gibi ) ve dizüstü bilgisayar her çalıştırıldığında hücrelerin çıktısının üzerine yazılır.

Eğer koşarsan:

jupyter nbconvert --help

--clear-output Mevcut dosyanın çıktısını siler ve mevcut dizüstü bilgisayarın üzerine yazarak yerine kaydeder.


0

boarPaketi, dizüstü bilgisayarınızı bir python kodu içinde çalıştırmak için de kullanabilirsiniz .

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

Not defterinizi güncellerseniz, bir daha python dosyasına dönüştürmeniz gerekmez.


Daha fazla bilgi için:

https://github.com/alexandreCameron/boar/blob/master/USAGE.md


0

Terminal çalışmasından

jupyter nbconvert --execute --to notebook --inplace --allow-errors --ExecutePreprocessor.timeout=-1 my_nb.ipynb

Varsayılan zaman aşımı 30 saniyedir. -1 kısıtlamayı kaldırır.

Çıktı not defterini yeni bir not defterine kaydetmek istiyorsanız bayrağı kullanabilirsiniz --output my_new_nb.ipynb


0

Aynı problemi yaşadım ve papermill buldum . Diğer çözümlere karşı avantajları, dizüstü bilgisayar çalışırken sonuçları görebilmenizdir. Dizüstü bilgisayar çok uzun sürdüğünde bu özelliği ilginç buluyorum. Kullanımı çok kolaydır:

pip install papermill
papermill notebook.ipynb output.ipynb

Ayrıca, çıktı dosyasını Amazon S3, Google Cloud, vb. Biçiminde kaydetme gibi diğer kullanışlı seçeneklere de sahiptir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.