😗

PYENVの導入

に公開

今まで特に意識することなくPYTHONはUbuntuレポジトリのデフォルトのものつかってその上で仮想環境を作ってきました。

apt install python3-venv python3-pip
python3 -m venv myenv

ところが先日あるパッケージをいれようとしたときPYTHONのVersionエラー、最新のPythonであると動かないライブラリもまだまだあるようです

(cutest) root@ip-172-31-18-243:/opt# python --version
Python 3.12.3
(cutest) root@ip-172-31-18-243:/opt# pip install TTS
ERROR: Ignored the following versions that require a different python version: 

この時PYTHON3.12をサポートする別のライブラリを使おうか、DOCKERでPTHON3.11の環境にいれようか、それともPYENVを使おうかと迷いましたが、入れたいライブラリが簡単に高性能な音声生成ができそうなので、ライブラリは外せず、あとDOCKERの接続設定もとりあえずあまりやりたくなかったので、最終的にpyenvでとりあえずやろうとしました。CONDAもPACKAGEがCONDAとPIPが混在するおそれもあり、特定のPythonバージョンを柔軟に管理したい場合は、pyenvを使用する方法がいいかと思いました。またPYENVはフォルダーと連携しており、フォルダーに移動すると自動的にPYTHONのバージョンや環境を変えることも可能なようです。それではその時の設定メモです。

まずpyenv自体インストール

# apt install -y build-essential curl libbz2-dev libffi-dev libreadline-dev \
    libsqlite3-dev libssl-dev zlib1g-dev liblzma-dev
# curl https://pyenv.run | bash

~/.bashrc の最後に以下を追加しておきます。

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

ログインしなおすか以下で設定の読み込み

# source ~/.bashrc
# pyenv --version
pyenv 2.4.23

先ほどのライブラリはPython3.11は対応していたのでその中で最新のPython3.11.11をインストール(2024/12/20時点)をインストールとインストールされているVersionの確認

# pyenv install 3.11.11
# pyenv versions

私の場合はPYTHONのVERSIONごとに特定のディレクトリで整理したかったので作成してそこに関連づけました。

# mkdir python3.11.11 
# cd python3.11.11
# pyenv local 3.11.11

さてそこでやっとPython3.11.11での仮想環境作成です

# pyenv virtualenv 3.11.11 myenv
# pyenv activate myenv

再度インストールされている環境確認です

# pyenv versions
  system
* 3.11.11 (set by /opt/python3.11.11/.python-version)
  3.11.11/envs/myenv
  tts0_coqui --> /root/.pyenv/versions/3.11.11/envs/myenv

先ほど作成したPYTHON3.11.11の仮想環境myenv が3.11.11/envs/myenv につくられているようなのでアクティベートします

# pyenv activate 3.11.11/envs/myenv

ちなみに仮想環境から抜け出るときは deactivateではなく、source deactivateで実施ください

# source deactivate

あとは自由に環境構築できます。なれないと少しややこしいですが、なれるとPYTHONのVERSSIONからフォルダーとの紐づけなど柔軟に管理できます。

Discussion