

webサーバーにnginxを、アプリケーション部分にflaskを使用してアプリケーションを作ろうと思っており、uWSGIを利用することにしました。

下記サイトを参考に進めていたのですが、  
`Milestone #4` のuWSGIの起動のところでエラーが発生してしまいます。  
<https://vladikk.com/2013/09/12/serving-flask-with-nginx-on-ubuntu/>

エラー内容は、uWSGIのログを確認したところ下記内容でした。  
python
version:2.7.14と記載があるのですが、pyenvを使ってpythonのバージョンは3.6にしているため、パスがおかしいことが問題かと思っていますが、中々解消されません。  
何かアドバイスをいただけますでしょうか。

[code]

    *** Starting uWSGI 2.0.17.1 (64bit) on [Tue Oct 23 14:06:13 2018] ***
    ・・・一部省略・・・
    *** WARNING: you are running uWSGI without its master process manager ***
    your processes number limit is 3860
    your memory page size is 4096 bytes
    detected max file descriptor number: 1024
    lock engine: pthread robust mutexes
    thunder lock: disabled (you can enable it with --thunder-lock)
    uwsgi socket 0 bound to UNIX address /home/ec2-user/***/***/***_uwsgi.sock fd 3
    Python version: 2.7.14 (default, May  2 2018, 18:31:34)  [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
    Set PythonHome to /home/ec2-user/.pyenv/versions/3.6.0/lib/python3.6/
    ImportError: No module named site
    
[/code]

参考情報

[code]

    $ python --version
    Python 3.6.0
    
[/code]

~/.bash_profile中身

[code]

    #export PATH=$PATH:$HOME/.local/bin:$HOME/bin
    
    export PYENV_ROOT="$HOME/.pyenv"
    PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init -)"
    export PYTHONHOME="$PYENV_ROOT/versions/3.6.0/lib/python3.6"
    export PYTHONPATH="$PYENV_ROOT/versions/3.6.0/lib/python3.6"
    
[/code]

~/.bashrc

[code]

    # User specific aliases and functions
    PYTHONPATH=:/home/ec2-user/.pyenv/versions/3.6.0/lib/python3.6/
    #PYTHONPATH=/home/ec2-user/***/***
    
[/code]

***_uwsgi.ini

[code]

    ・・一部省略・・
    home = /home/ec2-user/.pyenv/versions/3.6.0/lib/python3.6/
    #pythonpath = ~/.pyenv/shims/python3.6
    pythonpath = /home/ec2-user/.pyenv/versions/3.6.0/lib/python3.6
    ・・一部省略・・
    
[/code]


CC BY-SA 4.0
2018-10-23T14:57:31.747
49584
2018-10-24T02:42:23.463
30649
question
python python3 nginx pyenv uwsgi
uWSGIをpython3.6で使用したい


参照されたサイトは、システム上のPython2を使ってvirtualenv環境を作成して、仮想環境内のpipを使ってuwsgiなどをインストールしているようです。kuunosuke
さんはpyenvで3.6をインストールしてそれを使いたいそうなので、参考サイトのとおりにやるのと違う手順になるかと思います。

uwsgiのログにpython
version:2.7.14と表示されているのは、virtualenv環境を作成時に、pyenvでインストールしたpython3.6からではなく、システム上のpython2を使って仮想環境を作成したのではないでしょうか？

python3.6で同じようにやるとしたら、

`virtualenv venv`

としているところを

`virtualenv -p /home/ec2-user/.pyenv/versions/3.6.0/bin/python venv`

として、システムpython2ではなく、作成したpyenvの3.6をベースに仮想環境を作成することを明示したら良いと思います。（もしくは3.6にはvirtualenv相当のvenvが標準ライブラリにあるのでそれを使っても良いです。`/home/ec2-user/.pyenv/versions/3.6.0/bin/python
-m venv venv`）

PYTHONPATHの設定などは自分で環境変数を設定するのではなくvirtualenvに任せるようにし、activateした仮想環境で `pip
install`するようにすれば参考サイトと同じようにできると思います。  
activateされた上では(venv)とプロンプトに表示されますのでそれを確認して正しくライブラリをインストールすると良いと思います。


CC BY-SA 4.0
2018-10-24T02:42:23.463
49595
2018-10-24T02:42:23.463
28626
49584
answer