pyenvからインストールしたpythonをさくらのレンタルサーバーで使う

さくらのレンタルサーバにpyenvをインストールしました。インストールからcronで実行するまでにやったことを書いておきます。

pyenvをインストールする

まずはpyenvをインストールします。SSHでレンタルサーバにログインして、下記のコマンドを実行します。シェルはbashを想定しています。

$ 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

gitからpyenvをクローンし、.bash_profileにPYENV_ROOTとPATHを設定します。

pyenvでPythonのバージョン3.4.7をインストールします。デフォルトで使用するバージョンとして設定します。

$ export TMPDIR=~/tmp
$ pyenv install 3.4.7
$ pyenv local 3.4.7

Python3.4.7のインストールした時に/tmpが実行禁止というエラーが出るので、TMPDIRをホームディレクトリ以下に作成します。

pyenvで入れたPythonをcronで使う

インストールしたバージョンのpythonを使ってcron用のスクリプトを書きたいと考えていました。しかし、そのままabに「*/1 * * * * python -V > ~/version.txt」のような設定をcrontabに記述しても、システムにインストールされているPythonのバージョンが使われてしまいます。cronでpyenvのPythonを使うには、「.pyenv/shims」以下にインストールされたpythonインタプリタが実行されるようにPATHを設定しなければなりません。

「crontab -e」でcronの編集画面を開き、先頭の行に以下のようにPATHを設定します。設定するPATHには「.pyenv/bin」と「.pyenv/shims」を含むようにします。

$ crontab -l
PATH=/home/[ユーザID]/.pyenv/shims:/home/[ユーザID]/.pyenv/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/[ユーザID]/bin

*/1 * * * * python -V > ~/version.txt
$ cat ~/version.txt
Python 3.4.7

ホームディレクトリに作られる「version.txt」の中身にpyenvでインストールしたPythonのバージョンが書き込まれて入れば成功です。

pyenvでPython3をインストールし、cronで実行するまでを試してみました。

cronの実行時に意図したPythonのバージョンが実行するには「.pyenv/」以下にパスが通すことが必要であるということがわかりました。

cronとPythonを作業の自動化に活用していきたいです。

シェアする

  • このエントリーをはてなブックマークに追加