[PYTHON] Comment utiliser gcc lors de la compilation d'une extension depuis setup.py sur Mac

Lors de la liaison de code C ++ à l'aide de swig, créez un objet partagé à l'aide de setup.py. Quand j'essaye de le faire sur Mac OS X, la bibliothèque elle-même est compilée avec g ++, mais quand j'essaye de la compiler avec Clang, j'obtiens une erreur.

Comme ça.

$ python setup.py build_ext             
running build_ext
building '_Mykytea' extension
cc -fno-strict-aliasing -fno-common -dynamic -arch i386 -arch x86_64 -I/usr/local/include -I/usr/local/opt/sqlite/include -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c mykytea_wrap.cxx -o build/temp.macosx-10.8-intel-2.7/mykytea_wrap.o
(Abréviation)
In file included from mykytea_wrap.cxx:3481:
In file included from ./mykytea.hpp:9:
/usr/local/include/kytea/kytea.h:128:24: error: implicit instantiation of undefined template
      'kytea::Dictionary<kytea::ModelTagEntry>'
        if(dict_ != 0) delete dict_;
                       ^
/usr/local/include/kytea/kytea.h:34:26: note: template is declared here
template <class T> class Dictionary;
                         ^
2 warnings and 1 error generated.
error: command 'cc' failed with exit status 1

Donc, si vous n'appelez pas Clang, vous pouvez le laisser seul et le compiler avec gcc.

 $ ARCHFLAGS="-arch x86_64" CC=gcc CXX=g++ python setup.py build_ext

Et c'est suffisant.

En fait, il peut être préférable de l'écrire dans setup.py, mais je me demande s'il est possible de déterminer dynamiquement avec quoi la bibliothèque d'origine a été compilée.

Donc, félicitations la liaison Python de Kytea est maintenant compatible avec la dernière version 0.4.4.

Recommended Posts

Comment utiliser gcc lors de la compilation d'une extension depuis setup.py sur Mac
Comment utiliser SWIG de WAF
Comment installer mysql-connector-python sur Mac
Comment utiliser Dataiku sous Windows
Remarques sur l'utilisation de pywinauto
Remarques sur l'utilisation des featuretools
Comment installer OpenCV sur Mac
Comment utiliser l'homebrew dans Debian
Utilisez gcc-4.2 lors de la compilation de Python (MacOS)
Mettre à jour Mac Python de 2 à 3
Comment installer drobertadams / toggl-cli sur Mac
[TF] Comment utiliser Tensorboard de Keras
Je veux utiliser Linux sur mac
Comment utiliser l'Assistant Google sur Windows 10
Comment effacer Python 2.x sur Mac.
Mémorandum sur l'utilisation du python gremlin
Comment lire les variables d'environnement à partir d'un fichier .env avec PyCharm (pour Mac)
Étude de Python Hour7: Comment utiliser les classes
Comment utiliser Python Kivy ④ ~ Exécution sur Android ~
Lorsque j'essaye d'utiliser le notebook Jupiter sur Mac, je ne peux sélectionner que python2
Utilisez Tor pour vous connecter depuis urllib2 [Python] [Mac]
Comment passer des arguments lors de l'appel d'un script python depuis Blender sur la ligne de commande
Préparation à l'utilisation de aws cli sur Mac OS X
Comment utiliser Keras ~ De la simple génération de modèle à CNN ~
[Ansible] Comment utiliser l'authentification par mot de passe SSH lors de l'exécution d'ansible
Comment utiliser le contrôleur audio C216 sur Arch Linux
Remarques sur la façon d'utiliser lors de la combinaison de pandas.
Préférences pour générer des GIF animés à partir de Python sur Mac
Comment utiliser le stockage Azure Table de Django (PTVS)
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Pour utiliser TensorFlow sur des GPU inférieurs à Titan
Comment quitter lors de l'utilisation de Python dans Terminal (Mac)
Autoencoder dans Chainer (Remarques sur l'utilisation de + trainer)
Comment utiliser Django avec Google App Engine / Python
[Astuces] Comment utiliser l'iPhone comme caméra Web sous Linux
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser Seaboan
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []