Récemment, il semble que Anaconda soit souvent utilisé pour construire rapidement un environnement Python pour l'analyse des données.
Pour Anaconda et sa configuration minimale Miniconda, utilisez le gestionnaire de packages inclus conda. Vous pouvez l'utiliser pour gérer l'ensemble de l'environnement, y compris Python lui-même. Dans le développement Python conventionnel, il était nécessaire de créer un environnement à l'aide d'outils individuels conformément à l'objectif suivant.
Avec Anaconda / Miniconda, cela ne peut être fait qu'avec conda.
conda create
conda install
Dans des situations telles que le développement d'équipe ou l'exécution de livrables sur un serveur de production, il est utile de pouvoir reconstruire rapidement l'environnement construit sur une autre machine.
Lors de l'utilisation de pip et pyenv, la version de la bibliothèque et de Python lui-même était gérée en préparant des fichiers tels que requirements.txt
et .python-version
, respectivement.
Avec conda, vous pouvez facilement reconstruire votre environnement à partir de là en exportant vos paramètres d'environnement au format YAML.
La méthode détaillée est expliquée ci-dessous.
Anaconda est une plate-forme tout-en-un qui comprend de nombreux packages majeurs, mais si vous souhaitez créer l'environnement minimum requis pour chaque projet comme cette fois, il est plus intelligent d'utiliser Miniconda.
Pour installer Miniconda, démarrez le programme d'installation téléchargé comme décrit dans ici.
$ bash Miniconda2-latest-MacOSX-x86_64.sh
Pour Mac, vous pouvez également installer avec brew cask.
$ brew install Caskroom/cask/miniconda
Dans ce qui suit, il est supposé que Miniconda est déjà installé et que chaque commande comprenant conda est dans le PATH.
Ici, créons un environnement Python 3.5 avec le nom myenv. Puisque conda traite Python lui-même et les packages de la même manière comme des composants de l'environnement, les packages peuvent être installés en même temps.
$ conda create --name myenv python=3.5 numpy=1.11.1
Activez l'environnement que vous avez créé.
$ source activate myenv
Vous pouvez également installer des packages supplémentaires.
$ conda install scipy
Tous les packages enregistrés avec PyPI ne peuvent pas être installés avec conda. Les packages qui ne peuvent pas être installés avec conda peuvent être installés avec pip comme auparavant. pip est inclus dans l'environnement créé par conda depuis le début.
$ pip install peewee
Vous pouvez exporter vos paramètres d'environnement au format YAML en exécutant conda env export
avec votre environnement activé.
$ conda env export > myenv.yaml
Le fichier exporté ressemble à ceci: Les packages installés avec pip sont également exportés correctement.
myenv.yaml
name: myenv
dependencies:
- mkl=11.3.3=0
- numpy=1.11.1=py35_0
- openssl=1.0.2h=1
- pip=8.1.2=py35_0
- python=3.5.1=5
- readline=6.2=2
- scipy=0.17.1=np111py35_1
- setuptools=23.0.0=py35_0
- sqlite=3.13.0=0
- tk=8.5.18=0
- wheel=0.29.0=py35_0
- xz=5.2.2=0
- zlib=1.2.8=3
- pip:
- peewee==2.8.1
Avec ce fichier, vous pouvez facilement reconstruire le même environnement sur une autre machine.
$ conda env create --file myenv.yaml
Le fichier de configuration exporté par export comprendra également les packages installés en raison des dépendances des packages installés intentionnellement. Si vous souhaitez spécifier uniquement les bibliothèques qui sont utilisées directement comme structure du projet, vous devez écrire vous-même le fichier de configuration.
myenv.yaml
name: myenv
dependencies:
- python=3.5.1
- numpy=1.11.1
- scipy=0.17.1
- pip:
- peewee==2.8.1
La recommandation est de suivre Gemfile
, Gemfile.lock
dans Ruby's Bundler, de décrire uniquement la bibliothèque à utiliser directement dans myenv.yaml
, et d'exporter l'environnement créé en utilisant ceci. La méthode consiste à l'enregistrer avec un nom comme myenv.frozen.yaml
.
De cette façon, vous pouvez consulter myenv.yaml
pour déterminer quels packages utiliser directement dans votre projet, et utiliser myenv.frozen.yaml
pour reconstruire exactement le même environnement, y compris les packages dépendants.
Recommended Posts