[flask] ubuntu 20.04 ec2 ModuleNotFoundError 해결 및 배포

vector13·2022년 11월 20일
0

배포 방법 :

git pull 해서 github repository를 pull 한 다음 runserver.py 실행으로 서버 동작

명령어 모음

sudo apt update 
sudo mkdir app
cd app
sudo mkdir step1
cd step1

sudo apt install git 
sudo git clone https://github.com/ArchiveElder/ae_FlaskServer.git

sudo apt install python3-pip
sudo pip3 install flask flask_cors

sudo pip3 install tensorflow
sudo pip3 install keras
sudo pip3 install pymysql
sudo pip3 install numpy 
sudo pip3 install pandas 

sudo chmod 777 ae_F*

sudo vim deploy.sh (밑의 배포스크립트 작성) 
sudo chmod +x deploy.sh

cd ae_F*
sudo python3 runserver.py 

--- *tensorflow 에러 -- 

배포스크립트 (app/step1 바로밑에 있음)

#!/bin/bash

REPOSITORY=/home/ubuntu/app/step1
PROJECT_NAME=ae_FlaskServer

cd $REPOSITORY/$PROJECT_NAME/

echo ">git pull"
git pull

echo ">현재 구동중인 애플리케이션 pid 확인"
CURRENT_PID=$(pgrep -f runserver.py)

echo "현재 구동중인 어플리케이션 pid : $CURRENT_PID"

if [ -z "$CURRENT_PID" ]; then
    echo "> 현재 구동중인 애플리케이션이 없으므로 종료하지 않습니다."
else
    echo "> kill -9 $CURRENT_PID"
    sudo kill -9 $CURRENT_PID
    sleep 5
fi

echo ">새 어플리케이션 서버 실행"
sudo nohup python3 runserver.py 2>&1 &

역시 우려하던 tensorflow import 에러가 나옴

에러해결 (시도10번을 해보세요)

시도 1 uninstall 다음 다시 install → 안됨

pip uninstall tensorflow
pip install tensorflow

시도 2 : venv에 설치 후 해보기

sudo apt install python3-venv 
python3 -m venv scrap
source /home/ubuntu/app/step1/ae_FlaskServer/scrap/bin/activate

(venv) 

pip install --upgrade pip
pip install --upgrade TensorFlow
deactivate

cd ..

sudo python3 runserver.py

시도 3 :

sudo python3 -m pip install tensorflow

아무래도 계속 설치하다가 kill 당하는게 메모리 부족인거같아서

시도 4

pip uninstall tensorflow
pip --no-cache-dir install tensorflow

우앙 깔리는거같애

근데 안됨

시도 5 venv 에 위의 명령어 주기

source /home/ubuntu/app/step1/ae_FlaskServer/scrap/bin/activate
pip uninstall tensorflow

(venv) 
pip3 --no-cache-dir install tensorflow

시도 6 gpu (이건 아예 다른 패키지임! 패스)

pip uninstall tensorflow
pip --no-cache-dir install tensorflow-cpu

시도 7

https://bobbyhadz.com/blog/python-no-module-named-tensorflow

pip uninstall tensorflow
pip3 install tensorflow --no-cache-dir

시도 8

이전 venv 지우고

sudo rm -rf scrap

sudo apt install python3-venv
sudo python3 -m venv .venv
source .venv/bin/activate
pip3 install tensorflow --no-cache-dir

중간에 폴더도 다시 지우고 git clone 다시 받아보기도함

pip list 하면 venv 와 아닌 곳 모두 있음 (2.11버전)

버전 문제인가? 싶어서

시도 9

일단 venv 와 그 바깥 모두 uninstall 해주고

https://www.tensorflow.org/install/pip?hl=ko
내거에 맞는 (python3.8) 패키지를 URL로 설치

(venv) 
pip3 install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/home/ubuntu/app/step1/ae_FlaskServer/.venv/lib/python3.8/site-packages/typing_extensions.py' Consider using the -user option or check the permissions.

에러가 떠서

pip3 install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl --user

ERROR: Can not perform a '--user' install. User site-packages are not visible in this virtualenv.

에러뜸

venv 밖에

pip3 install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl --no-cache-dir

경고뜸

toco and toco_from_protos are installed in '/home/ubuntu/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

sudo vim ~/.bashrc

(아래 내용 추가) 
export PATH=$PATH:/home/ubuntu/.local/bin

그리고 다시 pip3 install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl --no-cache-dir

그리고 서버 띄우면 안됨

시도 10 위의 명령어를 venv에서 실행

source .venv/bin/activate
sudo pip3 install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl --no-cache-dir

tensorflow 말고 config 가 없다는 에러가 나옴!!!

sudo pip3 install config 해주고

우앗!! 서버가 동작한다.

이제 venv에서 실행하는게 아니라 배포스크립트 deploy.sh 를 써서 해도?

동작한다!

profile
HelloWorld! 같은 실수를 반복하지 말기위해 적어두자..

0개의 댓글

관련 채용 정보