数値計算を勉強しようと思って調べていたら、pythonで書かれたソースを見つけました。
ここまでは良いのですが、python3では動かない。
あるあるだと思いますが、python初心者がつまづいた点を残しておきます。
目次
python2.7のpipが動かない
とりあえず、Debian unstableだとpytho3がメインで、pipは3のみのようです。
% pip -V pip 20.1.1 from /usr/lib/python3/dist-packages/pip (python 3.9)
じゃあ、野良で入れるかと思って、get-pip.pyをダウンロードして試してみましたが…。
% sudo python2.7 ./get-pip.py [sudo] password for XXXX: Traceback (most recent call last): File "./get-pip.py", line 24244, inmain() File "./get-pip.py", line 199, in main bootstrap(tmpdir=tmpdir) File "./get-pip.py", line 82, in bootstrap from pip._internal.cli.main import main as pip_entry_point File "/tmp/tmpXTY6Z_/pip.zip/pip/_internal/cli/main.py", line 60 sys.stderr.write(f"ERROR: {exc}") ^ SyntaxError: invalid syntax
とget-pip.pyが2.7だと動かない。つまり2.7系ではpipが入らない。
あまりpythonでがんばる気はないので、ここはあっさり諦めました。
では気をとりなおして、3系で動かしてみると次の2点でハマる:
printは3系では()で括る必要があります。
xrange
これもあるある(らしい)。
xrangeは廃止されrangeを使う。
おわりに
とまぁ、2点直せばひとまず動きました。
ただ肝心のプログラムの一部はうまく動かないみたい。 そもそも配列が空っぽの結果を返す関数がある。要調査ですな。
Rubyに慣れた身としては、pythonがこんなに普及している理由がよく分かりませんね。
最初はわけも分からずanacondaを入れてしまったり、あまりお行儀が良いとは思えない環境構築で正直混乱しました。 こういったインストール関係も一癖ある気がします。
文法はインデントの癖を受け入れれば、ほかはRubyに近い部分はありそうです。 個人的には区切りはendで括るほうが好きですね。