前回、さくらレンタルサーバに Python 3.7.1 を導入しようとしたところ、ModuleNotFoundError: No module named ‘_ctypes’ というエラーでビルドに失敗した。3.6.5 でのインストール報告が結構あるので、バージョンを落として試してみる。
Contents
hide
ダウンロードと展開
1 2 3 4 |
% wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz % tar xvf Python-3.6.5.tgz % cd Python-3.6.5 |
次に設定。
設定
こちらを参考に、Modules/setup.dist
を編集。以下のラインをアンコメントする。
1 2 |
#_socket socketmodule.c |
1 2 3 4 5 |
#SSL=/usr/local/ssl #_ssl _ssl.c \ # -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ # -L$(SSL)/lib -lssl -lcrypto_ |
次に、.configure。なのだけど、こちらを参考に、SSLライブラリの紐付けをする。
1 2 |
% ./configure --prefix=$HOME/local/ CPPFLAGS="-I/usr/local/ssl/include" LDFLAGS="-L/usr/local/ssl/lib" |
ビルド
make
、 make install
を実行。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<br />% make ...(略) # is not available in configure sed -e "s,@EXENAME@,/home/{user name}/local/bin/python3.6m," < ./Misc/python-config.in >python-config.py # Replace makefile compat. variable references with shell script compat. ones; -> LC_ALL=C sed -e 's,\$(\([A-Za-z0-9_]*\)),\$\{\1\},g' < Misc/python-config.sh >python-config # On Darwin, always use the python version of the script, the shell # version doesn't use the compiler customizations that are provided # in python (_osx_support.py). if test `uname -s` = Darwin; then cp python-config.py python-config; fi |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
% make install ...(略) (cd /home/{user name}/local/bin; ln -s pydoc3.6 pydoc3) rm -f /home/{user name}/local/bin/2to3 (cd /home/{user name}/local/bin; ln -s 2to3-3.6 2to3) rm -f /home/{user name}/local/bin/pyvenv (cd /home/{user name}/local/bin; ln -s pyvenv-3.6 pyvenv) if test "x" != "x" ; then rm -f /home/{user name}/local/bin/python3-32; (cd /home/{user name}/local/bin; ln -s python3.6-32 python3-32) fi rm -f /home/{user name}/local/share/man/man1/python3.1 (cd /home/{user name}/local/share/man/man1; ln -s python3.6.1 python3.1) if test "xupgrade" != "xno" ; then case upgrade in upgrade) ensurepip="--upgrade" ;; install|*) ensurepip="" ;; esac; ./python -E -m ensurepip $ensurepip --root=/ ; fi Collecting setuptools Collecting pip Installing collected packages: setuptools, pip Successfully installed pip-9.0.3 setuptools-39.0.1 |
通った!
で、.cshrc
ファイルを編集し、パスを通す。
1 2 |
set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) |
を
1 2 |
set path = ($HOME/local/bin /sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) |
にする。そして、リログイン。
結果
1 2 3 |
% python --version Python 2.7.6 |
何??! $HOME/local/bin
を覗くと、python3
で入ってるみたい。
1 2 3 |
% python3 --version Python 3.6.5 |
おっし。で、肝心のSSLの紐付け。
1 2 3 |
% python3 -c 'import ssl; print(ssl.OPENSSL_VERSION)' OpenSSL 1.0.2o 27 Mar 2018 |
完璧。
で、これで使えるようになったけど、コマンド名が python
じゃなくて python3
て。これは想定外。んー、道は険しい。