[PYTHON] Comment configurer et compiler l'environnement Cython

Environnement requis

(Ajouté le 05.04.2020) Pour Windows, le chemin de la compilation est assez déroutant. Il y a plusieurs indices sur la page officielle d'Ichiou Cython, mais ... c'est fastidieux à lire:

De plus, afin d'utiliser le compilateur de Cython, il est nécessaire d'exécuter Python (Cython) sur un émulateur de terminal avec l'environnement de construction correctement configuré. Le plus simple est

1.Faire fonctionner l'environnement python avec le shell Windows standard 2. Lancez l'invite de commande Visual Studio et exécutez setup.py de python là

Mais si vous souhaitez utiliser l'environnement virtuel d'Anaconda, cela peut être très déroutant. Pendant les essais et erreurs, où et quel type de variables d'environnement doivent être configurées pour qu'elles puissent être utilisées à l'invite anaconda ...

Installation

Utilisez pip et vous avez terminé tout de suite. Je pense que je n'avais pas besoin de privilèges d'administrateur ...

$ pip install cython

Vérifiez s'il peut être compilé

Copiez le code depuis Cython: tutoriel de base et vérifiez s'il peut être compilé:

  1. Créez un répertoire de développement. Créez un fichier dans ce fichier.
  2. Créez un fichier ".pyx". Ceci est le code source.
  3. Créez un fichier "setup.py". Ce sera le fichier de construction et spécifier comment il sera compilé.
  4. Ouvrez l'émulateur de terminal dans le répertoire de développement et exécutez python setup.py build_ext --inplace. Pour Windows, vous devez le faire sur l'invite de commande du développeur pour utiliser les commandes requises et inclure des fichiers.

Lors de l'exécution de setup.py '', il peut être installé dans la bibliothèque Python sans l'option --inplace`` (non confirmée).

Si la compilation réussit, setup.py se terminera par un message "Terminé". Dans ce cas, vous pouvez importer le fichier compilé en définissant ʻimport <nom de fichier pyx> `sur la console python.

En revanche, si la compilation échoue, un message «Échec» apparaîtra. Vous pouvez voir plus de détails sur l'erreur en revenant un peu avant la sortie de l'émulateur de terminal. La plupart du temps, je pense que c'est une erreur dans le fichier .pyx ou que le fichier include / link est manquant.

Ajouter un fichier d'en-tête de bibliothèque

Extrait de Stack Overflow Answer.

Lorsque vous utilisez numpy de Cython, les fichiers d'en-tête C de la bibliothèque numpy sont requis. Il est facile à comprendre lors de la compilation directe à l'aide de gcc ou autre, mais l'option `` -I '' ne peut pas être utilisée lors de la compilation via setup.py.

Dans ce cas, utilisez l'objet ʻExtension`` de `distutils``:

setup.py


from distutils.core import setup, Extension
from Cython.Build import cythonize
import numpy

setup(
    ext_modules=[
        Extension("my_module", ["my_module.c"],
                  include_dirs=[numpy.get_include()]),
    ],
)

Le deuxième argument dans ce cas spécifie une liste de fichiers source (chemin absolu ou relatif). Répertoriez les chemins d'inclusion que vous souhaitez ajouter avec l'argument de mot clé `ʻinclude_dirs``.

Ou si vous regardez la documentation Cython (http://cython.readthedocs.io/en/latest/src/reference/compilation.html), le cythonize () '' lui-même a une option appelée include_dirs`` Apparemment:

setup.py


from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = "My hello app",
    ext_modules = cythonize("src/*.pyx", include_path = [...]),
)

numpy fournit une fonction appelée `` get_include () '', vous pouvez donc l'utiliser, et même dans la bibliothèque native, vous pouvez utiliser pkg-config ou n'importe quelle sortie.

Recommended Posts

Comment configurer et compiler l'environnement Cython
Comment configurer un environnement Python à l'aide de pyenv
Comment configurer WSL2 sur Windows 10 et créer un environnement d'étude pour les commandes Linux
Comment configurer SVM à l'aide d'Optuna
Comment configurer et utiliser OMC Log Analytics - Version Linux-
Comment configurer l'environnement de développement d'ev3dev [version Windows]
Comment configurer une forêt aléatoire à l'aide d'Optuna
Comment configurer une forêt aléatoire à l'aide d'Optuna
Comment configurer un serveur de développement local
Comment configurer l'authentification par clé publique avec SSH
Comment préparer l'environnement pour Google Colab avec le cours avancé d'apprentissage automatique de Coursera
Comment configurer une passerelle VPN pour établir une connexion entre Alibaba Cloud et AWS
Comment utiliser Docker pour conteneuriser votre application et comment utiliser Docker Compose pour exécuter votre application dans un environnement de développement
Comment configurer Ubuntu pour le sous-système Windows pour Linux 2 (WSL2)
Comment utiliser pyenv et pyenv-virtualenv à votre manière
Vue d'ensemble de l'environnement virtuel Python et comment le créer
Comment définir un raccourci pour basculer entre pleine largeur et demi-largeur dans IBus
Remarques sur la création d'un environnement LAMP à l'aide de Vagrant et VirtulBox
Comment obtenir et définir le nom du serveur NTP par DHCP
Comment installer et utiliser Tesseract-OCR
Comment utiliser les variables d'environnement Serverless Framework et Python et gérer les étapes
Comment utiliser Jupyter Notebook sans polluer votre environnement avec Docker
Tutoriel Cython: Comment utiliser shared_ptr
Configurer l'environnement Python sur CentOS
Comment utiliser .bash_profile et .bashrc
Comment installer et utiliser Graphviz
Comment accélérer les calculs Python
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Résoudre des puzzles et 15 puzzles
Comment configurer un notebook Jupyter à la destination SSH (AWS EC2)
Essayez de mettre en place un environnement de test Vim assez sérieusement (pour Python)
[Environnement de développement] Comment créer un ensemble de données proche de la base de données de production
[Blender] Comment définir shape_key avec un script
[Linux] Comment subdiviser des fichiers et des dossiers
Comment empaqueter et distribuer des scripts Python
Comment diviser et enregistrer un DataFrame
Comment accélérer la belle instanciation de soupe
Comment créer un environnement de traduction sphinx
Comment définir optuna (comment écrire un espace de recherche)
Comment installer et utiliser pandas_datareader [Python]
Comment créer un environnement NVIDIA Docker
Comment régler l'heure du serveur sur l'heure japonaise
Comment préparer l'environnement de développement Python [Mac]
Comment configurer XG Boost à l'aide d'Optuna
Configurer Pipenv sur Pycharm dans un environnement Windows
Comment installer votre propre autorité de certification (racine)
python: Comment utiliser les locals () et globals ()
Comment utiliser Tensorflow dans un environnement Docker
Votre pile réseau est-elle correctement configurée?
[Python] Comment calculer MAE et RMSE
Comment utiliser le zip Python et énumérer
Comment ajouter un module python à l'environnement anaconda
Notes sur la façon d'exécuter Cython sur OSX
Comment utiliser is et == en Python
Comment utiliser les pandas Timestamp et date_range
Comment installer le tissu et comment l'utiliser
Comment écrire des commentaires pydoc et multi-lignes