2010-11-09 38 views
31

Tôi thường được yêu cầu gỡ lỗi các tập lệnh Python do người khác viết. Tôi muốn gửi các kịch bản này đến IPython để nó sẽ rơi vào một vỏ IPython tại thời điểm kịch bản thất bại.Tùy chọn dòng lệnh cho tập lệnh * * * * *?

Thật không may, tôi không thể tìm cách gửi các tùy chọn dòng lệnh (bắt buộc) theo yêu cầu của tập lệnh.

IPython giả định tất cả mọi thứ trong là dành cho IPython khi tôi vượt qua kịch bản và các tùy chọn của nó như:

ipython <script_name> <script_options> 

Có một giải pháp hoặc cách giải quyết?

Trả lời

23
ipython -i -c "%run test.py 1 2 3 4" 
+0

Rất đẹp! Thật không may, khi nó ngoại lệ, nó thả tôi trở lại vào dòng lệnh hệ điều hành, không vào dấu nhắc IPython. Gợi ý? –

+1

Vâng, bạn chỉ có thể bắt đầu ipython và sau đó làm% chạy test.py 1 2 3 4 –

+1

Thực sự thêm -i làm cho nó ở trong vỏ. –

39
ipython -- sometest.py 1 2 3 4 
+2

Nó hoạt động, nhưng tôi không thể tìm thấy điều này trong tài liệu, bạn có thể chỉ cho tôi nơi mà tài liệu này được ghi lại không? –

+3

Cũng để duy trì cú pháp sử dụng trình bao tương tác 'ipython -i - sometest.py 1 2 3 4'. –

+2

Lưu ý rằng '-' là một tính năng của trình thông dịch hệ vỏ, và không cụ thể đối với shell ipython –

4

Tôi biết có một giải pháp đã được chấp nhận, nhưng trong phiên bản mới nhất của ipython này sẽ không hoạt động. Dưới đây là một cắt và dán lệnh tôi sử dụng để chạy thử nghiệm lốc xoáy với --autoreload

ipython --c="%run test.py --autoreload" 

Điều này đang sử dụng ipython .11.

1

Ví dụ đơn giản here.

script.py

from sys import argv 

script, first, second, third = argv 

print "The script is called:", script 
print "Your first variable is:", first 
print "Your second variable is:", second 
print "Your third variable is:", third 

shell:

$ ipython script.py stuff things that 
The script is called: ex13.py 
Your first variable is: stuff 
Your second variable is: things 
Your third variable is: that 
0

Nhiều khía cạnh của hành vi IPython có thể được điều khiển thông qua các thiết lập trong file config IPython của người dùng, mà thường là trong ~/.ipython/. Người dùng có thể tạo nhiều cấu hình , mỗi cài đặt có các thông số cấu hình khác nhau. Mỗi cấu hình có cài đặt của nó trong một thư mục riêng trong thư mục .ipython. Hồ sơ mặc định nằm trong profile_default và tệp chính ở đó để tùy chỉnh hành vi là ipython_config.py. Theo mặc định, nó gần như hoàn toàn bình luận, với dòng nhận xét hiển thị các biến cấu hình và các thiết lập mặc định của chúng. Bỏ ghi chú hoặc chèn dòng để thay đổi hành vi.

Để thay đổi cách cư xử IPython vào cuối chạy một kịch bản, sử dụng:

c.TerminalIPythonApp.force_interact = True 

Sau đó, khi kịch bản kết thúc (hoặc đặt ra một ngoại lệ), IPython sẽ tiếp tục chạy và giới thiệu bạn với một dấu nhắc. Đây là hành vi tương tự như ipython -i.

Tôi sử dụng cài đặt này trong hồ sơ mặc định của mình, vì đây là cách tôi luôn luôn muốn IPython hoạt động. Nếu đó không phải là trường hợp của bạn, bạn có thể tạo một hồ sơ với hành vi này, để sử dụng ngay khi bạn muốn hành vi này. Hoặc chỉ tiếp tục sử dụng tùy chọn (rõ ràng không có giấy tờ) -i.

Tài liệu cấu hình IPython có sẵn tại đây:

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