I am using spacemacs, anaconda-mode.

In file main.py, I imported a class from file a.py. Then I pressed C-c C-p to launch an ipython shell, and run main.py, everything is OK. But then I modified the class in a.py, and save, and rerun main.py, I found that the class in a.py was the previous version, which means ipython did not update the content in a.py! Only when I killed the python buffer, and relaunched the ipython shell, did the content in a.py be updated.

I tested this in Spyder, which is a python IDE, and it worked perfect as I expected. But what's wrong with emacs? Are there some configurations that I missed?


I have solved this problem.

First method: In ipython console, type

%load_ext autoreaload
%autoreload 2

Second method: Create configuration "dev" (or whatever):

ipython profile create dev
[ProfileCreate] Generating default config file: u'/home/username/.config/ipython/profile_dev/ipython_config.py'

And add these lines to "ipython_config.py":

c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']

Then set variables in Emacs config for python-mode:

   python-shell-interpreter "ipython"
   python-shell-interpreter-args "--profile=dev"

IPython started with this config will reload modules when you resend code to it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.