Reputation: 46393
My cython
/ pyximport
code works very well on a read/write filesystem.
But (for testing purposes), I need to try it on a read only filesystem.
How to change the cython / pyximport temporary directory ? (where does it do the job? i.e. the on-the-fly compilation?)
How to set this "working directory" to somewhere else than the current directory, for example /tmp/
(which is not ro
, but rw
) ?
Traceback:
!! 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"]
Upvotes: 9
Views: 2390
Reputation: 84
From Cython documentation Link
pass the build_dir argument with a value equals to the path where you want the modules to be compiled and that will override the home directory
for example
pyximport.install(build_dir="/mnt/f/")
Upvotes: 1
Reputation: 30941
From help(pyximport.install)
By default, compiled modules will end up in a
.pyxbld
directory in the user's home directory. Passing a different path asbuild_dir
will override this.
so pass build_dir
as an argument when you call pyximport.install
to make it use your read/write system.
Upvotes: 16