wafflestudio / seminar-2020

2020 Rookies 세미나

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PythonHome 지정 문제

just-dodo opened this issue · comments

허허....Python home 을 지정 안해줬다고 뜨네요....^^....
혹시 같은 에러 뜨신 분 게실까요?
uwsgi가 실행이 되지 않고, 아래와 같이 로그에 문제가 뜹니다.
어제 새벽 4시부터 이 문제만 붙들고 있어서 결국 이슈를 올립니다.

!!! Python Home is not a directory: /home/ec2-user/.pyenv/versions/waffle-deploy !!!
Set PythonHome to /home/ec2-user/.pyenv/versions/waffle-deploy
Python path configuration:
  PYTHONHOME = '/home/ec2-user/.pyenv/versions/waffle-deploy'
  PYTHONPATH = (not set)
  program name = '/home/ec2-user/.pyenv/versions/waffle-deploy/bin/python'
  isolated = 0
  environment = 1
  user site = 1
  import site = 1
  sys._base_executable = '/home/ec2-user/.pyenv/versions/waffle-deploy/bin/python'
  sys.base_prefix = '/home/ec2-user/.pyenv/versions/waffle-deploy'
  sys.base_exec_prefix = '/home/ec2-user/.pyenv/versions/waffle-deploy'
  sys.executable = '/home/ec2-user/.pyenv/versions/waffle-deploy/bin/python'
  sys.prefix = '/home/ec2-user/.pyenv/versions/waffle-deploy'
  sys.exec_prefix = '/home/ec2-user/.pyenv/versions/waffle-deploy'
  sys.path = [
    '/home/ec2-user/.pyenv/versions/waffle-deploy/lib/python38.zip',
    '/home/ec2-user/.pyenv/versions/waffle-deploy/lib/python3.8',
    '/home/ec2-user/.pyenv/versions/waffle-deploy/lib/python3.8/lib-dynload',
  ]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'

제 ini 파일입니다.

[uwsgi]
chdir = /home/ec2-user/waffle-rookies-18.5-backend-2/waffle_backend
module = waffle_backend.wsgi:application

home = /home/ec2-user/.pyenv/versions/waffle-deploy
demonize = /home/ec2-user/waffle.log
virtualenv = /home/ec2-user/.pyenv/versions/waffle-deploy
uid = deploy
gid = deploy

socket= /home/ec2-user/sockets/waffle-backend.sock
chmod-socket=666
chown-socket=deploy:deploy

single-interpreter = true
enable-threads = true
master = true
vacuum = true
pidfile = /tmp/waffle-backend.pid
logto = /var/log/uwsgi/waffle-backend/@(exec://date +%%Y-%%m-%%d).log
log-reopen = true

pyenv 설치 시에
https://medium.com/@ankitgin/installing-pyenv-in-amazon-linux-ec2-899667e208ea

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

이 부분 혹시 해주셨나요?? (.zshrc는 사용 쉘에 따라 다릅니다)

넵 ㅠㅠ 아래와 같이 설정했습니다
image

@dodo4114 이거는 결국 본인이 Python 가상환경을 어떻게 만들었는지, Python 설치를 어떻게 했는지에 따라 달려서 이것만으로는 어렵긴 한데, 우선 에러 메시지 그 자체를 받아들여서 찾아봤나요? Python Home is not a directory라고 하고, 읊어주는 거 보면 PYTHONHOME = '/home/ec2-user/.pyenv/versions/waffle-deploy'라고 하는데 정말 저기에 저 가상환경 directory가 존재하는 게 맞는지 등.

그리고 https://medium.com/@ankitgin/installing-pyenv-in-amazon-linux-ec2-899667e208ea 이런 곳에도 있듯이 pyenv 쓰신다면 아래처럼 PYENV_ROOT와 관련 PATH 정의해야할 것이구요.

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

쓰는 와중에 이미 중복으로 위에서 대화가 이어져서 덧붙이자면, 참고로 zshrc든 bash_profile이든 이런 파일 수정하고 나서는 source해서 반영시키는 것도 잊지 말아야합니다.

source ~/.bash_profile

ㅠㅠ감사합니다 ㅠㅜ 위에 말씀 주신 사항들 전부 해봤는데 안되네요 ㅠㅠ 그냥 인스턴스 폭파하는게 답일까요....

ModuleNotFoundError: No module named 'encodings' 여기서 실마리를 찾아야할 거 같기도 하구요. 그냥 파일 경로 관련해서 Python이 근본부터 박살난 상태 같기도. https://stackoverflow.com/questions/38132755/importerror-no-module-named-encodings

근데 정작 질문에 무엇을 실행했을 때 이 에러가 발생하는지가 중요한데 이 질문에 그게 빠져있는 것 같습니다. uwsgi 실행이라면 Python 가상환경에서 실행하고 있는 게 맞는지도 확인해야겠네요.

아 넵넵 맞습니다. uwsgi가 실행이 되지 않고, 위와 같이 로그에 문제가 뜹니다.