[PYTHON] Présentation de l'utilitaire de package de roues delocate pour Mac OS X

Cet article est le 9ème jour du ** ADVENTAR ** Python Advent Calendar 2015, pas Qiita.

Qu'est-ce que délocaliser

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.

Afficher les bibliothèques dépendantes avec la commande delocate-listdeps

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.

--allPar défaut sans options/usr/libQuand/systemN'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.)

Copier et relier des bibliothèques dépendantes avec la commande delocate-wheel

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)

Ajouter une plateforme avec la commande delocate-addplat

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.

Résumé

Je suis fatigué de le mettre ensemble, alors c'est tout.

Recommended Posts

Présentation de l'utilitaire de package de roues delocate pour Mac OS X
Création d'un environnement pour "Tello_Video" sur Mac OS X
Créer un environnement de développement Python sur Mac OS X
Construction d'environnement Python pour les débutants en programmation (Mac OS)
Mémo sur Mac OS X
Installez Sphinx sur MacOSX
Installation de scikit-learn (Mac OS X)
Installez mitmproxy sur Mac OS X
Installez pgmagick sur Mac OS X 10.9
[Juste une note] Jusqu'à ce que Keras + TensorFlow fonctionne sur Mac OSX Sierra
Introduction à la base de données Graph Neo4j en Python pour les débutants (pour Mac OS X)
Construction de l'environnement de développement Mac OS X Mavericks 10.9.5
Aws-cli installé sur Mac OS X Lion
[Mac] Création d'un environnement virtuel pour Python
Construction de l'environnement de développement Mac OS X Yosemite 10.10
Mémo de construction de l'environnement de développement Mac OS X
Exécutez NASA CEA sur Mac OS X
Créer un environnement de développement Python en 10 minutes (Mac OS X + Visual Studio Code)