วิธีการเรียกใช้ .ipynb Jupyter Notebook จากเทอร์มินัล


160

ฉันมีรหัสบางส่วนในไฟล์. ipynb และไปถึงจุดที่ฉันไม่ต้องการฟีเจอร์ "แบบโต้ตอบ" ของ IPython Notebook ฉันต้องการเรียกใช้โดยตรงจาก Mac Terminal Command Line

โดยทั่วไปถ้านี่เป็นเพียงไฟล์. py ฉันเชื่อว่าฉันสามารถทำ python filename.py จากบรรทัดคำสั่ง มีบางอย่างที่คล้ายกันสำหรับไฟล์. ipynb หรือไม่


บางสิ่งเช่นนี้: github.com/paulgb/runipy ?
idjaw

อะไรแบบนั้น. ฉันมีinputคำสั่งบางอย่างในสมุดบันทึก ipython ของฉันและดูเหมือนว่าจะมีปัญหากับสิ่งเหล่านี้
Vincent

คำตอบ:


107

จากบรรทัดคำสั่งคุณสามารถแปลงโน้ตบุ๊กเป็นไพ ธ อนด้วยคำสั่งนี้:

jupyter nbconvert --to python nb.ipynb

https://github.com/jupyter/nbconvert

คุณอาจจะต้องติดตั้งแพ็คเกจpune mistune :

sudo pip install -U mistune

14
คำสั่งย่อยipython nbconvertถูกคัดค้าน jupyter nbconvert
PenguinEngineer

6
ฉันไม่คิดว่าคำตอบนี้ถูกต้อง ฉันรู้ว่ามันใช้งานได้ แต่คำถามก็คือวิธีการเรียกใช้. ipynb จากเทอร์มินัลไม่ใช่วิธีแปลงเป็น. py แล้วเรียกใช้
Giacomo

3
Nbconvert จะล้มเหลวถ้าเซลล์ใด ๆ ใช้เวลานานกว่า 30 --ExecutePreprocessor.timeout=600วินาทีในการทำงานคุณอาจต้องการที่จะเพิ่ม
bckygldstn

การปรับปรุงล่าสุดทำให้มันทำงานเช่นนี้คุณจะได้รับไฟล์ HTML โน้ตบุ๊คjupyter-nbconvert --execute 03-Print\ Formatting\ with\ Strings.ipynb
B-AK

160

nbconvert ให้คุณเรียกใช้โน้ตบุ๊กด้วย--executeค่าสถานะ:

jupyter nbconvert --execute <notebook>

หากคุณต้องการเรียกใช้สมุดบันทึกและสร้างสมุดบันทึกใหม่คุณสามารถเพิ่ม--to notebook:

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

หรือถ้าคุณต้องการแทนที่โน้ตบุ๊กที่มีอยู่ด้วยเอาต์พุตใหม่:

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

เนื่องจากเป็นคำสั่งที่ยาวมากคุณสามารถใช้นามแฝงได้:

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

1
ดูเหมือนว่าจะไม่ทำงานเบื้องหลังสภาพแวดล้อมเสมือน conda
Ramesh-X

9
นี่จะเปลี่ยนสมุดบันทึกเป็นหน้า HTML คงที่
Jim Daniël Teunis

3
เอกสารหรือการเขียนโปรแกรมและวิธีการของการใช้โน๊ตบุ๊คสามารถพบได้ที่nbconvert.readthedocs.io/en/latest/...
TomDotTom

มีวิธีระบุเซลล์ที่จะดำเนินการหรือไม่ ตัวอย่างเช่นเซลล์ 10 และด้านล่างทั้งหมดหรือช่วงเซลล์ 10 ถึงเซลล์ 20
Al Conrad

2
นอกจากนี้หากคุณมีเซลล์ที่ใช้งานนานคุณสามารถตั้งค่า --ExecutePreprocessor.timeout=[timeout_in_seconds] (ใช้โดย-1ไม่มีข้อ จำกัด )
Zaccharie Ramzi

38

คุณสามารถส่งออกรหัสทั้งหมดของคุณจาก.ipynbและบันทึกเป็น.pyสคริปต์ จากนั้นคุณสามารถเรียกใช้สคริปต์ในเทอร์มินัลของคุณ

ตัวอย่างการส่งออกรหัส

หวังว่ามันจะช่วย


คำตอบนี้ (y)
ColinMac

