LoginSignup
3
3

More than 1 year has passed since last update.

さくらのレンタルサーバスタンダードに python3 で pip3 したメモ

Last updated at Posted at 2019-12-18

当方、Linuxといえば「ls? 隠しファイル見るのは、えーっと、-aだっけ?」ぐらいの知識しかないです。
が、必要に駆られて、さくらのレンタルサーバにpython3をインストールしました。

参考にしたページ:https://ricom-techno.com/65/

上記ページに書かれている通りやればできました。
素晴らしかったです、記事主さんありがとうございます。

失敗を含む作業の流れ

要約は「pythonのバージョンは 3.8じゃなくて3.6 だよ」です。

以下は薄い内容の失敗談なので、お時間がある方はどうぞ。

python3.8.0を何事もなくインストールしてしまう

pythonのサイト見たら、3.8.0というやつがstableだと書いてありました。
浅はかにも「わかんないけど、新しい方がいいのかなぁ?」と思いました。

さくらにSSHで接続し、ホームディレクトリに居る状態で:

作業場所作って
% mkdir -p ~/wk/p3
% mkdir -p ~/local/python
Pythonをダウンロードして解凍
% cd ~/wk/p3
% wget --no-check-certificate https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
% tar -zxvf ./Python-3.8.0.tgz
そしてmake
% cd ./Python-3.8.0
% ./configure CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib" --prefix=$HOME/local/python
% make
% make install

インストールはうまくいきました。
pippip3という名前になってたけど、それ以外は、参考ページ通りでした。
ページ作者の方には感謝の念しかありません。

しかし、モジュールインストールに失敗

けど、本来の目的だったモジュールのインストールができませんでした。

だめだった
% pip3 install --upgrade gtfs-realtime-bindings

ドサーッとたくさんエラーが出てしまいました。
意味はよく理解できなかけど、ModuleNotFoundError: No module named '_ctypes'って部分がそれっぽい感じだったので、ググってみたところ、ヒットしたページがこちらです。
https://qiita.com/hitochan777/items/941d4422c53978b275f8
内容はずばりではないけど、エラーメッセージが似てます。

3.6系までは普通にインストールできていたのに、3.7をインストールしようとしたら次のようなエラーでインストールに失敗。

とのこと。
もしかしてPythonって、3.7から何かが変わった?
参考ページで3.6.8をインストールしてたのはそのせい?
と思い至りました。

「具体的に何がどう変わったか」「本当にそれが原因か」とかいう沼には近寄らず、集合知に感謝しつつ3.6系で試すことにしました。

python3.6.9を入れなおす

  • .cshrcに書き込んだパスやらを削除
  • インストールしたPython3と作業場所のディレクトリを rm -rでごっそり削除
    • ~/local/python
    • ~/wk/p3

で、改めて3.6の最新版らしき3.6.9をインストール。

% mkdir -p ~/wk/p3
% mkdir -p ~/local/python

% cd ~/wk/p3
% wget --no-check-certificate https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
% tar -zxvf ./Python-3.6.9.tgz
% cd ./Python-3.6.9

% ./configure CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib" --prefix=$HOME/local/python
% make
% make install

で、パスやらなにやらをあれこれして、pip3で無事、目的のモジュールのインストールもできたのでした。
良かった。

追加情報

2020年1月31日。
メモしておいたこのページを参考に、さくらの別サーバで同じことをやろうとして気が付く。

  • Python 3.6 の最新は、3.6.10 になってた
  • security-fixes …?って、stable(安定版)から落ちてるやん。

どこかのタイミングで、新しいバージョンでうまくいくか再挑戦しないとなー、と思いつつ、粛々と3.6.10をインストール。

2021年10月28日。
またもやさくらの別サーバで同じことをやる。

  • Python3.6 の最新は3.6.15
  • 3.6のサポートが2021-12-23までとなっていた、もうやばい。
  • 試しに3.10.0をインストールし、pipでモジュールインストールしようとしたら、SSLが無い(the ssl module in Python is not available)と言われて失敗。
  • sslモジュールを入れる方法を探し、先にaptでライブラリ入れとけばいいという記事を発見するも、さくら(FreeBSD)でaptって使えるのかな、あきらめて3.6.15を入れるかもしれない(いまここ)

雑談:そもそもなぜpythonのインストールなどをしているのか

「GTFSリアルタイム」という交通の運行状況のデータを見たかった。
そのために、プロトコルバッファ(というデータ形式)を扱う必要があった。
ので、Googleさん提供のモジュールを使いたかった。
https://developers.google.com/transit/gtfs-realtime?hl=ja

ので、以下雑談はプロトコルバッファの話。

上記公式に、pipeasy_installのインストール例が載ってて、さくらにSSH接続してたらeasy_installのコマンドが通ったので、それで入れようとしたのでした。
さくらのeasy_installよ、pypi.orgじゃなくて古いサイト見に行ってるやーん!
…とかをオプションで指定したりして試したけどダメで。

うまくいきそうで行かなかった例
easy_install --prefix=~/.local --index-url=https://pypi.org/simple gtfs-realtime-bindings

いろいろググってるうちに、「さくらはpythonから見れるOpenSSLが古くてダメ」みたいな記事を見かけて諦め、「もういいpython3入れる」となった次第。

そもそもそれ以前に、最初はperlで実装してたのでした。

WindowsのローカルでcpanからもらってきたGoogle::ProtocolBuffersモジュール使って書いて動いてた。
のだけど、ローカルのLinuxのマシンで動かすとコケた。コケないこともあるからタチが悪い。
仮にさくらで動いたとしても、今後ずっと嫌な感じだから、コケる原因を知りたいけど、調べるのめんどい。

cpanにはもう一つGoogle::ProtocolBuffers::Dynamicというモジュールがあって、使えたよ的なブログ記事も発見。
が、私の環境ではWindowsもLinuxも、依存モジュールのインストールに失敗したとかでそもそもインストールできず。
失敗した奴がどいつで、どうやったらインストールできるか、とか辿るのが面倒で諦める。

野良モジュールじゃなくGoogle公式で配ってるモジュールなら楽かな、この言語の中ならPythonかなーとなる。

環境の知識が足りなくて諦めが早いと、
プロトコルバッファ読むために、Python3のインストールをすることになる。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3