LoginSignup
0
0

More than 3 years have passed since last update.

AWS Cloud9でのpython2からpyhton3に変更する方法(pyenv利用)

Posted at

概要

aws cloud9でslackbot用のラムダ関数を作成しようとした時に,python2からpython3への変更に手間取ったので,忘れないように書いておきます.結局,cloud9では,「Preference」=> 「Python Support」から2から3への変更が可能だったので,次回からはそうするようにします.
間違えてしまった理由として,前回,EC2サーバを自分で建てたとき,python2しか入っていなかったので,cloud9でサーバを立てた場合でも,python3は入っていないと思ってしまったためです.ですので,python3を入れるのがめんどくさいなら,cloud9を立ててec2を利用するのもいいかもしれません.

今回は,python2からpyenvからとってきたpython3.6.2に変えます.

利用環境

amazon linux2

バージョン確認

pythonとpipのバージョンを確認しましょう.

$ python -V
Python 2.7.14
$ pip -V
pip 9.0.3 from /usr/lib/python2.7/dist-packages (python 2.7)

pyenvのインストール

pyenvをgitから落としてきて.bash_profileにpyenvのpathを書き込む
その後sourceコマンドで.bash_profileを改めて読み込み(もしくは再起動)

$git clone https://github.com/yyuu/pyenv.git ~/.pyenv

$echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

$source ~/.bash_profile

pyenv へのpathが通っているか確認

$pyenv --version
pyenv 1.2.13-19-gf3d008fd

pyenvでインストール可能なバージョンを指定

pyenv install --list
  2.1.3
  2.2.3
  2.3.7
  2.4.0
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
  2.5.0
  2.5.1
  2.5.2
  2.5.3

いろいろ出ますが,今回は3.6.2を選択する.以下に保存される.

$pyenv install 3.6.2

$find . -name python3.6 
/home/ec2-user/.pyenv/shims/python3.6 2>/dev/null
/home/ec2-user/.pyenv/versions/3.6.2/lib/python3.6
/home/ec2-user/.pyenv/versions/3.6.2/bin/python3.6 

systemになっているので,3.6.2に変更

$pyenv versions
* system
  3.6.2 (set by /home/ec2-user/.pyenv/version)
$pyenv global 3.6.6
$pyenv rehash

これで

$pyenv versions
  system
* 3.6.2 (set by /home/ec2-user/.pyenv/version)

3.6.2のほうにチェックが入りました.
ただ,これでもpython2のままです.

$python  --V
python2.7.?

これは,.bash_rcで利用するpythonがすでに決められているためだ.
そこで,

$sudo vim ~/.bashrc

alias python='python27'

上の部分を削除します.
さらに,

$find / -name python3.6  2>/dev/null
/usr/lib/python3.6
/usr/bin/python3.6
/usr/local/lib/python3.6
/usr/local/lib64/python3.6
/usr/lib64/python3.6
/opt/c9/python3/lib/python3.6
/opt/c9/python3/bin/python3.6
/home/ec2-user/.pyenv/shims/python3.6
/home/ec2-user/.pyenv/versions/3.6.2/lib/python3.6
/home/ec2-user/.pyenv/versions/3.6.2/bin/python3.6
/home/ec2-user/environment/.c9/metadata/environment/calif/venv/lib/python3.6
~/.pyenv/shims/python3.6

とpythonのフォルダは2つ(はじめからあるもの(/usr/bin)と今入れたもの(home/ecs-user/.pyenv)ので,pythonを指定したときに,先に呼び出すファルダを決めます.
今は,

$which python
/usr/bin/python3.6

とかがでます.

そこで,

$ sudo vim /etc/paths

/home/ec2-user/.pyenv/shims
/usr/bin
/bin
/usr/local/bin
/usr/sbin
/sbin
/usr/local/sbin

として,pyenvのpythonを先に読み込むようにしましょう.
すると,

$which python
/home/ec2-user/.pyenv/shims/python3.6

となります.
ならないようなら,一度,サーバを落としてください.
これで,pyenvを使ってpython3.6.2を利用できるようになりました.
環境によって,バージョンは変えてください.
ちなみに,現状では,あらかじめ入っているpython3
3.6.8です.
ちなみに,

$pip -version
pip 19.3.1 from /home/ec2-user/.pyenv/versions/3.6.2/lib/python3.6/site-packages/pip (python 3.6)

となっており,pipはpython3を利用されるようになっている.
python2も共存しているので,pipコマンドを利用しているのか確認するとよい.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0