Cet article est le 9ème jour du ** ADVENTAR ** Python Advent Calendar 2015, pas Qiita.
delocate est un utilitaire de package de roues pour OS X. Matthew Brett
Il a les fonctions suivantes
--Afficher les bibliothèques dont dépend la roue --Copier et réécrire les bibliothèques dépendantes dans la roue pour les lier
Laisse moi te donner un exemple.
Pour un exemple, j'utiliserai la dernière version du fichier de roue du simulateur de cellule appelé E-Cell. Si vous souhaitez créer votre propre fichier de roue avant de le délocaliser https://github.com/ecell/ecell4-wheels/blob/master/.travis.yml Veuillez vous référer à avant de délocaliser
Essayez d'abord la commande 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
Le fichier de roue ecell4-4.0.0b2-cp27-none-macosx_10_11_intel.whl est homebrew Vous pouvez voir que cela dépend de gsl et hdf5.
--all
Par défaut sans options/usr/lib
Quand/system
N'affiche pas les bibliothèques à l'intérieur.
(Il semble que les bibliothèques qu'ils contiennent sont courantes sous OSX et que vous n'avez pas à vous en soucier.)
Même si le paquet de roues ci-dessus est distribué tel quel
Seules les personnes peuvent l'utiliser. (Pour être exact, seul le troisième point est "Je ne peux pas installer la roue" plutôt que de ne pas pouvoir l'utiliser. Les détails seront décrits plus tard.)
En effet, le package wheel s'attend à ce que le chemin confirmé par `` delocate-listdeps '' vers la bibliothèque soit lié dynamiquement.
La commande `` delocate-wheel '' réécrit ceci afin qu'il ne dépende pas de l'environnement. Un exemple est montré.
> 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
Vous pouvez voir que la commande delocate-wheel déplace dylib dans l'arborescence des roues de chemin attendues. Non seulement le chemin attendu a changé, mais le dylib a été copié pour être inclus dans le paquet de roues. (Vous pouvez le voir en renommant whl en zip et en le décompressant)
La commande delocate-wheel a permis aux bibliothèques dépendantes d'être incluses dans la roue, mais le dernier problème reste que seule la "version OSX 10.11" mentionnée ci-dessus peut être prise en charge.
Comme spécifié dans PEP 0427 En effet, la dernière balise du nom du fichier de roue indique la plate-forme. (Maintenant, c'est macosx_10_11_intel.)
La commande pour ajouter une plate-forme à cela est
delocate-addplat```.
Voici un exemple.
> 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
Vous pouvez voir que la plateforme a été ajoutée.
Je suis fatigué de le mettre ensemble, alors c'est tout.
Recommended Posts