6

I'd like to be able to use %cd "default_dir" and %matplotlib whenever I call ipython from my terminal. I tried writing this in a .py file in .ipython/profile_default/startup/file.py but it results in the following error:

[TerminalIPythonApp] WARNING | Unknown error in handling startup files:
  File "/Users/<name>/Dropbox/.ipython/profile_default/startup/startup.py", line 18
    %cd "~/Dropbox/"
    ^
SyntaxError: invalid syntax
Luke Davis
  • 2,300
  • 1
  • 19
  • 37

2 Answers2

4

You just need to use the magic in your startup scripts:

get_ipython().magic('cd ~/Dropbox')
get_ipython().magic('matplotlib')

Put that in the contents of your startup script and it should do the magic you need ✨✨

Wayne Werner
  • 45,646
  • 26
  • 189
  • 275
  • Can you give a short explanation of why your answer works, or link me to any useful sources? Can't seem to find anything. – Luke Davis Jan 10 '17 at 21:01
  • I searched for something like "ipython pass variable to magic function", which turned up [this answer](http://stackoverflow.com/a/14409510/344286), which was exactly the result you wanted. – Wayne Werner Jan 10 '17 at 22:04
3

I just wanted to elaborate the Wayne's answer, but do not have enough reputation to do a comment. You can have the following in the start up script to run the required magic commands

from IPython.core import getipython

getipython.get_ipython().magic(u"%reload_ext autoreload")
getipython.get_ipython().magic(u"%autoreload 2")

Module reference is here Ipython module

To run the above start up at terminal, do this

ipython -i startup.py
vkt
  • 111
  • 3
  • Very helpful. For those searching, note that you can localize the startup script folder by typing `get_ipython().profile_dir.startup_dir` – Dr_Zaszuś Nov 25 '20 at 16:42