centOS7上にて、
$ sudo yum install httpd mod_wsgi
$ pyenv install 3.5.1
$ pyenv rehash
$ pyenv global 3.5.1
としてPython3.5.1にしたつもりなんですが、Apache + Djangoでエラー時に、以下のようにPythonが2.7のままです。
Request Method: GET
Request URL: http://localhost/myapp
Django Version: 1.9.1
Exception Type: SyntaxError
Exception Value:
invalid syntax (forms.py, line 31)
Exception Location: /home/foo/workspace/myproject/myapp/views.py in myapp, line 23
Python Executable: /usr/bin/python
Python Version: 2.7.5
Python Path:
['/home/foo/workspace/myproject',
'/home/foo/.pyenv/versions/3.5.1/lib/python3.5/site-packages',
'/usr/lib/python2.7/site-packages/pip-7.1.2-py2.7.egg',
'/usr/lib64/python27.zip',
'/usr/lib64/python2.7',
'/usr/lib64/python2.7/plat-linux2',
'/usr/lib64/python2.7/lib-tk',
'/usr/lib64/python2.7/lib-old',
'/usr/lib64/python2.7/lib-dynload',
'/usr/lib64/python2.7/site-packages',
'/usr/lib64/python2.7/site-packages/gtk-2.0',
'/usr/lib/python2.7/site-packages']
SERVER_SOFTWARE : 'Apache/2.4.6 (CentOS) mod_wsgi/3.4 Python/2.7.5'
これを、Python3.5.1に変えるにはどのようにすれば良いのでしょうか?
よろしくお願いします。
そのコマンドプロンプトで、python -v して 3.5.1 が返ってくるなら、原因はこれかしら。
Daemon Mode
wsgi_modはデフォルトで「Embedded Mode」になっている。
ApacheでPython3+Django ~Mac~ - Qiita
「Embedded Mode」はApacheを再起動しないとpythonファイルが更新されない。
pythonの修正を即時に反映させるためには、「Daemon Mode」に設定する。
もし、コマンドプロンプトで 3.5.1 が返ってこないなら、PATH で .pyenv よりも /usr/local/bin の方が先になってるからとか。
TransFreeBSD>遅まきですが、
TransFreeBSD>手元の環境だとshared library下記のようになってます。
ライブラリ XXX をコンパイル&リンクするときは、
$ cc ... -lXXX
で、libXXX.so は、libXXX.so.9.99 へのシンボリックリンクになっている。
というのが、一般的だと思ってたんですが、違うのかな...
# もちろん、インターフェースに互換があるというのが前提ではありますけど。
しかし多くはlibpython.soとかバージョン番号のはいらないシンボリックリンクも持つことが多いですけど、pythonはないんですよね。
configureでpythonバイナリ求めてるのは、
https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/configure#L2851
https://github.com/GrahamDumpleton/mod_wsgi/blob/develop/configure#L2904
このへんでバージョン番号を得てライブラリ名などコンパイルやリンクに必要なオプション(-lpython2.7とか)を得るためのようです。
pythonは別バージョンリンクしたかったらコンパイルしなおさなくてはならないのが仕様のようです。
本家で mod_wsgi 3.0 を出してないってことは、何か問題があるのかも、ということも合わせて。