3
ไม่ตอบคำถามเดิม
baxx

14

ใน Terminal ของคุณให้รัน ipython:

ipython

จากนั้นค้นหาสคริปต์ของคุณและวางไว้ที่นั่น:

%run your_script.ipynb

สิ่งนี้จะถูกใส่ลงในเชลล์สคริปต์ได้อย่างไร
baxx

1
นี่คือคำตอบที่ใช้ได้จริงที่สุด
Ed Williams

10

สำหรับเวอร์ชันใหม่แทน:

ipython nbconvert --to python <YourNotebook>.ipynb

คุณสามารถใช้ jupyter instend ของ ipython:

jupyter nbconvert --to python <YourNotebook>.ipynb

นี่เป็นคำตอบสำหรับคำถามนี้อย่างไร
baxx

4

อัปเดตด้วยความคิดเห็นที่ยกมาโดยผู้เขียนเพื่อการมองเห็นที่ดีขึ้น:

หมายเหตุของผู้เขียน "โครงการนี้เริ่มต้นก่อนที่จะรัน API ของ Jupyter ซึ่งขณะนี้เป็นวิธีที่แนะนำให้เรียกใช้โน้ตบุ๊กจากบรรทัดคำสั่งให้พิจารณา runipy ที่เลิกใช้แล้วและไม่มีการเคลื่อนไหว" - เซบาสเตียนปัลมา

ติดตั้งไลบรารี runipy ที่อนุญาตให้เรียกใช้โค้ดของคุณบนเทอร์มินัล

pip install runipy

หลังจากรวบรวมรหัสของคุณ:

runipy <YourNotebookName>.ipynb

คุณสามารถลอง cronjob ได้เช่นกัน ข้อมูลทั้งหมดอยู่ที่นี่


11
หมายเหตุของผู้เขียน "โครงการนี้เริ่มต้นก่อนที่จะรัน API ของ Jupyter ซึ่งขณะนี้เป็นวิธีที่แนะนำในการเรียกใช้โน้ตบุ๊กจากบรรทัดคำสั่งให้พิจารณา runipy ที่เลิกใช้แล้วและไม่มีการเคลื่อนไหว"
เซบาสเตียนปัล

3

ในกรณีของฉันคำสั่งที่เหมาะสมที่สุดสำหรับฉันคือ:

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

ทำไม? คำสั่งนี้ไม่ได้สร้างไฟล์พิเศษ (เช่นเดียวกับ.pyไฟล์) และเอาต์พุตของเซลล์จะถูกเขียนทับทุกครั้งที่มีการเรียกใช้โน้ตบุ๊ก

หากคุณทำงาน:

jupyter nbconvert --help

- ล้างผลลัพธ์ลบไฟล์ปัจจุบันและบันทึกเข้าแทนที่โน๊ตบุ๊คที่มีอยู่


0

คุณยังสามารถใช้boarแพคเกจเพื่อเรียกใช้สมุดบันทึกของคุณภายในรหัสหลาม

from boar.running import run_notebook

outputs = run_notebook("nb.ipynb")

หากคุณอัปเดตสมุดบันทึกของคุณคุณจะไม่ต้องแปลงเป็นไฟล์หลามอีกเลย


ข้อมูลเพิ่มเติมได้ที่:

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


0

จากการทำงานของเครื่อง

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

การหมดเวลาเริ่มต้นคือ 30 วินาที -1 ลบข้อ จำกัด

หากคุณต้องการบันทึกสมุดบันทึกผลลัพธ์ไปยังสมุดบันทึกใหม่คุณสามารถใช้การตั้งค่าสถานะ --output my_new_nb.ipynb


0

ฉันมีปัญหาเดียวกันและผมพบว่าPapermill ข้อดีของโซลูชันอื่น ๆ คือคุณสามารถเห็นผลลัพธ์ในขณะที่โน้ตบุ๊คกำลังทำงาน ฉันพบว่าคุณสมบัตินี้น่าสนใจเมื่อโน้ตบุ๊คใช้เวลานานมาก มันใช้งานง่ายมาก:

pip install papermill
papermill notebook.ipynb output.ipynb

นอกจากนี้ยังมีตัวเลือกที่มีประโยชน์อื่น ๆ เช่นการบันทึกไฟล์ที่ส่งออกไปยัง Amazon S3, Google Cloud และอื่น ๆ ดูหน้าสำหรับข้อมูลเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.