1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu16.04でpyenv-virtualenvによる環境構築

Posted at

はじめに

研究に用いていたubuntu16.04で,ディレクトリごとにpython3.7.3の環境を切り替えられるようにした.
意外とハマるポイントが多かったので,備忘録のためにもまとめておく.
章立ては以下の通り.

  • pyenvのインストールをする
  • pyenv-virtualenvのインストール
  • sudo pyenvを使えるようにする
  • pyenvのバージョン切り替えが反映されない時の対処法
  • matplotlibで図が描画できない問題

各項目についての詳細は,参考のリンクに飛んだほうが分かりやすいかも.

pyenvのインストール

githubからリポジトリをcloneしてくる.

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

.bashrcに以下を追記し,pathを通す.

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"

さらに,.bashrcを再度読み込むことで設定を適用.

source ~/.bashrc

pyenv-virtualenvのインストール

pyenvだけでは,同一バージョンで複数のpython環境を管理することができない.
具体的には,python3.7.3とpython3.5.2を分けて管理することは可能だが,同じpython3.7.3の環境を別々に管理することはできないという問題がある.
そのため,pyenv-virtualenvをインストールし,python3.7.3の環境をディレクトリごとに切り替えられるようにする.

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

さらに,.bashrcに以下を追記する.

eval "$(pyenv virtualenv-init -)"

ここで.bashrcを再度読み込んでおく.

source ~/.bashrc

sudo pyenvを使えるようにする

sudoする時のpathが引き継がれず,$sudo pyenvでエラーを吐くことがある.

$sudo visudoで設定ファイルを以下のように編集する.

# Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin  コメントアウト
Defaults    env_keep += "PATH"  # 追加
Defaults    env_keep += "PYENV_ROOT"  # 追加

pyenvのバージョン切り替えが反映されない時の対処法

.bashrcに以下を追記することで解決できる.

export PATH="$HOME/.pyenv/shims:$PATH"

これでディレクトリごとの環境切り替えができるようになったはずなので,簡単にpyenv-virtualenvの使い方を書く.

まず,必要になるツールをインストールしておく.

sudo apt install -y gcc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

python3.7.3をインストールする.

sudo pyenv install 3.7.3

新しい環境sampleを作成する.

sudo pyenv virtualenv 3.7.3 sample

当該ディレクトリに環境を適用.

sudo pyenv local sample

正しく適用されているかどうかは,$sudo pyenv versionsで確認できる.

matplotlibで図が描画できない問題

python3.7.3で,matplotlibで図を描画しようとすると以下のようなエラーメッセージが出ることがある.

UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

この方法が最適かどうかは微妙だが,GUIをPyQtに変更すると描画できるようになる.
まず,PyQt5をpython環境にインストールする.

sudo pip install PyQt5

さらに,matplotlibのmatplotlibrcファイルの該当箇所を以下のように書き換える.

backend: Qt5Agg

これでmatplotlib.pyplot.show()で描画できるようになる.

参考

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?