【IT】AmazonLinux 2へPython3.11.2導入
皆さま
こんにちは
今日は、Amazon Linux 2に
Python3.11.2を導入します。
デフォルトでは、
python-2.7.18
python3-3.7.16
が入っているようです。
以下の手順で実施します。
1.openssl1.1の導入
2.pyenvの導入
3.Python3.11.2の導入
1.openssl1.1の導入
デフォルトでもopenssl1.0系が導入されておりますが、
以下のエラーとなるため、openssl1.1系を導入します。
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/ec2-user/.pyenv/versions/3.11.2/lib/python3.11/ssl.py", line 100, in <module>
import _ssl # if we can't import it, let the error propagate
^^^^^^^^^^^
ModuleNotFoundError: No module named '_ssl'
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems
Python3.10からopenssl1.1系必須となったようです。
1.0系のopenssl-develが入っていると依存関係でエラーとなるため
アンインストールします。
$ sudo yum remove openssl-devel
・
・
================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
================================================================================
削除中:
openssl-devel x86_64 1:1.0.2k-24.amzn2.0.6 @amzn2-core 3.1 M
依存性関連での削除をします:
openssl-static x86_64 1:1.0.2k-24.amzn2.0.6 @amzn2-core 5.2 M
トランザクションの要約
================================================================================
削除 1 パッケージ (+1 個の依存関係のパッケージ)
・
・
次に1.1のopensslを導入します。
$ sudo yum install -y openssl11 openssl11-devel
・
・
================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
================================================================================
インストール中:
openssl11 x86_64 1:1.1.1g-12.amzn2.0.11 amzn2-core 318 k
openssl11-devel x86_64 1:1.1.1g-12.amzn2.0.11 amzn2-core 463 k
依存性関連でのインストールをします:
openssl11-libs x86_64 1:1.1.1g-12.amzn2.0.11 amzn2-core 1.4 M
openssl11-pkcs11 x86_64 0.4.10-6.amzn2.0.1 amzn2-core 61 k
トランザクションの要約
================================================================================
インストール 2 パッケージ (+2 個の依存関係のパッケージ)
・
・
$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
$ openssl11 version
OpenSSL 1.1.1g FIPS 21 Apr 2020
2.pyenvの導入
必要モジュールを以下に従い導入します。
$ sudo yum install gcc make zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel
git よりpyenvをインストールします。
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
Cloning into '/home/testpy/.pyenv'...
remote: Enumerating objects: 22475, done.
remote: Counting objects: 100% (50/50), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 22475 (delta 21), reused 31 (delta 16), pack-reused 22425
Receiving objects: 100% (22475/22475), 4.61 MiB | 4.14 MiB/s, done.
Resolving deltas: 100% (15173/15173), done.
次にパスを通します。
$ cd ~/
$ cp -p .bashrc .bashrc_orig
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
3.Python3.11.2の導入
以下のコマンドでインストールします。
$ pyenv install 3.11.2
Downloading Python-3.11.1.tar.xz...
-> https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tar.xz
Installing Python-3.11.2...
Installed Python-3.11.2 to /home/ec2-user/.pyenv/versions/3.11.2
ユーザ全体に反映します。
$ pyenv global 3.11.2
$ python --version
Python 3.11.2
pip もアップグレードをしておきます。
$ pip install --upgrade pip
Requirement already satisfied: pip in /home/ec2-user/.pyenv/versions/3.11.2/lib/python3.11/site-packages (22.3.1)
Collecting pip
Using cached pip-23.0-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 22.3.1
Uninstalling pip-22.3.1:
Successfully uninstalled pip-22.3.1
Successfully installed pip-23.0
では