エックスサーバーでpip(Python)を使用する

エックスサーバーはデフォルトでPythonが動作しますが、パッケージ管理ツールであるpipは使用できません。また、ユーザーにはroot権限がないので、自分でpipをインストールすることもできません。

今回はエックスサーバー上でpipが使用できるようにします。方法はいくつかあるようです。

  • Linuxbrew (Homebrew)
  • Anaconda / Miniconda / Miniforge
  • pyenv
  • venv

この記事ではPythonの標準モジュールである「venv」を使用して仮想環境を作成し、作成した仮想環境の中でpipを使えるようにします。仮想環境は複数作成できるので、プロジェクトごとにモジュール構成やモジュールバージョンを使い分けることができます。

エックスサーバーにSSH接続する

まず、エックスサーバーにSSHでリモート接続します。接続方法は公式サイトに詳しいので省略します。

仮想環境用のディレクトリを作成する

ホームディレクトリに任意のディレクトリを作成します。今回はpython_venvを作成しました。
このディレクトリ内にプロジェクト毎の仮想環境を作成していきます。

$ pwd
/home/<user_id>

# python_venv を作成して移動
$ mkdir python_venv; cd $_

仮想環境を作成する

仮想環境を作成します。このとき、オプションを指定して、pipがインストールされないようにします。(前述通りエラーが発生するため)

venvは仮想環境作成時に使用したPythonのバージョンで動作します。今回はPython3.6で仮想環境を作成します。
Python2.xなど、他のバージョンで仮想環境を動作させたい場合は、任意のバージョンに書き換えてください。

$ pwd
/home/<user_id>/python_venv

$ python3.6 -m venv --without-pip <virtual_environment>

以上で/home/<user_id>/python_venv/virtual_environmentに仮想環境が作成されました。展開すると、binやincludeなどのディレクリが作成されているのが見えます。

仮想環境を有効化

作成した仮想環境を有効化します。

$ pwd
/home/<user_id>/python_venv

$ source virtual_environment/bin/activate

VSCodeのターミナル上ではユーザー表記の先頭に(virtual_environment)との文字列付与が確認できます。この状態でPythonのバージョンを確認してみます。

(virtual_environment)[user@sv1111 ~]$ python -V
Python 3.6.8

本来のエックスサーバーではPython 2.7.5と出力されますがPython 3.6.8と出力されています。仮想環境の有効化が確認できました。

pip インストール

まず、pipをインストールするためのget-pip.pyをダウンロードするのですが、python3.6では最新のget-pip.pyを扱えないので、対応バージョンの3.6をダウンロードをします。

$ curl -O https://bootstrap.pypa.io/pip/3.6/get-pip.py

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 2108k  100 2108k    0     0  8415k      0 --:--:-- --:--:-- --:--:-- 8501k

続いて、pipをインストールします。

$ python get-pip.py
Collecting pip<22.0...
Installing collected packages: wheel, setuptools, pip

$ pip -V
pip 21.3.1 from /home/...

$ which pip
~/python_venv/virtual_environment/bin/pip

$ pip list
Package    Version
---------- -------
pip        21.3.1
setuptools 59.6.0
wheel      0.37.1

pipのインストールが確認できました。

pytest をインストール

試しにpytestをインストールします。

$ pip install pytest
Collecting pytest
  Using cached pytest-7.0.1-py3-none-any.whl (296 kB)...

$ pip list
Package            Version
------------------ -------
attrs              22.2.0
importlib-metadata 4.8.3
iniconfig          1.1.1
packaging          21.3
pip                21.3.1
pluggy             1.0.0
py                 1.11.0
pyparsing          3.0.9
pytest             7.0.1
setuptools         59.6.0
tomli              1.2.3
typing_extensions  4.1.1
wheel              0.37.1
zipp               3.6.0

仮想環境を無効化

最後に仮想環境を無効化します。

$ deactivate

$ python -V
Python 2.7.5

$ pip list
bash: pip: コマンドが見つかりません

仮想環境を削除

# deactivate後
$ rm -rf virtual_environment