XserverにPythonとpipをMinicondaでインストールして、cronでPythonコードを実行するまで
目次
XserverにPythonとpipをMinicondaでインストール
ググると大容量(2GB)のAnacondaでのインストールが多かったが、
エックスサーバーで簡単にpythonのpipとFlaskの環境を構築する - dattesar
が、容量の小さいminicondaでやっていたのでここを参考にした。
Anaconda公式のrepo.anaconda.com/miniconda/からMiniconda3-py38_4.8.3-Linux-x86_64.shをダウンロードしてルートディレクトリ(/home/hikosato/)にアップロード。作業フォルダ(tmpとか)を作ってその中で作業しなくてもいい。
新しいバージョンじゃなくてこのバージョンにしないとインストール失敗するらしい。
エックスサーバーのGLIBCのバージョンが2.17であることが原因らしい。
ldd --version
ldd (GNU libc) 2.17
shコマンドでアップロードしたファイルを実行してインストール。
sh Miniconda3-py38_4.8.3-Linux-x86_64.sh
source .bashrc
最新のpythonとpipがインストールされた。
(base) [hikosato@sv14864 ~]$ python -V
Python 3.8.3
(base) [hikosato@sv14864 ~]$ python3 -V
Python 3.8.3
(base) [hikosato@sv14864 ~]$ which python
~/miniconda3/bin/python
(base) [hikosato@sv14864 ~]$ which python3
~/miniconda3/bin/python3
(base) [hikosato@sv14864 ~]$ which conda
~/miniconda3/bin/conda
(base) [hikosato@sv14864 ~]$ which pip
~/miniconda3/bin/pip
(base) [hikosato@sv14864 ~]$ pip -V
pip 20.0.2 from /home/hikosato/miniconda3/lib/python3.8/site-packages/pip (python 3.8)
(base) [hikosato@sv14864 ~]$
と同時に、ターミナルのプロンプトの先頭に(base)がつくようにもなった。
baseとは?
Conda は Python のバージョン管理ツールです。機械学習のライブラリ欲張りセットである Anaconda をインストールすると標準でついてきます。 (base) が出ている状態である、ということは Conda が提供する仮想環境に入っている状態です。 特に問題がなければそのままで構いませんが、「Conda 以外のバージョン管理ツール( pipenv, poetry など)を使いたい」、「なんかよくわからないけど不安だから消したい」みたいな時には不便ですよね。
この引用元にbaseを消す手順が書いてあったからやったけど、pipコマンドがいなくなったから戻した。
Minicondaは簡単にPythonのバージョンを変更できるので3.8から3.11.3に変更した。
conda install python=3.11.3
MinicondaのPythonとpipをXserverデフォルトより優先
# MinicondaのPythonとpipを優先
export PATH=/home/hikosato/miniconda3/bin:$PATH
cronでPythonコードを実行する
このコードでうまくいった。XserverデフォルトのPythonで実行されないようにMinicondaでインストールしたPythonのフルパスを指定。
/home/hikosato/miniconda3/bin/python3 /home/hikosato/projects/testcron/crontest.py