🔧

SynologyのNASに公式の手段でPython3.9をインストールしてpipも使えるようにする

2023/07/30に公開

TL;DR

  • 現在のSynology NASでは標準機能でPython3.9をインストールできます
  • pipを使うには、ensurepipパッケージでpipをインストールする、またはvenvで仮想環境を作成するとよいです

背景

Synology製のNAS(Network Attached Storage)では、様々な自作のプログラムを動かすことができます。特に、Pythonを使うことでWebサイトの監視、IoT、バックアップなど幅広い処理が可能です。筆者は、GitHubの自分のリポジトリを自動でNASに反映させるプログラムを定期実行しています。

https://zenn.dev/kn1cht/articles/github-backup-nas

以前から、Pythonをパッケージセンター(標準のパッケージマネージャ)から導入できましたが、バージョンが古めであるため外部のパッケージマネージャやDockerを経由させる事例が多く見られました。

2022年ごろから、パッケージマネージャから標準で利用可能なパッケージにPython 3.9が追加されました。2023年現在、ベータの表示も消え安心して使えるようになっています。ただ、そのままの状態ではpipコマンドが使えないなど、快適に使うには少しだけ工夫が必要です。
そこで、本記事では標準のPython 3.9でpipコマンドを使えるようにする方法を解説します。

Python 3.9パッケージのインストール画面

環境

Pythonのインストール

パッケージセンターを開き、Python 3.9を一覧から探すか検索してインストールします。

Python 3.9パッケージのインストール画面

SSHでログインし、python3.9を実行して使用できることを確認します。

$ python3.9
Python 3.9.14 (main, Mar 24 2023, 10:05:06)
[GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

pipを使えるようにする

一方で、pipなどと入力してもコマンドが見つからないと表示されるはずです。これでは、Pythonパッケージをインストールできないので、pipを導入していきます。

Web Stationを使ってモジュールをインストールする方法もあるようですが、GUIでの作業が多く大変なので、本記事ではコマンドで完結する方法2つをご紹介します。

pipをそのまま入れる

参考にしたページ:How to install Python pip on Synology NAS - Sindastra's info dump

https://www.sindastra.de/p/2290/how-to-install-python-pip-on-synology-nas

Python3.4から用意されているensurepipモジュールを使用する方法です。

$ sudo python3.9 -m ensurepip --upgrade
$ sudo python3.9 -m pip install --upgrade pip

インストールが終わると、インストール先のディレクトリ(筆者の環境では/var/packages/Python3.9/target/usr/bin)と、PATHに追加するように促すメッセージが表示されます。PATHに反映させると、pip3.9などのコマンドが有効になります。

$ echo export PATH='/var/packages/Python3.9/target/usr/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc

(zshなど別のシェルをお使いの方は~/.zshrcなどに読み替えてください)

あとは、好きなようにパッケージを入れればOKです。

$ sudo pip3.9 install numpy

venvで仮想環境を作成する

参考にしたページ:Synology NASに Python 仮想環境をセットアップするにはどうすればよいですか? - Synology ナレッジセンター

https://kb.synology.com/ja-jp/DSM/tutorial/Set_up_Python_virtual_environment_on_NAS

上の方法でpipを使っていると、「rootで使うのは危険だから仮想環境を使いなよ」と警告されます。そこで、今度は最近のPythonに組み込まれている仮想環境venvを使用してpipを使ってみます。

$ cd # 仮想環境のためのファイル群を設置したいディレクトリに移動
$ python3.9 -m venv default
$ source default/bin/activate

これで仮想環境が有効になり、pipも{環境名}/bin以下に用意されます。この方法の場合、sudoは不要です。

$ pip3.9 install numpy

タスクスケジューラーで自動的に呼び出す場合、source /{仮想環境のディレクトリまでのパス}/bin/activateを先に実行しておかないとエラーになるので注意しましょう。

GitHubで編集を提案

Discussion