cython pyximport在哪里编译?

时间:2015-05-06 14:36:20

标签: python cython

我的cython / pyximport代码在读/写文件系统上运行良好。

但是(出于测试目的),我需要在只读文件系统上进行尝试。

如何更改cython / pyximport临时目录? (它在哪里完成工作?即即时编译?)

如何将此“工作目录”设置为当前目录以外的其他位置,例如/tmp/(不是ro,而是rw)?

回溯:

!!   File "/usr/lib/python2.7/site-packages/Cython/Distutils/build_ext.py", line 301, in cython_sources
    self.mkpath(os.path.dirname(target))
!!   File "/usr/lib/python2.7/distutils/cmd.py", line 352, in mkpath
    dir_util.mkpath(name, mode, dry_run=self.dry_run)
!!   File "/usr/lib/python2.7/distutils/dir_util.py", line 76, in mkpath
    "could not create '%s': %s" % (head, exc.args[-1]))
!! ImportError: Building module samplerbox_audio failed: ["DistutilsFileError: could not create '/root/.pyxbld': Read-only file system\n"]

1 个答案:

答案 0 :(得分:14)

来自help(pyximport.install)

  

默认情况下,已编译的模块最终会以.pyxbld结尾   用户主目录中的目录。传递不同的道路   因为build_dir会覆盖此内容。

因此,当您致电build_dir以使其使用您的读/写系统时,请将pyximport.install作为参数传递。