今まで特に意識することなく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.12wpサポートする別のライブラリを使おうか、DOCKERでPTHON3.11の環境にいれようか、それともPYENVを使おうかと迷いましたが、入れたいライブラリが簡単に構成能な音声生成ができそうなので、ライブラリは外せず、あとDOCKERの接続設定もとりあえずあまりやりたくなかったので、最終的にpyenvでとりあえずやろうとしました。特定のPythonバージョンを柔軟に管理したい場合は、pyenvを使用する方法が最も便利です。その時のメモです。
まず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.6
さてそこでやっと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からフォルダーとの紐づけなど柔軟に管理できます。