Command-line options to IPython *scripts*?

前端 未结 5 793
暖寄归人
暖寄归人 2020-12-23 13:58

I am often asked to debug Python scripts written by others. I would like to send these scripts to IPython so it will drop into an IPython shell at the point the script fail

相关标签:
5条回答
  • 2020-12-23 14:29

    Many aspects of IPython's behavior can be controlled via settings in the user's IPython config files, which typically are in ~/.ipython/. A user can create multiple profiles, each with different settings of the config parameters. Each profile has its settings in a separate folder in the .ipython folder. The default profile is in profile_default, and the main file in there for customizing behavior is ipython_config.py. By default, it is almost entirely commented, with commented lines showing the config variables and their default settings. Uncomment or insert lines to alter behavior.

    To change how IPython behaves at the end of running a script, use:

    c.TerminalIPythonApp.force_interact = True
    

    Then when the script ends (or raises an exception), IPython will keep running and present you with a prompt. This is the same behavior as ipython -i.

    I use this setting in my default profile, because this is the way I always want IPython to behave. If that's not the case for you, you could create a profile with this behavior, to use just when you want this behavior. Or just keep using the (evidently undocumented) -i option.

    IPython configuration documentation is available here: Introduction to IPython configuration — IPython documentation, with the force_interact option described here: Terminal IPython options — IPython documentation.

    0 讨论(0)
  • 2020-12-23 14:33

    I know there's an already accepted solution, but in the most recent version of ipython this won't work. Here's a cut and paste of the command I use to run tornado tests with --autoreload

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

    This is using ipython .11.

    0 讨论(0)
  • 2020-12-23 14:43

    Simple example 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 讨论(0)
  • 2020-12-23 14:52
    ipython -i -c "%run test.py 1 2 3 4"
    
    0 讨论(0)
  • 2020-12-23 14:53
    ipython -- sometest.py 1 2 3 4
    
    0 讨论(0)
提交回复
热议问题