なろう分析記録

『小説家になろう』をふくめ『ネット小説投稿サイト』を分析する。コード置き場,主にPython,javascript,たまに創作。

【レンタルサーバー】バリューサーバー新仕様マイグレーションへの対応メモ【Python/Flask】

バリューサーバーのアップデート

2021/12/13頃に以前からなろう作者分析などのサイトで利用しているvalue-serverが新仕様にアップデートされ、それに伴い手動で対応しなければならなかったことのメモを書き残しておきます

環境

Python 3.7.4

主要パッケージ

  • Flask
  • Pandas

pyenvでPython,Flaskを入れて動かしている感じです

上記の環境で「500 Internal Server Error」がでてしまいwebページが正常に表示されなかったので以下の対応を行いました

対応メモ

index.cgi

#!/virtual/アカウント名/.pyenv/versions/3.7.4/bin/python
# -*- coding: utf-8 -*-

import cgitb
cgitb.enable()

from wsgiref.handlers import CGIHandler

from main import app
import os
os.environ["SERVER_NAME"] = "https://mirunovel.com/"
os.environ["SERVER_PORT"] = "443"
os.environ["REQUEST_METHOD"] = "GET"
os.environ['OPENBLAS_NUM_THREADS'] = "1"

CGIHandler().run(app)


修正箇所

import os
os.environ["SERVER_NAME"] = "https://mirunovel.com/"
os.environ["SERVER_PORT"] = "443"
os.environ["REQUEST_METHOD"] = "GET"
os.environ['OPENBLAS_NUM_THREADS'] = "1"

の部分を追記

os.environ['OPENBLAS_NUM_THREADS'] = "1"

この部分でマルチスレッドを無効化しないとnumpyでエラーが出る

参考ページ
Flask - CGIサーバーで動作するPythonのimportエラー|teratail

main.pyの修正

NumpyおよびNumpyを依存パッケージとして使用しているパッケージ(pandasなど)を関数内でimportする

ダメな例

import requests
import glob
import pands as pd

def  remove_check_xlsx():
    df = pd.DataFrame(exportlist, index=column_name)
~~


良い例

import requests
import glob

def  remove_check_xlsx():
    import pands as pd
    df = pd.DataFrame(exportlist, index=column_name)

追記

たぶん問題の原因となると考えられるその他のパッケージ

joblib
sqlite3

これらも関数内に移動することでエラーを回避できる

【作業メモ】pip-reviewの No module named 'pip._internal.utils'エラーをpipの手動再インストールで解決した方法

No module named 'pip._internal.utilsのエラー

久しぶりにpip-reviewを用いてPythonパッケージを一括アップデートしようとした所、pip関係と思われるエラーに遭遇したのでその解決方法のメモを残しておきます

続きを読む

【Python GUI】「tkinter」で関数実行中にウィンドウがフリーズしてしまう問題を「threading」を使って回避する方法

tkinterGUIを作ると関数実行中に固まってしまう……

PythonGUI実装ライブラリはいくつか存在しますが、その中でも「tkinter」はPythonに最初から入っている最もシンプルなライブラリです。

今回は「tkinterで実装したGUIのボタンクリックで動作する処理がフリーズしてしまう問題」を「threading」を使うことで回避するサンプルコードをご紹介したいと思います。

f:id:karupoimou:20200427170210p:plain
フリーズ……

続きを読む