Help us understand the problem. What is going on with this article?

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

当方、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をインストール。

雑談:そもそもなぜ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のインストールをすることになる。

EmikoKishi
フリーランスのプログラマ。 一応WEB系メインだけど、何でもやる雑食性。
https://orange-factory.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした