seminar-2020
seminar-2020 copied to clipboard
PythonHome 지정 문제
허허....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는 사용 쉘에 따라 다릅니다)
넵 ㅠㅠ 아래와 같이 설정했습니다
@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가 실행이 되지 않고, 위와 같이 로그에 문제가 뜹니다.