【发布时间】:2012-01-07 21:28:58
【问题描述】:
我为 Python 3.2 编写了一个 C 扩展 (mycext.c)。该扩展依赖于存储在 C 头文件 (myconst.h) 中的常量数据。头文件由 Python 脚本生成。在同一个脚本中,我使用了最近编译的模块。 Python3 myscript中的工作流程(未完整展示)如下:
configure_C_header_constants()
write_constants_to_C_header() # write myconst.h
os.system('python3 setup.py install --user') # compile mycext
import mycext
mycext.do_stuff()
这是第一次在 Python 会话中完美运行。如果我在同一会话中重复该过程(例如,在单元测试的两个不同测试用例中),则始终(重新)加载 mycext 的第一个编译版本。
如何有效地重新加载具有最新编译版本的扩展模块?
【问题讨论】:
-
如果您需要一直更改它,它并不完全是常量...将常量放在配置文件中。
-
它们在实际应用程序中将保持不变(它不会使用 Python)。我使用 Python 生成常量并对 C 代码进行单元测试。
-
制作一个配置文件,直到你弄清楚常量应该是什么。
-
感谢您的建议。我正在测试一种算法,常量是特定于应用程序的(我事先无法知道它们)。从我不完整的问题描述中,不清楚为什么我不能按照您的建议进行操作。不过,Sven 提供的答案正是我想要的。
-
确实不清楚,因为没有原因。你可以那样做,我保证。 :-)
标签: module python-3.x reload