とあるシステムの中の人

プログラミング、育児、武道、3Dグラフィック、ゲーム開発

素のcentos上にpython3.10環境を構築する

  • 仕事でpython3.10を使うことになり、普段から使用しているcentos7にインストールしようとしてハマってしまったため、記事を作成した。
  • ハマる人はズドンとハマると思う。
    • 失敗の仕方がこれまた悲劇的で、pythonインストールでビルド長時間かかった挙句、失敗するのでダメージでかく、他の方の救いになれば。
  • でもそろそろcentosじゃなくてubuntsへ作業環境替え時かも。いろいろ変わったし。
  • 一部testが失敗するので他に何かしなきゃかもだけど、とりあえずpythonとpoetryは使えるので、お試し開発とかの使用には耐えうるはず。

手順

  • 必要なパッケージの取得yum
yum install -y bzip2 bzip2-devel gcc git libffi-devel openssl openssl-devel readline readline-devel sqlite sqlite-devel zlib-devel
  • pyenvのインストール
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 install -l
  • openssl
    • こいつがcentos7だとopenssl-1.1.1が入っていない(openssl-1.0が入っている)ので、pythonビルドに失敗する
    • python3.10からはopenssl1.1.1が必須になった。
sudo curl https://www.openssl.org/source/openssl-1.1.1.tar.gz -o /usr/local/src/openssl-1.1.1.tar.gz
cd /usr/local/src
sudo tar xvzf openssl-1.1.1.tar.gz
cd openssl-1.1.1/
sudo ./config --prefix=/usr/local/openssl-1.1.1 shared zlib
sudo make depend
sudo make
sudo make test
sudo make install
  • opnensslのパス類を追加
echo 'PATH=/usr/local/openssl-1.1.1/bin:$PATH:$HOME/bin:/usr/local/openssl-1.1.1/lib:/root/.rbenv/bin' >> ~/.bash_profile
echo 'LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl-1.1.1/lib' >> ~/.bash_profile
echo 'export LD_LIBRARY_PATH' >> ~/.bash_profile
echo 'export PATH' >> ~/.bash_profile
source ~/.bash_profile
  • python 3.10のインストール
CFLAGS=-I/usr/local/openssl-1.1.1/include LDFLAGS=-L/usr/local/openssl-1.1.1/lib pyenv install -v 3.10.8
pyenv global 3.10.8
  • ついでにpoetry のインストール
pip install poetry
  • これでうまく使えるはず。環境構築はタスクに入る前の作業だから、ここで詰まると色々しんどい。けど環境構築が開発の中で一番時間かかるところ(自分は)なんだよねー。誰かの助けになれば。