2013-07-28 26 views
65

Có ai biết nếu có thể chạy một sổ ghi chép IPython/Jupyter không tương tác từ dòng lệnh và có kết quả là tệp .ipynb được lưu với kết quả chạy. Nếu nó không phải là đã có thể, làm thế nào nó sẽ được thực hiện với phantomJS, một cái gì đó để bật và tắt hạt nhân, và một cái gì đó để bật và tắt máy chủ web?Chạy một máy tính xách tay IPython/JUpyter không tương tác

Cụ thể hơn, giả sử tôi đã có sổ ghi chép original.ipynb và tôi muốn chạy lại tất cả các ô trong sổ ghi chép đó và lưu kết quả vào sổ ghi chép mới new.ipynb, nhưng thực hiện điều này bằng một lệnh duy nhất trên dòng lệnh mà không yêu cầu tương tác trong trình duyệt hoặc đóng máy chủ hạt nhân hoặc máy chủ web và giả sử không có máy chủ hạt nhân hoặc máy chủ web nào đang chạy.

dụ lệnh:

$ ipython notebook run original.ipynb --output=new.ipynb

Trả lời

55

Có thể, và dễ dàng, (chủ yếu) sẽ ở trong lõi IPython cho 2.0, tôi khuyên bạn nên xem those examples bây giờ.

[chỉnh sửa]

Hiện tại là Jupyter NbConvert. NbConvert đi kèm với một bó của Preprocessor s bị tắt theo mặc định, hai trong số chúng (ClearOutputPreprocessorExecutePreprocessor) được quan tâm. Bạn có thể bật chúng trong (các) tệp cấu hình (cục bộ) chung của bạn qua c.<PreprocessorName>.enabled=True (chữ hoa là python), hoặc trên dòng lệnh với --ExecutePreprocessor.enabled=True giữ phần còn lại của lệnh như bình thường.

--ExecutePreprocessor.enabled=True có lợi ích --execute bí danh có thể được sử dụng trên phiên bản NbConvert gần đây. Nó có thể được kết hợp với --inplace nếu muốn

Ví dụ, chuyển đổi sang html sau khi chạy không đầu máy tính xách tay:

$ jupyter nbconvert --to=html --execute RunMe.ipynb

chuyển đổi sang PDF sau khi tước ra

$ ipython nbconvert --to=pdf --ClearOutputPreprocessor.enabled=True RunMe.ipynb

này (tất nhiên) không hoạt động với hạt nhân không phải python bằng cách sinh ra một hạt nhân <insert-your-language-here>, nếu bạn đặt --profile=<your fav profile>. Việc chuyển đổi có thể được thực sự lâu vì nó cần phải chạy lại sổ ghi chép. Bạn có thể chuyển đổi notebook sang notebook với tùy chọn --to=notebook.

Có nhiều tùy chọn khác (thời gian chờ, cho phép lỗi, ...) có thể cần phải được đặt/bỏ đặt tùy thuộc vào trường hợp sử dụng. Xem tài liệu và tất nhiên là jupyter nbconert --help--help-all để biết thông tin về mor.

+1

Cảm ơn bạn đã chỉ cho tôi đúng hướng. Kể từ khi mã chính xác đã không được đăng, tôi chia rẽ một trong những gists và thêm mã đầu ra để sau đây sẽ chạy một máy tính xách tay từ dòng lệnh giống như một mong muốn '' '$ ipnbdocttest.py original.ipynb new.ipynb''' https://gist.github.com/davidshinn/6110231 – davidshinn

+0

Tuyệt vời! chức năng này sẽ được thêm vào nbconvert 2.0 với API đẹp hơn, đừng ngần ngại chỉnh sửa wiki để thêm liên kết vào tập lệnh của bạn. – Matt

+1

@Matt Điều này có làm cho nó thành ipython 2 không? Nếu vậy, làm cách nào để sử dụng? –

-5

Bạn chỉ có thể chạy ipython-Notebook-server thông qua dòng lệnh:

ipython notebook --pylab inline 

này sẽ bắt đầu các máy chủ trong chế độ không tương tác và tất cả các đầu ra được in bên dưới mã. Sau đó bạn có thể lưu tệp .ipynb-File bao gồm Mã số & Đầu ra.

+0

Cảm ơn đã phản ứng, tuy nhiên tôi đang tìm kiếm một cụ thể hơn giải pháp không yêu cầu can thiệp vào trình duyệt web cũng như không đóng máy chủ hạt nhân và máy chủ web. Tôi đã chỉnh sửa câu hỏi cụ thể hơn. – davidshinn

+0

Trong trường hợp này, tôi không biết cách tiến hành. Bạn có định làm việc này thường xuyên không? IPython-Notebook được thiết kế để sử dụng tương tác trong trình duyệt và lưu các tập tin ipynb-Files cụ thể từ dòng lệnh có vẻ hơi lạ với tôi. – ala

+0

Có, tôi dự định thực hiện việc này thường xuyên nếu có. Nó sẽ rất hữu ích trong trường hợp nguồn dữ liệu thay đổi thường xuyên và tôi muốn xem đầu ra chẩn đoán từ việc sử dụng gấu trúc xen kẽ với mã nó được tạo ra, chính xác những gì máy tính xách tay ipython làm rất tốt. Tuy nhiên, nếu tôi có nhiều loại quy trình này để chạy một ngày, sẽ tốt hơn nếu chúng có thể chạy theo lô và sau đó tôi có thể xem kết quả sau, như thể các tệp nhật ký được tạo ra. Vấn đề với việc ghi nhật ký chuẩn là rất khó để xem mã và đầu ra xen kẽ với nhau. – davidshinn

20

Cho đến khi chức năng này trở thành một phần của cốt lõi, tôi đã tập hợp một ứng dụng dòng lệnh nhỏ chỉ làm những gì bạn muốn. Nó được gọi là runipy và bạn có thể cài đặt nó với pip install runipy. source and readme are on github.

+0

runipy hoạt động tốt! – j08lue

+0

runipy dường như không hoạt động tốt cho tôi: nó không cập nhật trường 'chữ ký', và kết quả là, không có SVG nào của tôi thực sự được hiển thị: IPython thích hiển thị thay thế văn bản '__repr__' thuần túy thay thế. – akim

+0

hoặc '' 'conda install runipy''' nếu sử dụng anaconda. – Sean

Các vấn đề liên quan