2015-05-06 11 views
6

Mein cython/pyximport Code funktioniert sehr gut auf einem Lese-/Schreib-Dateisystem.Wo kompiliert Cython Pycximport?

Aber (für Testzwecke), ich muss es auf einem lesen nur Dateisystem versuchen.

Wie ändere ich das temporäre Cython/Pycximport-Verzeichnis? (Wo kommt es den Job? Also die on-the-fly Kompilierung?)

Wie dieses „Arbeitsverzeichnis“, um irgendwo anders als das aktuelle Verzeichnis, zum Beispiel /tmp/ (die nicht ro, aber 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"] 

Antwort

12

Von help(pyximport.install)

standardmäßig kompilierten Module werden in einem .pyxbld Verzeichnis in dem Home-Verzeichnis landen. Wenn Sie einen anderen Pfad als als build_dir übergeben, wird dies überschrieben.

so build_dir als Argument übergeben, wenn Sie pyximport.install rufen, um es Ihre Lese-/Schreib-System verwenden zu machen.