Dieser Artikel ist der 9. Tag von ** ADVENTAR ** Python Adventskalender 2015, nicht Qiita.
delocate ist ein Dienstprogramm für Radpakete für OS X. Matthew Brett
Es hat die folgenden Funktionen
Lassen Sie mich Ihnen ein Beispiel geben.
Als Beispiel werde ich die neueste Version der Raddatei des Zellensimulators namens E-Cell verwenden. Wenn Sie vor dem Löschen eine eigene Raddatei erstellen möchten https://github.com/ecell/ecell4-wheels/blob/master/.travis.yml Bitte beachten Sie vor dem Löschen
Versuchen Sie zuerst den Befehl delocate-listdeps
> delocate-listdeps --all dist/ecell4-4.0.0b2-cp27-none-macosx_10_11_intel.whl
/usr/lib/libSystem.B.dylib
/usr/lib/libc++.1.dylib
/usr/local/Cellar/gsl/1.16/lib/libgsl.0.dylib
/usr/local/Cellar/gsl/1.16/lib/libgslcblas.0.dylib
/usr/local/Cellar/hdf5/1.8.16/lib/libhdf5.10.dylib
/usr/local/Cellar/hdf5/1.8.16/lib/libhdf5_cpp.11.dylib
Die Raddatei ecell4-4.0.0b2-cp27-none-macosx_10_11_intel.whl ist Homebrew Sie können sehen, dass es von gsl und hdf5 abhängt.
--all
Standardmäßig ohne Optionen/usr/lib
Wann/system
Zeigt die Bibliotheken nicht an.
(Es scheint, dass die Bibliotheken in ihnen unter OSX üblich sind und Sie sich keine Sorgen machen müssen.)
Auch wenn das oben genannte Radpaket so verteilt ist, wie es ist
Nur Leute können es benutzen. (Um genau zu sein, ist nur der dritte Punkt "Ich kann das Rad nicht einbauen", anstatt es nicht verwenden zu können. Details werden später beschrieben.)
Dies liegt daran, dass das Radpaket erwartet, dass der von `` `delocate-listdeps``` bestätigte Pfad zur Bibliothek dynamisch verknüpft wird.
Der Befehl `` `Delocate-Wheel``` schreibt dies neu, damit es nicht von der Umgebung abhängt. Ein Beispiel wird gezeigt.
> delocate-wheel dist/ecell4-4.0.0b2-cp27-none-macosx_10_11_intel.whl
> delocate-listdeps dist/ecell4-4.0.0b2-cp27-none-macosx_10_11_intel.whl
@loader_path/.dylibs/libgsl.0.dylib
@loader_path/.dylibs/libgslcblas.0.dylib
@loader_path/.dylibs/libhdf5.10.dylib
@loader_path/.dylibs/libhdf5_cpp.11.dylib
@loader_path/libhdf5.10.dylib
@loader_path/libsz.2.0.0.dylib
Sie können sehen, dass der Befehl "Rad verschieben" die Dylib in den Baum der erwarteten Pfadräder verschiebt. Der erwartete Pfad hat sich nicht nur geändert, sondern die Dylib wurde kopiert, um in das Radpaket aufgenommen zu werden. (Sie können es sehen, indem Sie whl in zip umbenennen und entpacken.)
Mit dem Befehl delocate-rad konnten die abhängigen Bibliotheken in das Rad aufgenommen werden. Das letzte Problem besteht jedoch darin, dass nur die oben erwähnte "OSX-Version 10.11" unterstützt werden kann.
Wie in [PEP 0427] angegeben (https://www.python.org/dev/peps/pep-0427/) Dies liegt daran, dass das letzte Tag im Raddateinamen die Plattform angibt. (Dies ist nun macosx_10_11_intel.)
Der Befehl zum Hinzufügen einer Plattform lautet `` `delocate-addplat```. Hier ist ein Beispiel.
> delocate-addplat --rm-orig -x 10_9 -x 10_10 dist/ecell4-4.0.0b2-cp27-none-macosx_10_11_intel.whl
> ls dist/
ecell4-4.0.0b2-cp27-none-macosx_10_11_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl
Sie können sehen, dass die Plattform hinzugefügt wurde.
Ich bin es leid, es zusammenzustellen, also ist es das.
Recommended Posts