使用Cython,我正在开发一个扩展模块,该模块作为一个组件进行构建.所以归档.然后我用IPython测试它.在开发过程中,我经常需要进行更改和重建.我还需要退出IPython shell并重新输入所有命令.使用重新导入模块

import imp
imp.reload(Extension)

不起作用,代码未更新.有没有办法避免在重建模块后重新启动IPythonshell ?

推荐答案

在不重新启动进程的情况下,无法重新加载C扩展(有关更多信息,请参阅this official Python bug).

由于您已经在使用IPython,如果您可以接受的话,我可能会建议您使用两个进程接口中的一个,比如笔记本或QtConsole.这些允许您轻松地加载内核进程,从而允许您重新加载模块.显然,这不像重新加载Python模块那样方便,因为必须重新执行才能回到相同的状态.但这是不可避免的,所以重点是减轻不便.

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

  1. 重建扩展
  2. 重启内核
  3. 运行All以重新执行笔记本

现在,新版本的扩展又回到了原来的状态.里程数可能会有所不同,这取决于重新运行交互式工作的成本,但这对我很有用.

Python-3.x相关问答推荐

替换Pandas中组下的列值

基于另一个数据帧计算总和

新行是pandas数据帧中旧行的组合

DataFrame列中如何迭代重复值?

如何根据索引子列表对元素列表进行分组或批处理?

两个 y 轴在零处对齐的 plotly barplot

使用 Python 截断并重新编号对应于特定 ID/组的列

Python 列表求和所有出现的保留顺序

如何在不使用循环的情况下根据另一个数组的索引值将 numpy 数组中不同通道的值设置为零?

Jupyter Notebook 拒绝打印一些字符串

合并问卷中多列中的稀疏问题 - Pandas

Python:如何从句子/段落中提取地址(非正则表达式方法)?

使用 pandas 数据帧映射到中转( node )点的跨容量请求

获取以特定字母开头的姓氏

判断对 python 3 支持的要求

为什么我在 Python 中收到错误消息无法导入名称 NoneType?

sys.stdin.readline() 读取时没有提示,返回 'nothing in between'

python 内置的 __exit__ 参数类型是什么?

如何判断列表中的所有项目是否都是字符串

如何更改 tkinter 文本小部件中某些单词的 colored颜色 ?