あ、そうだ画像保存しなきゃ、と思って修正したら
plt.show()
plt.savefig("test.png")
のような順番でした
これが画像は白紙の原因。
ただしくは、show()をあとで書かないといけないみたい
plt.savefig("test.png")
plt.show()
関連記事
ランキング参加中です
↓クリックしていただけると嬉しいです〜
あ、そうだ画像保存しなきゃ、と思って修正したら
plt.show()
plt.savefig("test.png")
のような順番でした
これが画像は白紙の原因。
ただしくは、show()をあとで書かないといけないみたい
plt.savefig("test.png")
plt.show()
↓クリックしていただけると嬉しいです〜
エラーメッセージは
Matplotlib created a temporary cache directory at /tmp/matplotlib-nmam8fv7 because there was an issue with the default path (/var/www/.cache/matplotlib); it is highly recommended to set the MPLCONFIGDIR environment variable
みたいな感じ
/var/www/.cache/matplotlib に書き込めないから一時的に別の場所にファイルを作ったよとエラー(ワーニング?)が出る
ホームディレクトリに書き出す場所を作る
sudo mkdir -p ~/.config/matplotlib
sudo chmod -R 777 /home/【username】/.config/matplotlib
Matplotlib created a temporary config/cache directory
これもやってみたが、特に改善はしなかった・・・
sudo chown -R www-data:www-data /var/www/.cache/
これでワーニングメッセージは出なくなった
↓クリックしていただけると嬉しいです〜
上記のサイトでは
/etc/apache2/conf-available/cgi-enabled.conf
にその設定を書き込むように書いてあるが、自分の環境では動かなかった・・・
代替手段としては
sudo emacs /etc/apache2/mods-available/cgid.conf で下に、 AddHandler cgi-script .py と追記する
これで行けるなら?
ということで、別の設定ファイルに追記してみた
sudo emacs /etc/apache2/conf-available/serve-cgi-bin.conf
<IfDefine ENABLE_USR_LIB_CGI_BIN>
ScriptAlias /cgi-bin/ /var/www/html/hogehoge/cgi-bin/
<Directory "/var/www/html/hogehoge/cgi-bin/">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .py
Require all granted
</Directory>
</IfDefine>という行を下の方に追記した
hogehogeは自分の環境に合わせて変更してください
公開されるページは、 /var/www/html/hogehoge に下に書かれているhtmlなどなど
SymLinksIfOwnerMatch
は、そのディレクトリに置いてあるシンボリックリンクも遡って公開するか? という設定
ExecCGI
は、cgi-binを使うために必要だと思う
AddHandler cgi-script .py
がpythonの拡張子を持ったスクリプトのみ走るようにする制限
今回はまだハマっていないけど、以前ありがちだった罠をメモしておきます
↓クリックしていただけると嬉しいです〜
python3.13でcgiを使おうとしたら、パッケージがないと言われた
調べてみたら、python3.13 からcgiはデフォルトのパッケージではなくなったらしい
困った・・・と思って調べてみると、legacy-cgiというパッケージがあるらしい
mamba install legacy-cgi
google のAIがimportするコマンドはこうだよ?と言ってきたコマンドではエラーが出る
調べてみると
import legacy_cgi
でも
import legacy-cgi
でもなく
import cgi
でOK
(要するに以前のコードは変えなくてもいいっぽい)
他にも
import cgitb
もエラーなく使えました
どうやら、cgiの実行時のエラーの表示のされ方が以前と少し異なる・・・
エラーが画面にそのままでない
開発→コードを表示
のようにして、やっとエラーがわかるような感じ
不便なので、python3.12をインストールしなおしてどうなるかみてみる
一応、これでうまくいった
DeprecationWarning: 'cgi' is deprecated and slated for removal in Python 3.13
というワーニングがやたらと出るがしょうがないね
↓クリックしていただけると嬉しいです〜
.zshrcの一番最後に、mambaをactivateするためのおまじないは書かれている
が、新しくターミナルを開いた時にmamba のbaseがactivateされていないとき
mamba init
としても、そもそも、そういうオプションがないっぽい
代わりに、
conda init
としても、なぜか .bashrcが更新される
conda init zsh
が正解っぽい
これで
これで ~/.zshrc が更新された
次回ターミナルを開いた時はデフォルトでbaseがactivateされていた
↓クリックしていただけると嬉しいです〜

は別物らしい
その区別は上記のリンクを参照
今回は mambaが使いたいので、 miniforgeをインストールする
mambaはc++で書かれてるので? 通常のcondaよりも早い
# スクリプトを落としてくる wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" # スクリプトを走らせる bash Miniforge3-$(uname)-$(uname -m).sh
この後、いくつか質問が出たり、yesと打つ
最後に、初期設定をやるか聞かれるのでやっておく
Proceed with initialization? [yes|no]
[no] >>> yes
これで .zshrcの最後にインストールされたminiforgeの設定が追記された
以前から使ってるDebianの.zshrcがあるけど、そのときはanacondaだった気がするので微妙にリンクが違う・・・
なので、これはありがたい
インストールはかなりすぐに終わった。
ここにコマンドラインが載ってる
設定を解除して、rmしていくのでOK
# Use this first command to see what rc files will be updated conda init --reverse --dry-run # Use this next command to take action on the rc files listed above conda init --reverse # Temporarily IGNORE the shell message # 'For changes to take effect, close and re-open your current shell.', # and CLOSE THE SHELL ONLY AFTER the 3rd step below is completed.
CONDA_BASE_ENVIRONMENT=$(conda info --base)
echo The next command will delete all files in ${CONDA_BASE_ENVIRONMENT}
# Warning, the rm command below is irreversible!
# check the output of the echo command above
# To make sure you are deleting the correct directory
rm -rf ${CONDA_BASE_ENVIRONMENT}rm -f "${HOME}/.condarc"
rm -fr ${HOME}/.conda
↓クリックしていただけると嬉しいです〜