見出し画像

【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


では

この記事が気に入ったらサポートをしてみませんか?