gpt4 book ai didi

ipython - 如何将 Cython 模块导入 IPython Notebook 并进行编译

转载 作者:行者123 更新时间:2023-12-01 12:37:19 25 4
gpt4 key购买 nike

我正在使用 IPython 和 Cython。

我正在外部文本编辑器的模块中编辑我的 Cython 函数。

我想导入这些模块并在 IPython 中使用它们,但是在导入时使用 IPython 编译它们。

这样做的语法是什么?我不希望我的代码在我的 IPython 笔记本中。

最佳答案

这是一个不寻常的工作流程,但应该可以使某些工作正常进行。首先,为了事情是import能够在您的 IPython session 中出现,它们必须出现在 sys.path 中.您可以像这样在该列表中插入新文件夹:

enter image description here

您要添加的路径将是放置已编译 Cython 模块的文件夹。无论您使用哪种下一个策略,您编译的 (.pyd) Cython 模块的路径至少需要在 sys.path 上。能够被导入。

其次,您需要一种编译 Cython 模块的方法。如果您使用推荐的方法,您将获得 setup.py与您的 cython 源文件和 python setup.py build_ext生成编译后的 .pyd文件。每次重新编译 Cython 模块时,都必须重新启动 IPython 内核。
setup.py 有其他选择.其中之一是我的easycython这是一个编译.pyx的命令行工具来源 .pyd无需setup.py .该工具仅由我使用/测试过,因此它可能无法正常工作,ymmv 等。每次重新编译 Cython 模块时,您仍然需要重新启动 IPython 内核。 (我在这里提到它只是因为它是我的一个 child 。)

更好的方法是使用 pyximport , 因为它会 按需编译有重载支持 :

# This is inside your IPython Notebook
import pyximport
pyximport.install(reload_support=True)
import my_cython_module

您可以使用重新加载模块
reload(my_cython_module)

您可以尝试巧妙地使用某种逻辑来实现它,以便只需重新运行笔记本即可重新加载或导入:
# Speculative code: I have not tried this!
# This is inside your IPython Notebook
import pyximport
pyximport.install(reload_support=True)
if 'my_cython_module' in dir(): # Maybe sys.modules is better?
reload(my_cython_module)
else:
import my_cython_module

您可能需要花点时间才能找到可行的方法,但是对于您的用例来说,有些东西应该是可行的。

关于ipython - 如何将 Cython 模块导入 IPython Notebook 并进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28532139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com