見出し画像

レンタルサーバーにPythonを設定

共有サーバーでpipが使えなくて困っていませんか?

mixhostなどのレンタルサーバーでアプリをデプロイしたいとおもっても共有サーバーでpipが使えないのでどうしたらいいかわからない・・
そもそもPython2しか入ってないじゃん・・

そんなあなたに朗報です。

condaを使うことで解決できました。
Anacondaで仮想環境を構築し、python3を使えるようにしてflaskやstreamlitをデプロイしちゃいましょう!

まずはSSHでサーバーに接続し、pyenvを使ってバージョン管理を行います。

SSH接続に関しては飛ばします・・
mixhostのsPanelのターミナルからでも可能です。

まずは

pyenvをインストール


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

次にvertuavをインストール

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

次にPATHを通します。

$ nano ~/.bashrc

./bashrcにpyenvのPATHを追加

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

変更を反映させるために

$ source ~/.bashrc

これでPATHが通ります。

pyenvがインストールできたらリストを確認し

$ pyenv install --list

そこに表示されている最新の

anacondaをインストール


$ pyenv install anaconda3-2023.03

インストールできているか確認

$ pyenv versions

これで確認できるとanacondaのPATHも通します。

$ echo 'export PATH=/home/(あなたのusername)/.pyenv/versions/anaconda3-2023.03/bin' >> ~/.bashrc

これで最後に先ほど./bashrcに追加した

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

これを削除するとcondaが使えるようになります。
condaをアップデートしましょう

$ conda update conda

この設定で再度SSH接続した際、システムの一般的なバイナリディレクトリ(例:/usr/local/bin、/usr/bin、/bin)が含まれていない場合もあります。
私の環境でこのPATHが含まれていなかったので「ls」が使えずびっくりしました・・。
「ls」コマンドを使えるように、

$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH

このコマンドで「ls」が使えるようになるので再度、

$ nano ~/.bashrc  

出力されたエディタに

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH

これを追加してください。

再度反映させるために

$ source ~/.bashrc

最後に確認

$ echo $PATH

これでPATHを確認してください。

またconda環境が自動で設定されているのを修正するには

$ nano ~/.bashrc

これにて出力される

# >>> conda initialize >>>
・・・
・・・
# <<< conda initialize <<<

この部分を全部コメントアウトしてください。

これで手動でconda環境を設定できるようになります。

今回のcondaを使った方法は間違った操作をするとサーバーに不具合を与える可能性があるので自己責任でお願いします。

Heroku やAWS 、Google Cloud Platform (GCP)などのプラットフォームを使えばもっと簡単にできるのでほんとはそちらがおすすめです。

いいなと思ったら応援しよう!