2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】【Linux】pyenvを使用した環境構築

Last updated at Posted at 2023-11-10

0. はじめに

pyenvのドキュメントを主に参考としています。

0.1 目的

Pythonの環境構築にあたり、バージョン管理が必要となったのでpyenvを用いた環境構築について説明します。躓きやすい場所もあったので説明します。

英語を読むのが億劫でない方は,READMEを読むことを推奨します。

0.2 前提条件

  • Ubuntu 22.04.3 LTS

READMEを見る限り,DebianMintも同様です。
また,WSLでもディストリビューションが同じであれば問題ないです。

1. 環境構築

1.1 環境構築方法の選択1

pythonに関しての環境構築選択には様々な方法があります。
本記事のようなpyenvvenvPoteryなど。
これらの中で選択を迷う場合は以下のKenta Nakamura氏の記事を参考にするといいかと思います。

今回の状況はパッケージのバージョン管理は必要ないのでバージョン管理であるpyenvを選択しました。

1.2 環境構築23

  1. pyenvを使用するための環境構築を行います。
    この事前環境構築を忘れると躓きます。
    sudo apt install build-essential libssl-dev zlib1g-dev \
        libbz2-dev libreadline-dev libsqlite3-dev curl \
        libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
    
  2. pyenvをインストールします。
    1. gitからクローンします。
      git clone https://github.com/pyenv/pyenv.git ~/.pyenv
      
    2. pyenv高速化を行います。(失敗しても動きはします。)
      cd ~/.pyenv && src/configure && make -C src
      
  3. shellの設定を行います。
    どちらかの方法で行います。
    1. 直接入力をする方法
      ~/.bashrc
      export PYENV_ROOT="$HOME/.pyenv"
      command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
      eval "$(pyenv init -)"
      
    2. shellから入力する方法
      echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
      echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
      echo 'eval "$(pyenv init -)"' >> ~/.bashrc
      
  4. 変更の反映を行います。
    方法は2つあります。
    1. 再起動
      sudo reboot
      
    2. sourceコマンド(.を使用しても問題ない)
      source ~/.bashrc
      
  5. pyenvのバージョンを確認します。
    pyenv --version
    

バージョンが返ってきたら環境構築は完了です。

2. pyenvを使用したPythonのインストール

2.1 インストール

  1. pyenvでインストールできるバージョンを確認します。
    pyenv install --list
    
  2. インストールします。
    pyenv install version_name
    
    今回はpyenv install 3.9.13と指定しました。
  3. インストールされたか確認します。
    pyenv versions
    
    出力
    * system (set by ~/.pyenv/version)
    3.9.13
    

2.2 バージョン設定

バージョンを指定する方法を説明します。

  1. 全体(グローバル)で指定する方法
    global
    pyenv global version_name
    
  2. ディレクトリで指定する方法
    local
    pyenv local version_name
    

最後に,バージョンを確認します。
このときに指定したバージョンが返ってくれば完了です。

pyenv version

また,指定したバージョンはバージョンを指定したディレクトリ直下に.python-versionのファイルが作成され,そこに記述されます

今回は,以下のように行いました。

cd ~/Test
pyenv local 3.9.13

2.3 パッケージのインストール

pip listで、バージョンごとにインストールされたパッケージの確認ができます。
初期状態は以下のようになっています。

pip list
Package    Version
---------- -------
pip        23.3.1
setuptools 58.1.0

パッケージのインストールはpyenvを用いない時と同じです

pip install package_name

今回はNumpyをインストールしてみます。

pip install numpy

インストール後,再びpip listを確認すると以下のようにNumpyが追加されています。

pip list
Package    Version
---------- -------
numpy      1.26.1
pip        23.3.1
setuptools 58.1.0

バージョンが指定された状態でパッケージのインストールを行わないと,望んだバージョンにはインストールされないので注意が必要です。

3. pyenvを使用したPythonのバージョン指定解除とアンインストール

3.1 バージョン指定の解除

以下のコマンドを使用して,pyenv --versionで返ってこなかったら完了です。

pyenv local --unset

3.2 アンインストール

以下のようにアンインストールを行います。
最後にバージョンが確認できなくなっていたら,完了です。

pyenv uninstall version_name

4. VS Codeにおける設定

VS Codeをエディタとして使用する場合はさらに以下の設定が推奨されます。

settings.jsonに(ユーザー,ワークスペースどちらでもよい)以下を追記します。

settings.json
{
    "python.analysis.extraPaths":[
        "~/.pyenv/versions/3.9.13/lib/python3.9/site-packages"
    ]
}

これで、Pylanceによる「reportMissingModuleSource」に関するエラーをはかなくすることができます。

参考文献

  1. README | pyenv

  2. Pythonのパッケージ管理ベストプラクティス

  3. Troubleshooting / FAQ | pyenv

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?