実現したいこと
spaCyの言語モデルであるen_core_web_smを読み取れるようにしたいです。
前提
FlaskアプリをEC2(ubuntu)上にデプロイしています。
サーバーはGunicornとnginxを利用しています。
サーバー上でspaCyの言語モデルであるen_core_web_smを利用したいのですがエラーが出てしまいます。
ローカル環境はpython3.1..1を使用しました。
本番環境ではpython3.11.6を使用しています。
発生している問題・エラーメッセージ
ローカル環境であるwindows上では上手く読み取ってくれますが、本番環境では上手く読み取れません。
Nov 26 12:45:58 ip-10-0-100-91 gunicorn[30523]: File "/home/ubuntu/flask-app-project/apps/scrapy/views.py", line 86, in text_mining Nov 26 12:45:58 ip-10-0-100-91 gunicorn[30523]: File "/home/ubuntu/flask-app-project/my-flask-app/lib/python3.10/site-packages/spacy/__init__.py", line 51, in load Nov 26 12:45:58 ip-10-0-100-91 gunicorn[30523]: return util.load_model( Nov 26 12:45:58 ip-10-0-100-91 gunicorn[30523]: File "/home/ubuntu/flask-app-project/my-flask-app/lib/python3.10/site-packages/spacy/util.py", line 472, in load_model Nov 26 12:45:58 ip-10-0-100-91 gunicorn[30523]: raise IOError(Errors.E050.format(name=name)) Nov 26 12:45:58 ip-10-0-100-91 gunicorn[30523]: OSError: [E050] Can't find model 'en_core_web_sm'. It doesn't seem to be a Python package or a valid path to a data directory. Nov 26 12:45:58 ip-10-0-100-91 gunicorn[30523]: 2023-11-26 12:45:58,798 INFO sqlalchemy.engine.Engine ROLLBACK
該当のソースコード
python
1def text_mining(title_list, keyword, year1, year2): 2 3 titles = [title for title in title_list] 4 titles = ','.join(titles) 5 6 7 # ロギングの初期化 8 logging.basicConfig(filename='/path/to/your/logfile.log', level=logging.DEBUG) 9 10 # SpaCyモデルのロード前にログメッセージを追加 11 logging.debug("Loading SpaCy model...") 12 13 # SpaCyモデルのロード 14 nlp = spacy.load('en_core_web_sm') 15 #nlp = spacy.load(r'/home/ubuntu/.local/lib/python3.11/site-packages/en_core_web_sm-3.7.1/meta.json') 16 17 # SpaCyモデルのロード後にログメッセージを追加 18 logging.debug("SpaCy model loaded successfully.") 19 20 # テキストを解析 21 doc = nlp(titles)
試したこと
ソースコードにも記載していますが、en_core_web_smのpathを直接記載してもダメでした。
しかし、ソースコードの関数のみのファイルを作成し、実行した結果上手く読み取ることができました。
補足情報(FW/ツールのバージョンなど)
仮想環境中のライブラリなどのファイルは「/python3.10/site-packages」下にインストールされており、
アプリもそのフォルダを参照しているように思えますが、spaCyのen_core_web_smは
「/python3.11/site-packages」下にインストールされているように思えます。
python3.11.6を利用しています。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。