Cloud9のPython環境を作る
最初「Cloud9を作成する」と書いて思いました。Cloud9を作っているのはAWSでぽんすけにそんな能力は塵ほどもありません。作るのは「Cloud9の環境」です。
Cloud9の環境を作る
- AWSのマネジメントコンソール > [Cloud9] > [Create enviroment]ボタン
- [Name]に環境名を入力 > [Next step]ボタン
- 設定項目を選択(VPCやSubnetも設定できる) > [Next step]ボタン
- 内容を確認 > [Create enviroment]ボタン > しばし待つ
- できた!
設定項目例
設定項目 | 設定値 | 参考になりそうなサイト |
---|---|---|
Environment type | Create a new EC2 instance for environment (direct access) | |
Instance type | t2.micro (1 GiB RAM + 1 vCPU) | |
Platform | Amazon Linux 2 下の表を参考に決める |
Amazon Linux は何系のディストリビューションに該当するのか – Amazon Web Service(AWS)導入開発支援 |
Cost-saving setting | After 30 minutes(default) | 【AWS Cloud9 の使い方】最初に覚えておくべき機能まとめ | 初心者向け完全無料プログラミング入門 |
Platform | 似たようなOS | デフォルトのPython |
---|---|---|
Amazon Linux | RHEL5-6 / CentOS5-6 | Python3.6 |
Amazon Linux 2 | RHEL7 / CentOS7 | Python3.7 |
Ubuntu Server | Ubuntu | わかったら書く |
Pythonとpipのバージョンを設定する
Cloud9の環境によってPythonやpipのバージョンは違うので、使いたいバージョンに設定していきます。
# Pythonのバージョンは3.8がいいな $ python -V Python 3.7.9 # pipも古いな・・・・ $ python -m pip -V pip 9.0.3 from /usr/lib/python3.7/site-packages (python 3.7)
pyenv使ってバージョンをPython3.8にする
参考 : pyenvのインストール、使い方、pythonのバージョン切り替えできない時の対処法 - Qiita
# pyenvをGitHubからCloneする $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv Cloning into '/home/ec2-user/.pyenv'... remote: Enumerating objects: 67, done. remote: Counting objects: 100% (67/67), done. remote: Compressing objects: 100% (54/54), done. remote: Total 18814 (delta 26), reused 20 (delta 7), pack-reused 18747 Receiving objects: 100% (18814/18814), 3.80 MiB | 16.20 MiB/s, done. Resolving deltas: 100% (12760/12760), done. # バージョンを確認する $ ~/.pyenv/bin/pyenv --version pyenv 1.2.23 # .bashrcに $ vi ~/.bashrc # PATHを通す & pythonの実行パスの差し替えられるように設定して、 $ cat ~/.bashrc | grep pyenv export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" # 反映する $ source ~/.bashrc # PATHを確認して $ printenv PATH | sed -e 's/:/:\n/g' | grep pyenv /home/ec2-user/.pyenv/shims: /home/ec2-user/.pyenv/bin: # バージョンを確認する $ pyenv --version pyenv 1.2.23 # インストールできるPython3.8を確認する $ pyenv install -l | grep 3.8. 3.8.0 3.8-dev 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 miniconda-3.8.3 miniconda3-3.8.3 miniconda3-3.8-4.8.2 miniconda3-3.8-4.8.3 miniconda3-3.8-4.9.2 # Python3.8.7をインストールする $ pyenv install 3.8.7 Downloading Python-3.8.7.tar.xz... -> https://www.python.org/ftp/python/3.8.7/Python-3.8.7.tar.xz Installing Python-3.8.7... WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib? Installed Python-3.8.7 to /home/ec2-user/.pyenv/versions/3.8.7 # Yumをアップデートして、 $ sudo yum -y update ...省略... Complete! # PythonのインストールでWARNINGになった不足なものをインストールする $ sudo yum -y install bzip2 Loaded plugins: extras_suggestions, langpacks, priorities, update-motd 229 packages excluded due to repository priority protections Package bzip2-1.0.6-13.amzn2.0.2.x86_64 already installed and latest version Nothing to do # Python3.8に切り替える $ pyenv versions * system (set by /home/ec2-user/.pyenv/version) 3.8.7 $ pyenv global 3.8.7 # 使いたいバージョンに設定できた! $ python -V Python 3.8.7 $ python -m pip -V pip 20.2.3 from /home/ec2-user/.pyenv/versions/3.8.7/lib/python3.8/site-packages/pip (python 3.8)
プロジェクト設定をする
- 歯車マーク > [Preferences] > [Project Settings]
- [Code Editor (Ace)]
- [Soft Tabs]:ONにするとタブキーで指定された数のスペースが挿入される
- [On Save, Strip Whitespace]:ONにすると保存でファイルから不要なスペースとタブを削除する
- [Python Support]
- [Enable advanced (jedi) Python code completion]:ONにするとコードが補完を有効になる
基本のライブラリをインストールする
どこでも使いそうな以下をインストールしておきます。
ライブラリ | 概要 | 参考になるサイト |
---|---|---|
wheel | Pythonのパッケージの形式であるwheel(ホイール) | Wheel vs Egg — Python Packaging User Guide ドキュメント |
ikp3db | Python3でデバックするのに使う | ikp3db · PyPI |
$ python -m pip install wheel Collecting wheel Downloading wheel-0.36.2-py2.py3-none-any.whl (35 kB) Installing collected packages: wheel Successfully installed wheel-0.36.2 $ python -m pip install ikp3db Collecting ikp3db Using cached ikp3db-1.4.1.tar.gz (24 kB) Building wheels for collected packages: ikp3db Building wheel for ikp3db (setup.py) ... done Created wheel for ikp3db: filename=ikp3db-1.4.1-cp38-cp38-linux_x86_64.whl size=40854 sha256=ce8b91f29f673387c3b155c9c0d519803df67e34d7eaec552d11038c401203d2 Stored in directory: /home/ec2-user/.cache/pip/wheels/32/db/4b/66c26f1ee8960dc38bf6d62a4d79eb91d8e360e7b1a7ca2137 Successfully built ikp3db Installing collected packages: ikp3db Successfully installed ikp3db-1.4.1 $ python -m pip list Package Version ---------- ------- ikp3db 1.4.1 pip 20.2.3 setuptools 49.2.1 wheel 0.36.2
Lambda関数をインポートする
Lambda関数をCloud9で実装していくためにCloud9の外部で作ったLambda関数をインポートします。
AWS Resourcesを使う場合
[AWS Resources]が表示されない場合は、設定をすることで表示することができます。Cloud9からAWS Resources消失 - Qiitaでやり方を確認してください。
- [AWS Resources] > [Lambda] > [Remote Functions] > 対象のLambda関数を選択して右クリック > [import...]
AWS Toolkitを使う場合
- [AWS] > 対象のリージョン > [Lambda]
Lambda関数用にモジュールをインストールする
Lambda関数用にモジュールをインストールする場合は、関数のディレクトリないにインストールします。そうすれば、インストールしたモジュールもろともLambda関数をデプロイすることができます。
# Lambdaのディレクトリに移動する $ cd backlog_none_assignee/ # 場所を指定してパッケージをインストールする(ここではrequests) $ python -m pip install --target=./ requests # 仮想環境にインストールされているパッケージを確認する $ pip freeze certifi==2020.12.5 chardet==4.0.0 idna==2.10 requests==2.25.1 urllib3==1.26.3