ipython 没有重新加载模块
ipython not reloading modules
我在 emacs shell 中 运行ning IPython 使用:
;; Set IPython interpreter in my init.el
(defvar python-shell-interpreter "ipython")
(defvar python-shell-interpreter-args "-i")
然后:
- 从 IPython 开始
M-x run-python
- 运行 IPython 中的一个程序
%run myprog.py
。 myprog.py 导入一个名为 mymodule
. 的模块
我对 mymodule
进行了更改,但是当我再次 运行 %run myprog.py
时,它 运行 是原始 mymodule
,而不是更改后的代码。
FWIW,我正在使用 emacs 24.5 prelude,在 Windows 10 上使用 Anaconda 和 Python 3.5.
原来是IPython's %run
command does not reload modules.
我目前的解决方法是:
- 将下面的代码添加到
~/.ipython/profile_default/ipython_config.py
- 使用
$run myprog.py args
.
# this code in `~/.ipython/profile_default/ipython_config.py`
# get_config() is injected into the global namespace whilst
# config files are loaded
c = get_config()
# Autoreload modules
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
我没有意识到 %run
不会重新加载模块,因为我习惯使用 Spyder 的 runfile
命令,而它会。 %run
没有,我想提交一个补丁来修复它。
在 Windows 上,必须设置 HOME 环境变量,以便 emacs
中的 run-python
命令可以读取 IPython 配置文件。如果未设置 HOME,您可以将其添加到您的 init.el
:
(add-hook 'inferior-python-mode-hook (lambda ()
(progn
(python-shell-send-string-no-output "%load_ext autoreload")
(python-shell-send-string-no-output "%autoreload 2"))))
我在 emacs shell 中 运行ning IPython 使用:
;; Set IPython interpreter in my init.el
(defvar python-shell-interpreter "ipython")
(defvar python-shell-interpreter-args "-i")
然后:
- 从 IPython 开始
M-x run-python
- 运行 IPython 中的一个程序
%run myprog.py
。 myprog.py 导入一个名为mymodule
. 的模块
我对 mymodule
进行了更改,但是当我再次 运行 %run myprog.py
时,它 运行 是原始 mymodule
,而不是更改后的代码。
FWIW,我正在使用 emacs 24.5 prelude,在 Windows 10 上使用 Anaconda 和 Python 3.5.
原来是IPython's %run
command does not reload modules.
我目前的解决方法是:
- 将下面的代码添加到
~/.ipython/profile_default/ipython_config.py
- 使用
$run myprog.py args
.
# this code in `~/.ipython/profile_default/ipython_config.py`
# get_config() is injected into the global namespace whilst
# config files are loaded
c = get_config()
# Autoreload modules
c.InteractiveShellApp.extensions = ['autoreload']
c.InteractiveShellApp.exec_lines = ['%autoreload 2']
我没有意识到 %run
不会重新加载模块,因为我习惯使用 Spyder 的 runfile
命令,而它会。 %run
没有,我想提交一个补丁来修复它。
在 Windows 上,必须设置 HOME 环境变量,以便 emacs
中的 run-python
命令可以读取 IPython 配置文件。如果未设置 HOME,您可以将其添加到您的 init.el
:
(add-hook 'inferior-python-mode-hook (lambda ()
(progn
(python-shell-send-string-no-output "%load_ext autoreload")
(python-shell-send-string-no-output "%autoreload 2"))))