2015-05-06 21 views
6

Il mio codice cython/pyximport funziona molto bene su un filesystem di lettura/scrittura.Dove compila cython pyximport?

Ma (a scopo di test), ho bisogno di provarlo su un file system di sola lettura.

Come modificare la directory temporanea cython/pyximport? (Dove fa fare il lavoro? Cioè la compilazione on-the-fly?)

come impostare questa "directory di lavoro" da qualche altra parte che la directory corrente, ad esempio /tmp/ (che non è ro, ma 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"] 

risposta

12

Da help(pyximport.install)

Per impostazione predefinita, i moduli compilati finirà in una directory .pyxbld nella directory home dell'utente. Il passaggio di un altro percorso come build_dir sostituirà questo.

così passare build_dir come argomento quando si chiama pyximport.install per rendere più utilizzare il sistema di lettura/scrittura.