Amazon Linux2にvenv/Anacondaで隔離されたPython3環境を構築
Amazon Web Services (AWS) が提供しているAmazon Linuxに新世代のAmazon Linux 2(以下AL2)がリリースされました。
AL2にはデフォルトでは Python 2.7 系がインストールされているため、Python3 を利用したい開発者向けに
- Python インストール後に venv で環境構築
- Anaconda で Python まるごとまるっとインストール
それぞれで Python 3.6 向けの環境を構築する方法を紹介します。
環境構築は一部宗教論争的な側面もありますが、個人的には
- venv : Python で何かやりたい人向け
- Anaconda : ソフトウェアが Python で書かれているので Python 実行環境が必要な人向け
というような印象を持っています。
AL2デフォルトのPythonは2.7.14
AL2にはデフォルトで Python 2.7.14 がインストールされています。
$ python -V Python 2.7.14
venv で環境構築
venv とは
venv
は Python3系向けの仮想環境を構築するモジュールです。
以前は pyvenv
コマンドで仮想環境を構築することが推奨されていましたが、3.6 以降は deprecated 扱いです。
Note The pyvenv script has been deprecated as of Python 3.6 in favor of using python3 -m venv to help prevent any potential confusion as to which Python interpreter a virtual environment will be based on.
Python3 をインストール
AL2 にデフォルトでインストールされているPythonは2.7のため、3 系 Python を YUM でインストールします。
$ yum search python3 Loaded plugins: extras_suggestions, langpacks, priorities, update-motd ============================= N/S matched: python3 ============================= python3-pip.noarch : A tool for installing and managing Python3 packages python3-test.x86_64 : The self-test suite for the main python3 package python3.x86_64 : Interpreter of the Python programming language python3-Cython.x86_64 : A language for writing Python extension modules python3-debug.x86_64 : Debug version of the Python runtime python3-devel.x86_64 : Libraries and header files needed for Python development python3-libs.x86_64 : Python runtime libraries python3-libs.i686 : Python runtime libraries python3-rpm-macros.noarch : RPM macros for building Python 3 packages python3-setuptools.noarch : Easily build and distribute Python 3 packages python3-tkinter.x86_64 : A GUI toolkit for Python python3-tools.x86_64 : A basic graphical development environment for Python python3-wheel.noarch : A built-package format for Python Name and summary matches only, use "search all" for everything. $ sudo yum install -y python3
動作確認
$ python3 -V Python 3.7.0rc1
隔離された仮想環境を作成
venv
モジュールで仮想環境を作成します。
シンタックスは python3 -m venv /path/to/new/virtual/environment
です。
$ python3 -m venv test-venv $ source test-venv/bin/activate
仮想環境から抜けるときは $ deactivate
を実行するだけです。
モジュール管理
モジュールをインストールするには $ python3 -m pip install
コマンドを使います
$ python3 -m pip install requests ...
インストール済みモジュール一覧を確認するには $ python3 -m pip freeze
コマンドを使います。
$ python3 -m pip freeze certifi==2018.11.29 chardet==3.0.4 idna==2.8 requests==2.21.0 urllib3==1.24.1
補足:YUM vs amazon-linux-extras
Amazon Linux 2リリース当初はPython3パッケージはYUMでは提供されておらず、amazon-linux-extras 経由で提供されていました。
$ sudo amazon-linux-extras 0 ansible2 disabled [ =2.4.2 ] 1 emacs disabled [ =25.3 ] 2 memcached1.5 disabled [ =1.5.1 ] 3 nginx1.12 disabled [ =1.12.2 ] 4 postgresql9.6 disabled [ =9.6.6 ] 5 python3=latest disabled [ =3.6.2 ] 6 redis4.0 disabled [ =4.0.5 ] ...
一方で extras パッケージは core に格上げすることがあります。
Q. Will packages in extras be moved to “core” with Long Term Support? Over time, rapidly evolving technologies in extras will continue to mature and stabilize and may be added to the Amazon Linux 2 "core" to which the Long Term Support policies apply.
2018年12月時点では、Python3パッケージは core に格上げされたため、amazon-linux-extras
には存在しません。
Anaconda で環境構築
Anaconda はデータサイエンス・機械学習向けの Python プラットフォームです。 「プラットフォーム」らしく、Python だけでなく、パッケージ管理、頻繁に利用されるライブラリなど、諸々が一緒にインストールされます。
インストーラーのダウンロード
次のダウンロードページから CUI インストーラーをダウンロードします。
$ URL=https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh $ wget $URL
インストール
インストーラーをシェル(Bash)で呼び出すだけです
$ bash Anaconda3-5.0.1-Linux-x86_64.sh Welcome to Anaconda3 5.0.1 In order to continue the installation process, please review the license agreement. Please, press ENTER to continue >>> ... Do you accept the license terms? [yes|no] [no] >>> yes # ここで yes Anaconda3 will now be installed into this location: /home/ec2-user/anaconda3 - Press ENTER to confirm the location - Press CTRL-C to abort the installation - Or specify a different location below [/home/ec2-user/anaconda3] >>> # ここで ENTER PREFIX=/home/ec2-user/anaconda3 installing: python-3.6.3-hc9025b9_1 ... ... installation finished. Do you wish the installer to prepend the Anaconda3 install location to PATH in your /home/ec2-user/.bashrc ? [yes|no] [no] >>> yes Appending source /home/ec2-user/anaconda3/bin/activate to /home/ec2-user/.bashrc A backup will be made to: /home/ec2-user/.bashrc-anaconda3.bak For this change to become active, you have to open a new terminal. Thank you for installing Anaconda3!
動作確認
$ which python3 ~/anaconda3/bin/python3 $ python3 -V Python 3.6.3 :: Anaconda, Inc.
Anaconda 版 Python がインストールされています。
隔離された仮想環境を作成
conda create
で仮想環境を作成します。
$ conda create -n conda-test Solving environment: done ## Package Plan ## environment location: /home/ec2-user/anaconda3/envs/conda-test Proceed ([y]/n)? yes Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use: # > source activate conda-test # # To deactivate an active environment, use: # > source deactivate # $ source activate conda-test $ conda info -e # conda environments: # base /home/ec2-user/anaconda3 conda-test * /home/ec2-user/anaconda3/envs/conda-test
仮想環境から抜けるときは $ source deactivate
を実行するだけです。
モジュール管理
モジュールをインストールするには conda install
コマンドを使います
$ conda install tensorflow Solving environment: done ## Package Plan ## environment location: /home/ec2-user/anaconda3/envs/conda-test added / updated specs: - tensorflow ...
補足
Anaconda は conda コマンド経由で様々な操作を行います。
詳細はマニュアルをご確認下さい
https://conda.io/docs/user-guide/overview.html
Lambda 実行環境は Amazon Linux 1
AWS Lambda の実行環境は Amazon Linux 2ではなく、 Amazon Linux 1(amzn-ami-hvm-2017.03.1)です。
Cで書かれた拡張ライブラリをAL2でビルドすると、互換性のために、Lambdaの実行に失敗する可能性がございます。ご注意ください。
まとめ
venv は自分の理想とする環境を構築するイメージに対して、Anaconda は全盛り状態から必要なものをつまみ食いするイメージです。
プロジェクト・開発チームなど様々な要因により、理想とする開発環境は大きく変わります。
要件に応じて venv と Anaconda をうまく使い分けていただければと思います。