python - 从 IPython 重新加载 Python 扩展模块

标签 python python-3.x ipython cython

使用 Cython,我正在开发一个扩展模块,它被构建为 .so 文件。然后我使用 IPython 对其进行测试。在开发过程中,我经常需要进行更改和重建。我还需要退出 IPython shell 并重新输入所有命令。使用

重新导入模块
import imp
imp.reload(Extension)

不起作用,代码没有更新。有没有办法让我在重建模块后避免重新启动 IPython shell?

最佳答案

如果不重新启动进程,就无法重新加载 C 扩展(请参阅 this official Python bug 了解更多信息)。

由于您已经在使用 IPython,如果您可以接受,我可能会建议您使用两个进程接口(interface)之一,例如 Notebook 或 QtConsole。这些允许您轻松重新启动内核进程,从而允许您重新加载模块。显然,这不如重新加载 Python 模块方便,因为您必须重新执行才能回到相同的状态。但这是无法避免的,所以重点是减轻不便。

我发现笔记本界面最方便开发扩展,因为它提供了最简单的方法来回到相同的状态:

  1. 重建扩展
  2. 重启内核
  3. Run All 重新执行 notebook

并且您使用新版本的扩展程序恢复到相同的状态。里程可能会有所不同,具体取决于重新运行交互式工作的成本,但它对我很有帮助。

关于python - 从 IPython 重新加载 Python 扩展模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216906/

相关文章:

python - VS Code 自动格式化 Python 代码以使用 2 个选项卡

python - 绝对值并添加到列表

python - 操作列时如何使用 pandas 数据帧处理 "divide by zero"?

python 3.7 : pycurl installation on Windows 10

python - PyCharm 中 IPython 的奇怪 'print' 行为

Python读取.txt文件->列表

python - 如何知道两个向量之间的角度?

python - 在 Tornado 中处理 Redis 连接的正确方法是什么? (异步 - 发布/订阅)

python - 如何修复 IPython 的 "ImportError: no module named shell"错误

python - IPython 笔记本配置