デスクトップPCの無線化とルーター(AP)設置による速度向上

はじめに

 パソコンは有線LAN派ですでした。ただ、先日、有線と無線の速度をいろいろと測定していた時に、
「無線でもacなら十分に速度出てるよね、そんなに速度必要な場面ないよね(windowsvisual studio, itunesのアップデートくらい??)、ってかケーブル鬱陶しいよね」
ということに気づきました。完全に時代に乗り遅れてますね。ということで、これ買って速度テストしてみました。wifi6は高いしまだいいかな…ってかマンションのwifiもたぶん対応してないだろうし。
Amazon | ZYT 1200Mbps WiFi 無線LANカード【TELEC認証済(認証番号:210-146705)】 | Intel AC-7265モジュール | Bluetooth4.2対応 | デュアルバンド(5GHz 867Mbps / 2.4GHz 300Mbps) | Windows10/8.1/8/7(32 64Bit) OS対応 | Ziyituod | ネットワークカード 通販

f:id:easygoingrider:20211010003259j:plain:w200
無線LANカード
ついでに、マンションに備え付けの無料wifi(GIGAPRIZEのRentAgentネット)を使っているのですが、これにルーターかましたらアンテナの向きとか調整できる関係で少し早くなるんじゃね?ということでルーターをアクセスポイントモード(APモード)で設置して速度を測ってみました。使ったルーターはこちら
WN-DX1167R | Wi-Fi(無線LAN)ルーター | IODATA アイ・オー・データ機器

結果

 こちらになります。無線で378Mbpsも出てれば十分ですね。

有線LAN マンションの2.4GHz マンションの5GHz ルーターの2.4GHz ルーターの5GHz
f:id:easygoingrider:20211010005607p:plain
有線LAN
f:id:easygoingrider:20211010005636p:plain
w/o router, 2.4GHz
f:id:easygoingrider:20211010005703p:plain
w/o router, 5GHz
f:id:easygoingrider:20211010005809p:plain
with router, 2.4GHz
f:id:easygoingrider:20211010005847p:plain
with router, 5GHz

 わかったことは
①有線は確かに1.5 ~ 2倍くらい早いが、これが生きるシチュエーションがあるのかはよく考えるべき
②遮蔽物が少ない11ac 5GHzは普通に早い
といったところでしょうか。あと、マンションの11n 2.4Gがくそ遅い…場所が悪いのか混線か??
 やっぱりアンテナ調整できると早いですね。マンションの壁に埋め込まれてるルーターから出てくるwifiよりも、部屋の中にwifiルーター設置してAPモードで有線LANの下にぶら下げたほうが良かったです。ルーターの向きや無線LANカードのアンテナの角度などの調整は全くしていないので、頑張ったらもう少し早くなるかもです。これなら十分に満足です。さらにBluetoothもついたのでめっちゃ快適です。もっと早くやればよかった。
 最後に、使ったデスクトップPCの仕様です。
CPU: Intel(R) Core(TM) i7-3770
M/B: ASUSTek P8H77-M
SSD: Crucial m4 CT512M4SSD1
OS: Windows10 Pro 21H1
有線LAN: on board
無線LAN: Ziyituod ZYT-7265

GIGAPRIZEのRentAgentネットの速度と、鬱陶しい光回線(ついでにウォーターサーバーとか電気とか)の勧誘(積水ハウスはひどい)

我が家のGIGAPRIZEのRentAgentはそこまで遅くなかった。

 という結論でした。

ことの発端

 マンションを借りるとき、無料インターネット使い放題!!ということでしたのでウキウキで今の部屋を契約しました。内覧とかめんどかったので、すべてネットの情報のみで(google map, street viewを駆使)契約していました。IT重説対応物件というらしく、便利な世の中になったものですね。しかも、テレビ電話とかで前もって部屋の中を見ることなく契約していたので、あまり細かいことはよくわからないまま契約しちゃってました。もちろん、部屋の様子はwebサイトからくまなく見ており、頑張って部屋の写真を拡大するとLANコネクタのようなパネルが壁に付いているように見えたので、有線LANで接続できるものと思っていました。
 ところが、いざ契約&鍵受け取りのために不動産屋に行って話を聞いたら、有線LANは使えない、というではありませんか。しかもCATVとか言い出しやがるし…まぁ環境によってはCATVでもそこまで遅くなかったりするんですけどね。ゴールデンタイムなんかはyoutube見てると全画面モザイクみたいな画質になったりしますが。さらに鍵の受け取りの場で光回線の勧誘。マジうざい。何のための無料インターネット使い放題やねん。
 しかも入居してからも光回線勧誘の電話があちこちからかかってきます。これ、すごいですね。ライフライン開通サポートとか、契約のサービスとか、月々1000円くらいとって安心サポートとか言いながら、個人情報を抜き取りありとあらゆる手段でコンタクトしてきます。その際キャンペーンがどうこう言いながら、ウォーターサーバーとか光回線とか電気とか、次々契約させようとしてきます。これ、なんかの法律に引っかからへのか??個人情報の使い方間違ってるやろ。とりあえず、プレミアムウォーター (premium water)とかいうところは絶対契約したくないですね。また、積水ハウスは最低です。大手だからかやることが死ぬほどセコい。サポートから勧誘電話とか、家賃振込の自動引き落としの際の手数料は自腹とか、まさかそんなこと言われるとは思いませんでした。個人的にはほかの人には絶対おすすめできないです。

ネットワーク速度の測定結果

 前置きが長くなりましたが、本題です。部屋についてるネットは、どうやらGIGAPRIZEのRentAgentというものでした。部屋に入ったその時からwifiに接続できたので、とても便利でした。この点は最高です。
 しかも!!有線LANのコネクタが付いているではありませんか!!なんやねん、嘘つきやがって。あほか。これで光回線契約してたら即訴えるとこでしたわ。
 ということで、有線(デスクトップPC)、無線(ノートパソコン)で通信速度がどんなもんなのか測定してみました。
 結果はこちら(PCスペックは別記)。この測定は土曜日の23:30頃のものです。
 あれ、十分早くね…?

有線(デスクトップPC) 無線(ノートPC)
f:id:easygoingrider:20211010000157p:plain
デスクトップ 有線LAN
f:id:easygoingrider:20211010000224p:plain
ノート Wifi 5GHz

 これなら全く不満はないです。マンションのほかの住人の使用量、測定する時間帯など、環境に大きく依存するはずですが、今住んでいるところは当たりだったのかもしれないです。(昼間に測った時は、ノートでも300Mbps近く出してました。)

測定に使ったPCについて

 どっちもめっちゃ古い!!

デスクトップPC ノートPC
CPU: Intel(R) Core(TM) i7-3770
M/B: ASUSTek P8H77-M
SSD: Crucial m4 CT512M4SSD1
OS: Windows10 Pro 21H1
LAN: on board
VAIO VJP131
CPU: Intel(R) Core(TM) i7-4510U
Mem: 8GB
SSD: SAMSUNG MZHPU256HCGL
OS: Windows10 Home 21H1
Wifi: 5GHz (IEEE 802.11ac)

JuliaでPyPlot使用時のトラブルシューティングで環境変数にQT_PLUGIN_PATH追加時のDropboxのエラーについて

QT_PLUGIN_PATHを環境変数に追加したことによるエラー発生

 以前、JuliaでPyPlotを動かそうとしたとき、plotした瞬間にウィンドウもろとも消えてしまう問題があり、その対処をしました。
easygoingrider.hatenablog.com
その際、Qt Platform Pluginが見つからないよ~というエラーが発生していたので、環境変数に以下のパスを追加していました。( "user"部分は自分の環境に適宜読み替え)
変数:QT_PLUGIN_PATH
値:C:\Users\user\.julia\conda\3\Library\plugins
これで問題は解決していたのですが、このパスを追加したことによって他のアプリケーションにエラーが発生するようになってしまいました。

This application failed to start because no Qt Platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: direct2d, minimal, offscreen, webgl, windows.
f:id:easygoingrider:20211113161619p:plain
Qt platform plugin が見つからないとのこと

私はエラーが出たのはDropboxだけでしたが、ググってみるとOne driveやAutodeskでも同様の症状がある模様。(Autodesk のヘルプには環境変数削除しろとか書いてあった。めっちゃ上から目線でワロタ。それって解決なんか?マイクロソフトのフォーラムでは相変わらず削除と再インストールばっかり勧めてるし…)パスを削除するとdorpboxは動くけど、juliaのpyplotが動かなくなる…

再インストールしてみたが効果なし

 エラーメッセージに再インストールで直るかもよ、と書いてあったのでこちらよりダウンロードして再インストールしてみるが効果なし。
Download - Dropbox

仕方がないのでパスを削除し、とりあえずファイルをJulia実行ファイルと同じ場所へコピー

 とりあえず環境変数は削除することにして、Juliaの実行ファイルがある場所へ、Qt platform pluginをコピーしたら直った。あくまで応急処置ということで…

step1. 以下の環境変数を削除( "user"部分は自分の環境に適宜読み替え)

変数:QT_PLUGIN_PATH
値:C:\Users\user\.julia\conda\3\Library\plugins

step2. Juliaの実行ファイルがある場所を調べる

どんな方法でもいいですが、下記は実行ファイルがある場所を調べる一例です。
スタートメニューからJuliaショートカットを右クリックしてファイルの場所を開くをクリック、さらにショートカットを右クリックしてファイルの場所を開くをクリック。julia実行ファイルがあるフォルダが開いたら開きっぱなしにしておきます。

f:id:easygoingrider:20211113172612p:plainf:id:easygoingrider:20211113172630p:plain
juliaの実行ファイルがある場所を調べる方法の一例
step3. Qt Platform Pluginをコピー

環境変数で設定していたフォルダを開います。
C:\Users\user\.julia\conda\3\Library\plugins
その中にplatformsというフォルダがあるはずなので、フォルダごとコピーして先ほど開きっぱなしにしたjuliaの実行ファイルがあるフォルダへコピー

f:id:easygoingrider:20211113173617p:plainf:id:easygoingrider:20211113173620p:plain
condaのpluginsにあるplatformsフォルダごとjuliaの実行ファイルがある場所へコピー

これでjuliaのpyplotもdropboxも問題なく動くようになりました。本当はもっとスマートな解決方法があるのでしょうが、どうしたらいいのかわかりませんでしたので応急処置ということで。(julia起動時にのみ毎回パス通すよう設定するとか??)このままだとバージョンアップしたりするたびにエラーが出るんだろうなぁ…
あと、環境変数を削除した状態でDropboxを起動し、環境変数を追加してもDropboxにエラーが起こることなく動いていました。いつエラー出るんでしょうね。

内蔵HDDのアクセス速度について:SATA2 vs SATA3 vs USB3.0 ~HDDがSATA3 (6Gb/s)に対応する必要あるの??

ドライブの速度対決

 よくある感じのドライブの速度対決です。先日、内蔵HDDを増設したのでいろんなドライブの速度を計ってみました。PCの構成は、
CPU: Intel(R) Core(TM) i7-3770
M/B: ASUSTek P8H77-M
SSD: Crucial m4 CT512M4SSD1
HDD: Seagate BarraCuda ST8000DM004
OS: Windows 10 Pro 21H1
です。測定対象は、SSD、HDD x2、外付けHDD(IO-DATA EX-HD4CZ)の4台です。HDDに関しては、SATA2とSATA3の2種類でテスト、というか、マザーボードSATAチャンネルは6つあるのですが、SATA3のチャンネルが2つしかなく、SATA2が4チャンネルでしたので、泣く泣くSATA2に接続しました。
 HDDは6Gb/sということですので、SATA3のはずです。ですが、ほんとに早くなるの??というのが疑問で測ってみました。ちなみにケーブルはSATA3に接続してるSSDとHDDは6Gb/sのものを、SATA2につないだHDDはよくわからないくらい古いやつ(Serial ATAとしか書いてない)を使いました。ケーブルは6Gb/sのものでも大して変わらないらしいですね。USB3.0は背面パネルのオンボードのやつです。時期的に、たぶんUSB 3.1 Gen 1 (5Gbps)のやつだと思います。CrystalDiskInfoでのぞいたら、転送モードはSATA/300 (=SATA2)になっていました。

結果

 測定結果がこちらになります。
 あれ、HDDはSATA2でもSATA3でも変わらない…?というか微妙にSATA2のが速い…?

SSD(SATA3) HDD(SATA3) HDD(SATA2) 外付けHDD(USB3.0)
f:id:easygoingrider:20211009220231p:plain
SSD SATA3
f:id:easygoingrider:20211009220211p:plain
HDD SATA3
f:id:easygoingrider:20211009220215p:plain
HDD SATA2
f:id:easygoingrider:20211009220238p:plain
USB3.0

 まぁそんなもんなんですかね。測定方法とか環境とか変えたら違いが見えるのかもしれないですが…というか、ほんとにHDDってSATA3に対応する必要あるんですか…??カタログに書いてある6Gb/sって、どうやったら出せるんですかね。

解決:Python, JupyterLab, Julia, IJulia on Anaconda のインストール

JupyterLabでJulia使ってPyPlotがしたいだけなんや!!

 *2021年11月13日、Qt platform pluginのパスを追加したら他のアプリと競合した件について、記事の一番下のほうに追記あり。またその際の対処法はこちら

 マジでmatplotlibが動かなかった…疲れた…もう自分が悪いと諦めてたが、pythonに詳しい同僚も同じようにjuliaを入れたらmatplotlibが動かなくなり、解決できなかった、と言っていたので、自分のレベルが低くてしょうもないミスでできないだけや、普通の人は使えるんや、、、と決めつけずにもう少しチャレンジしてみた。
 過去の記事はこちら
easygoingrider.hatenablog.com
easygoingrider.hatenablog.com
easygoingrider.hatenablog.com

解決編

 結局、minicondaとchannelsの変更、python3.9.5でうまくいった。よくわからんのでこのおまじないから外れた場合は知りません。

step1. minicondaをインストール

 使ったのは「Miniconda3-py39_4.10.3-Windows-x86_64.exe」。latestはうまくいかなかった。理由は知らん。
インストール中、pathを通すか聞いてくるチェックボックスはチェックしない(たぶんしたらダメ?)。インストールしたら、

conda config --remove channels defaults
conda config --append channels conda-forge
conda install matplotlib
conda install -c conda-forge jupyterlab

を実行。

step2. Juliaをインストール

 使ったのは「julia-1.6.3-win64.exe」。ここでもインストール中にpathを通すか聞いてくるが、チェックしない(たぶんしたらダメ?)。インストールしたら、

julia> ENV["PYTHON"]=""
julia> using Pkg
julia> Pkg.add("PyPlot")
julia> using PyPlot
julia> plot([1,2,3])

これで晴れて動くようになった。マジ長い闘いだった…
ちなみにこの時、PCによってはまだ動かずに、plot([1,2,3])をした瞬間にjuliaのコンソールごと消えてしまう場合がある。自分がそのエラーに遭遇した時は、コンソール上に一瞬エラーコードが見えていた。そこには、

qt.qpa.plugin: Could not load the Qt platform plugin "windows" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

との記載が。ただ、本当に入ってないの??とcondaで確認したら、ちゃんと入っとるやんけ。

(base) C:\Users\user>conda list | find "qt"
pyqt                      5.12.3           py39hcbf5309_7    conda-forge
pyqt-impl                 5.12.3           py39h415ef7b_7    conda-forge
pyqt5-sip                 4.19.18          py39h415ef7b_7    conda-forge
pyqtchart                 5.12             py39h415ef7b_7    conda-forge
pyqtwebengine             5.12.1           py39h415ef7b_7    conda-forge
qt                        5.12.9               h5909a2a_4    conda-forge

そこで、環境変数に以下のパスを追加する(値の方は自分の環境に適宜読み替え)。
変数:QT_PLUGIN_PATH
値:C:\Users\user\.julia\conda\3\Library\plugins
これで動くようになった。
最後に

(@v1.6) pkg> add IJulia

やっと目的のJulia with PyPlot on JupyterLab on conda環境が出来上がった。
マジでもう二度とやりたくない。パスとか環境とかちゃんと勉強してたら簡単に解決できたのだろうか…

 *2021年11月13日追記
 環境変数にQt Pluginのパスを追加したことで、Dropboxが動かなくなってしまった(One driveやAutodeskなどでも同様の問題が発生するかも)。解決方法はこちら。
easygoingrider.hatenablog.com

続:Python, JupyterLab, Julia, IJulia on Anaconda のインストールとmatplotlibの消失、からの再メモインストールと格闘、そして次回に続く

juliaを入れるとmatplotlibが動かなくなる!!

 いやぁ、マジでわけわからん。Anacondaインストール(exeファイルから)、Juliaインストール(exeファイルから)、PyPlotインストール(Pkg.addから)で動かなくなってしまう…なんか根本的に勘違いしてるのかなぁ…ググっても知識不足のせいで答えにたどり着かないよ…

 過去の記事はこちら
easygoingrider.hatenablog.com
easygoingrider.hatenablog.com

 うまくいった記事はこちら(つまり、現在のページでは何も解決していません)
easygoingrider.hatenablog.com

以下、何もうまくいっていないので、自分が見つけた解決方法は上の記事をご覧ください。
Juliaを入れたらmatplotlibが動かなくなってしまう。とりあえずjulia, anacondaをアンインストールしてanacondaを再インストール。
使っているanacondaは、「Anaconda3-2021.05-Windows-x86_64.exe」。また、この後のjuliaのインストールに使用したのは「julia-1.6.3-win64.exe」(と時々「julia-1.0.5-win64.exe」)
まずはanacondaをexeファイルからインストールした状態でmatplotが動くかどうかを確認。
まずは何もせずに

conda list | find "matplot"
matplotlib                3.3.4            py38haa95532_0
matplotlib-base           3.3.4            py38h49ac443_0

どうやらpythonのバージョンは3.8.8の模様。今度は動いた。

(base) C:\Users\user>python
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x0000020DCFF0E160>]
>>> plt.show()

また、jupyterlabが入っているかどうかチェック

conda list | find "jupyter"
jupyter                   1.0.0                    py38_7
jupyter-packaging         0.7.12             pyhd3eb1b0_0
jupyter_client            6.1.12             pyhd3eb1b0_0
jupyter_console           6.4.0              pyhd3eb1b0_0
jupyter_core              4.7.1            py38haa95532_0
jupyter_server            1.4.1            py38haa95532_0
jupyterlab                3.0.14             pyhd3eb1b0_1
jupyterlab_pygments       0.1.2                      py_0
jupyterlab_server         2.4.0              pyhd3eb1b0_0
jupyterlab_widgets        1.0.0              pyhd3eb1b0_1

入っとるがな。
jupyterlabを起動。あれ、動いた。つまりわざわざインストールしなくてもパッケージに含まれてるのか。しかもjupyterlabを起動したら、最初のカーネル選択画面にアンインストールしたはずのjuliaも入ってる…?あ、でもクリックしたらちゃんと起動しなかった。

f:id:easygoingrider:20211103012350p:plain
カーネルエラー!!

とポップアップ。
とりあえず気を取り直してjuliaをexeファイルからインストール、さらにpyplotをインストール
pkgを起動してadd PyPlotを実行

       Added registry `General` to `C:\Users\user\.julia\registries\General`
   Resolving package versions...
   Installed LaTeXStrings ────── v1.2.1
   Installed PyPlot ──────────── v2.10.0
   Installed Parsers ─────────── v2.1.1
   Installed FixedPointNumbers ─ v0.8.4
   Installed ColorTypes ──────── v0.11.0
   Installed MacroTools ──────── v0.5.9
   Installed JSON ────────────── v0.21.2
   Installed Colors ──────────── v0.12.8
   Installed Reexport ────────── v1.2.2
   Installed VersionParsing ──── v1.2.1
   Installed Conda ───────────── v1.5.2
   Installed PyCall ──────────── v1.92.5
    Updating `C:\Users\user\.julia\environments\v1.6\Project.toml`
  [d330b81b] + PyPlot v2.10.0
  [3da002f7] + ColorTypes v0.11.0
  [8f4d0f93] + Conda v1.5.2
  [53c48c17] + FixedPointNumbers v0.8.4
  [682c06a0] + JSON v0.21.2
  [b964fa9f] + LaTeXStrings v1.2.1
  [1914dd2f] + MacroTools v0.5.9
  [69de0a69] + Parsers v2.1.1
  [438e738f] + PyCall v1.92.5
  [d330b81b] + PyPlot v2.10.0
  [189a3867] + Reexport v1.2.2
  [81def892] + VersionParsing v1.2.1
  [2a0f44e3] + Base64
  [ade2ca70] + Dates
  [b77e0a4c] + InteractiveUtils
  [8f399da3] + Libdl
  [37e2e46d] + LinearAlgebra
  [56ddb016] + Logging
  [d6f4376e] + Markdown
  [a63ad114] + Mmap
  [de0858da] + Printf
  [9a3f8284] + Random
  [9e88b42a] + Serialization
  [6462fe0b] + Sockets
  [2f01184e] + SparseArrays
  [10745b16] + Statistics
  [8dfed614] + Test
  [4ec0a83e] + Unicode
    Building Conda ─→ `C:\Users\user\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\299304989a5e6473d985212c28928899c74e9421\build.log`
    Building PyCall → `C:\Users\user\.julia\scratchspaces\44cfe95a-1eb2-52ea-b672-e2afdf69b78f\4ba3651d33ef76e24fef6a598b63ffd1c5e1cd17\build.log`
Precompiling project...
  8 dependencies successfully precompiled in 22 seconds (4 already precompiled)

なんかいろいろちゃんと入った。さらにPyCall も勝手に入った。
次に、

using PyPlot

としたら、なんかインストールが勝手に始まってしまった。
画面が流れてしまって何が入ったのかをメモできなかったが、勝手にいろいろ入った。
このタイミングでplotしたら落ちた。

julia> using PyPlot
julia> plot([1,2,3])
# このタイミングでjuliaコンソールが消えていく…

wow.
さらにanaconda からpythonを起動、matplotlibを動かしたら落ちるようになった。

(base) C:\Users\user>python
Python 3.9.5 (default, May 18 2021, 14:42:02) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x000002856D6A6970>]
>>> plt.show()

おいおい…
また、なぜかpythonが3.9.5になってる。

以上より、たぶんusing PyPlotもしくは、add PyPlotがあかん。
add PyPlotのタイミングでpythonのバージョンとかどうなってるか調べたい?

とりあえずpythonを3.8.8 に戻してみる。

conda install python=3.8.8

さらにanacondaから描画を試してみる。

(base) C:\Users\user>python
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x0000023E6442A730>]
>>> plt.show()

あかん、グラフでない。
matplotのバージョンもちょっと上がってた。

(base) C:\Users\user>conda list | find "matplot"
matplotlib                3.4.3            py38haa95532_0
matplotlib-base           3.4.3            py38h49ac443_0

一応戻してみる。

conda install matplotlib=3.3.4

戻った。

(base) C:\Users\user>conda list | find "matplot"
matplotlib                3.3.4            py38haa95532_0
matplotlib-base           3.3.4            py38h49ac443_0

でもやっぱりだめ。動かない。ただ、一瞬見えるウィンドウは古臭くなった。上にメニューがある感じ。

(base) C:\Users\user>python
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x000001EBA910CD90>]
>>> plt.show()

ダメや…もう疲れたよ…

再度すべてアンインストールしたのち、再インストール。

まずはanaconda を入れる。
pythonを起動すると3.8.8、matplotlibも動く。
次にpythonをアップデート。だた、3.8.12までにしかならない。
さらにupdate --allがリコメンドされたので、conda update --allを実行。
ここでmatplotlibが動かなくなった。
そもそも今回インストールしたAnaconda3-2021.5はpython 3.8.8までなのか??
qiita.com

つまり、問題はjulaでpyplotを使おうとしたときに、勝手にいろいろアップデートされてしまい、pythonでmatplotlibが動かなくなってしまうこと。というか、これ、PCが古いからとかそういう問題だったりするのか…?

再度アンインストール

まずはAnacondaをインストール。この状態でpython をアップデートしてもバージョンは変わらず3.8.8、matplotlibも正常。
次にjuliaをインストール、今度はJuliaの公式ページを覗きに行った。インストール時にENV["PYTHON"]="" を実行してからPyPlotをaddしとろのことなので、

julia> ENV["PYTHON"]=""
""
julia> using Pkg
julia> Pkg.add("PyPlot")
    Updating registry at `C:\Users\user\.julia\registries\General`
    Updating git-repo `https://github.com/JuliaRegistries/General.git`
   Resolving package versions...
  No Changes to `C:\Users\user\.julia\environments\v1.6\Project.toml`
  No Changes to `C:\Users\user\.julia\environments\v1.6\Manifest.toml`

何も変わってない??とりあえず入ったパッケージを確認。

(@v1.6) pkg> status
      Status `C:\Users\user\.julia\environments\v1.6\Project.toml`
  [d330b81b] PyPlot v2.10.0

その後、anacondaからpythonを実行、グラフがプロットできることを確認。この時点ではまだ問題は発生していない模様。
ここでJulia で using PyPlotを実行、やっぱりエラーが出た。どうやらここでpython3.9になってたっぽい。てかエラーが出るようになっている!?

ERROR: InitError: could not load library "C:\Users\user\.julia\conda\3\python39.dll"
The specified module could not be found.
Stacktrace:
  [1] dlopen(s::String, flags::UInt32; throw_error::Bool)
    @ Base.Libc.Libdl .\libdl.jl:114
  [2] dlopen
    @ .\libdl.jl:114 [inlined]
  [3] __init__()
    @ PyCall C:\Users\user\.julia\packages\PyCall\3fwVL\src\pyinit.jl:149
  [4] _include_from_serialized(path::String, depmods::Vector{Any})
    @ Base .\loading.jl:696
  [5] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String)
    @ Base .\loading.jl:782
  [6] _tryrequire_from_serialized(modkey::Base.PkgId, build_id::UInt64, modpath::String)
    @ Base .\loading.jl:711
  [7] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String)
    @ Base .\loading.jl:771
  [8] _require(pkg::Base.PkgId)
    @ Base .\loading.jl:1020
  [9] require(uuidkey::Base.PkgId)
    @ Base .\loading.jl:936
 [10] require(into::Module, mod::Symbol)
    @ Base .\loading.jl:923
during initialization of module PyCall

うーむ、python39.dllなんてないぞ…てかpythonのバージョン3.8だぞ…
そこで、Julia のバージョンを落としてみる。とりあえず、LTSの1.0.5をインストール、ENV["PYTHON"]=""を実行してから add PyPlot をしてみる。今度はなんかいろいろ入った。

julia> ENV["PYTHON"]=""
""
(v1.0) pkg> add PyPlot
  Updating registry at `C:\Users\user\.julia\registries\General`
  Updating git-repo `https://github.com/JuliaRegistries/General.git`
 Resolving package versions...
  Updating `C:\Users\user\.julia\environments\v1.0\Project.toml`
  [d330b81b] + PyPlot v2.10.0
  Updating `C:\Users\user\.julia\environments\v1.0\Manifest.toml`
  [3da002f7] + ColorTypes v0.11.0
  [5ae59095] + Colors v0.12.8
  [8f4d0f93] + Conda v1.5.2
  [53c48c17] + FixedPointNumbers v0.8.4
  [682c06a0] + JSON v0.21.2
  [b964fa9f] + LaTeXStrings v1.2.1
  [1914dd2f] + MacroTools v0.5.9
  [69de0a69] + Parsers v2.1.1
  [438e738f] + PyCall v1.92.5
  [d330b81b] + PyPlot v2.10.0
  [189a3867] + Reexport v1.2.2
  [81def892] + VersionParsing v1.2.1
  [2a0f44e3] + Base64
  [ade2ca70] + Dates
  [8ba89e20] + Distributed
  [b77e0a4c] + InteractiveUtils
  [8f399da3] + Libdl
  [37e2e46d] + LinearAlgebra
  [56ddb016] + Logging
  [d6f4376e] + Markdown
  [a63ad114] + Mmap
  [de0858da] + Printf
  [9a3f8284] + Random
  [9e88b42a] + Serialization
  [6462fe0b] + Sockets
  [2f01184e] + SparseArrays
  [10745b16] + Statistics
  [8dfed614] + Test
  [4ec0a83e] + Unicode

pythonやmatplotlibは触られてないっぽいし、期待できるか!?この状態でanacondaからpython, matplotlibを動かしてもちゃんと動いている。
そこで、juliaでusing PyPlotをしてみる!!!!どうや!!!?ダメでしたorg...

julia> using PyPlot
[ Info: Precompiling PyPlot [d330b81b-6aea-500a-939a-2ce795aea3ee]
ERROR: LoadError: LoadError: could not load library "C:\Users\user\.julia\conda\3\python39.dll"
The specified module could not be found.
. Please run `Pkg.build("PyCall")` if your Python build has changed
Stacktrace:
 [1] error(::String, ::String) at .\error.jl:42
 [2] top-level scope at C:\Users\user\.julia\packages\PyCall\3fwVL\src\startup.jl:51 [inlined]
 [3] top-level scope at .\none:0
 [4] include at .\boot.jl:317 [inlined]
 [5] include_relative(::Module, ::String) at .\loading.jl:1044
 [6] include at .\sysimg.jl:29 [inlined]
 [7] include(::String) at C:\Users\user\.julia\packages\PyCall\3fwVL\src\PyCall.jl:1
 [8] top-level scope at none:0
 [9] include at .\boot.jl:317 [inlined]
 [10] include_relative(::Module, ::String) at .\loading.jl:1044
 [11] include(::Module, ::String) at .\sysimg.jl:29
 [12] top-level scope at none:2
 [13] eval at .\boot.jl:319 [inlined]
 [14] eval(::Expr) at .\client.jl:393
 [15] top-level scope at .\none:3
in expression starting at C:\Users\user\.julia\packages\PyCall\3fwVL\src\startup.jl:41
in expression starting at C:\Users\user\.julia\packages\PyCall\3fwVL\src\PyCall.jl:38
ERROR: LoadError: Failed to precompile PyCall [438e738f-606a-5dbb-bf0a-cddfbfd45ab0] to C:\Users\user\.julia\compiled\v1.0\PyCall\GkzkC.ji.
Stacktrace:
 [1] error(::String) at .\error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at .\loading.jl:1203
 [3] _require(::Base.PkgId) at .\loading.jl:960
 [4] require(::Base.PkgId) at .\loading.jl:858
 [5] require(::Module, ::Symbol) at .\loading.jl:853
 [6] include at .\boot.jl:317 [inlined]
 [7] include_relative(::Module, ::String) at .\loading.jl:1044
 [8] include(::Module, ::String) at .\sysimg.jl:29
 [9] top-level scope at none:2
 [10] eval at .\boot.jl:319 [inlined]
 [11] eval(::Expr) at .\client.jl:393
 [12] top-level scope at .\none:3
in expression starting at C:\Users\user\.julia\packages\PyPlot\XaELc\src\PyPlot.jl:4
ERROR: Failed to precompile PyPlot [d330b81b-6aea-500a-939a-2ce795aea3ee] to C:\Users\user\.julia\compiled\v1.0\PyPlot\oatAj.ji.
Stacktrace:
 [1] error(::String) at .\error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at .\loading.jl:1203
 [3] _require(::Base.PkgId) at .\loading.jl:960
 [4] require(::Base.PkgId) at .\loading.jl:858
 [5] require(::Module, ::Symbol) at .\loading.jl:853

PyCallをビルドしろ、か…
なぜかここでビルドせずに、rm PyPlotでPyPlotを削除、バージョンを2.9.0へ下げてみる(迷走中)。

(v1.0) pkg> add PyPlot@2.9.0
 Resolving package versions...
 Installed PyPlot ─ v2.9.0
  Updating `C:\Users\user\.julia\environments\v1.0\Project.toml`
  [d330b81b] + PyPlot v2.9.0
  Updating `C:\Users\user\.julia\environments\v1.0\Manifest.toml`
  [3da002f7] + ColorTypes v0.11.0
  [5ae59095] + Colors v0.12.8
  [8f4d0f93] + Conda v1.5.2
  [53c48c17] + FixedPointNumbers v0.8.4
  [682c06a0] + JSON v0.21.2
  [b964fa9f] + LaTeXStrings v1.2.1
  [1914dd2f] + MacroTools v0.5.9
  [69de0a69] + Parsers v2.1.1
  [438e738f] + PyCall v1.92.5
  [d330b81b] + PyPlot v2.9.0
  [189a3867] + Reexport v1.2.2
  [81def892] + VersionParsing v1.2.1
  [2a0f44e3] + Base64
  [ade2ca70] + Dates
  [8ba89e20] + Distributed
  [b77e0a4c] + InteractiveUtils
  [8f399da3] + Libdl
  [37e2e46d] + LinearAlgebra
  [56ddb016] + Logging
  [d6f4376e] + Markdown
  [a63ad114] + Mmap
  [de0858da] + Printf
  [9a3f8284] + Random
  [9e88b42a] + Serialization
  [6462fe0b] + Sockets
  [2f01184e] + SparseArrays
  [10745b16] + Statistics
  [8dfed614] + Test
  [4ec0a83e] + Unicode

この時点でもpythonでmatplotlibに問題なし。ちゃんとグラフ描ける。
もっかいusing PyPlotしてみる。

julia> using PyPlot
[ Info: Precompiling PyPlot [d330b81b-6aea-500a-939a-2ce795aea3ee]
ERROR: LoadError: LoadError: could not load library "C:\Users\user\.julia\conda\3\python39.dll"
The specified module could not be found.
. Please run `Pkg.build("PyCall")` if your Python build has changed
Stacktrace:
 [1] error(::String, ::String) at .\error.jl:42
 [2] top-level scope at C:\Users\user\.julia\packages\PyCall\3fwVL\src\startup.jl:51 [inlined]
 [3] top-level scope at .\none:0
 [4] include at .\boot.jl:317 [inlined]
 [5] include_relative(::Module, ::String) at .\loading.jl:1044
 [6] include at .\sysimg.jl:29 [inlined]
 [7] include(::String) at C:\Users\user\.julia\packages\PyCall\3fwVL\src\PyCall.jl:1
 [8] top-level scope at none:0
 [9] include at .\boot.jl:317 [inlined]
 [10] include_relative(::Module, ::String) at .\loading.jl:1044
 [11] include(::Module, ::String) at .\sysimg.jl:29
 [12] top-level scope at none:2
 [13] eval at .\boot.jl:319 [inlined]
 [14] eval(::Expr) at .\client.jl:393
 [15] top-level scope at .\none:3
in expression starting at C:\Users\user\.julia\packages\PyCall\3fwVL\src\startup.jl:41
in expression starting at C:\Users\user\.julia\packages\PyCall\3fwVL\src\PyCall.jl:38
ERROR: LoadError: Failed to precompile PyCall [438e738f-606a-5dbb-bf0a-cddfbfd45ab0] to C:\Users\user\.julia\compiled\v1.0\PyCall\GkzkC.ji.
Stacktrace:
 [1] error(::String) at .\error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at .\loading.jl:1203
 [3] _require(::Base.PkgId) at .\loading.jl:960
 [4] require(::Base.PkgId) at .\loading.jl:858
 [5] require(::Module, ::Symbol) at .\loading.jl:853
 [6] include at .\boot.jl:317 [inlined]
 [7] include_relative(::Module, ::String) at .\loading.jl:1044
 [8] include(::Module, ::String) at .\sysimg.jl:29
 [9] top-level scope at none:2
 [10] eval at .\boot.jl:319 [inlined]
 [11] eval(::Expr) at .\client.jl:393
 [12] top-level scope at .\none:3
in expression starting at C:\Users\user\.julia\packages\PyPlot\XHEG0\src\PyPlot.jl:4
ERROR: Failed to precompile PyPlot [d330b81b-6aea-500a-939a-2ce795aea3ee] to C:\Users\user\.julia\compiled\v1.0\PyPlot\oatAj.ji.
Stacktrace:
 [1] error(::String) at .\error.jl:33
 [2] compilecache(::Base.PkgId, ::String) at .\loading.jl:1203
 [3] _require(::Base.PkgId) at .\loading.jl:960
 [4] require(::Base.PkgId) at .\loading.jl:858
 [5] require(::Module, ::Symbol) at .\loading.jl:853

あかん、ダメや。python39.dllを要求される。実際フォルダ(C:\Users\user\.julia\conda\3\)を覗くと、python3.dll, python38.dllしかない。PyPlotv2.8.2でも同様。これ、pyplotのせいではない??
エラーコードにしたがって、ビルドしてみる。

julia> using Pkg
julia> Pkg.build("PyCall")
  Building Conda ─→ `C:\Users\user\.julia\packages\Conda\sNGum\deps\build.log`
  Building PyCall → `C:\Users\user\.julia\packages\PyCall\3fwVL\deps\build.log`

再度using Pyplot を実行。

julia> using PyPlot
[ Info: Precompiling PyPlot [d330b81b-6aea-500a-939a-2ce795aea3ee]

お、動いた!!がしかし、
plot([1,2,3], [4,5,6])
でjuliaごと落ちてしまった…
もういやや!!
次回へ続く…

JuliaでPyPlotが動かない。plotした瞬間に落ちる。ついでにpythonでも.show()した瞬間に落ちる。

JuliaでPyPlotが動かない

 インストールした時の記事はこちら
easygoingrider.hatenablog.com
かなり適当にインストールしたので、何か良くなかった模様。
jupyter-lab上でpyplotを動かした瞬間、具体的にはplotを呼んだ瞬間にカーネルが落ちる。

以下、うまくいかなかったメモ。
*次の記事はこちら
easygoingrider.hatenablog.com

*うまくいった記事はこちら
easygoingrider.hatenablog.com

一番最初にjupyter labでusing PyPlotを実行した時、足りないパッケージなどを自動でインストールされた模様。その際、pipだった?あまり良く見ていなかったからわからん。とりあえずどうやっても動かなくなってしまった。悪いことにpythonのほうのmatplotlibまで動かない。

とりあえずここからはpython上でmatplotlibの復活を試みる。
matplotlibのアップデートも試したがダメ。plt.show()で落ちる。
qiita.com
こんな記事を見つけたので、matplotlibrcを開いてバックエンドもいじってみたが違う感じ。TkAggを記入したが、
Duplicate key in file WindowsPath('C:/Users/user/.julia/conda/3/lib/site-packages/matplotlib/mpl-data/matplotlibrc'), line 82 ('backend: TkAgg ')
といわれる。というか、何も言わずにmatplotlibが作るウィンドウがフリーズして消えていくので何がエラーなのか全然わからない。.show()以外は(.plot()などは)ちゃんと動いている??
とりあえずmatplotlibの再インストール

conda uninstall matplotlib
conda install matplotlib

ダメだった。やっぱりウィンドウが開くが、すぐに消える。同時にpythonも落ちる。
Figure1というウィンドウが出て、(反応なし)の状態、落ちる
ただ、落ちるまでの時間が短くなった。なぜ。

f:id:easygoingrider:20211103012713p:plain
こんなウィンドウが出てpythonもろとも消えていく。

つぎ、とりあえずpipが悪いのではと勝手に予想

pip uninstall matplotlib

でmatplotlib-3.4.3を削除。

pip list | find "matplotlib"

でサーチ、matplotlib-inline 0.1.2がいる。

conda list | find "matplotlib"

conda でも見える。とりあえず消す。

pip uninstall matplotlib-inline

condaからも消えていた。

conda list | find "matplotlib"
matplotlib                3.4.3            py39haa95532_0

(というか、後で気付いたが、なぜかpython が3.9になっている…?anacondaでアップデートしても、3.8.12より上のバージョンに行かなかったのに…デフォルトのチャンネルだとダメなのか…?)
condaからも消す

conda uninstall matplotlib

なぜかmatplotlib-inlineが復活している。

conda list | find "matplot"
matplotlib-inline         0.1.2              pyhd3eb1b0_2

もっかい消す

conda uninstall matplotlib

完全にいなくなった。再インストール

conda install matplotlib
conda list | find "matplot"
matplotlib                3.4.3            py39haa95532_0
matplotlib-base           3.4.3            py39h49ac443_0

matplotlib-inlineがいなくなった。もっかいインストール。

conda install matplotlib-inline
conda list | find "matplot"
matplotlib                3.4.3            py39haa95532_0
matplotlib-base           3.4.3            py39h49ac443_0
matplotlib-inline         0.1.2              pyhd3eb1b0_2

pythonを起動。pyplotを試す

>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x0000019218E36970>]
>>> plt.show()

ここで落ちる。 何も変わっとらんやんけ。。。
jupyter-labでも試す。

Kernel Restarting
The kernel for Source/Jupyter test/Untitled.ipynb appears to have died. It will restart automatically.
[I 2021-10-31 19:23:22.121 ServerApp] AsyncIOLoopKernelRestarter: restarting kernel (1/5), keep random ports
kernel ca50f313-2607-4a57-8b8e-abaf831004ab restarted
kernel ca50f313-2607-4a57-8b8e-abaf831004ab restarted

だめ。

conda update --all

色々入れた。

conda upgrade --all
# All requested packages already installed.

もっかい確認。
condaからpythonでmatplotを動かすと、これまでと同じ

>>> import matplotlib.pyplot as plt
>>> plt.plot([1,2,3])
[<matplotlib.lines.Line2D object at 0x0000019218E36970>]
>>> plt.show()
# ここで落ちる

jupyter-labでpyplotを動かすと、

import matplotlib.pyplot as plt
plt.plot([0,1,2,3,4,5],[0,1,4,9,16,25])
[<matplotlib.lines.Line2D at 0x1efe1c10e80>]

だが、この時点でカーネルが落ちる

Kernel Restarting
The kernel for Source/Jupyter test/Untitled.ipynb appears to have died. It will restart automatically.

ダメだ、動かない。もっかい最初からインストールやり直すか。。。

参考にしたサイト
qiita.com

これ、大事だった。ちゃんと環境変数の設定せなあかんのか…どうやらエラーは二つあって、一つ目がこれで、QTのパス通したらjuliaのエラーの出方が変わった。
qiita.com
This application failed to start because it could not find or load the Qt platform plugin "windows"
in "".
Reinstalling the application may fix this problem.
このエラーが消えた。

これはダメだった。すでにインストールされていた。
qiita.com

これもダメだった。
www.eureka-moments-blog.com

これらも違った。
qiita.com
qiita.com

これも違う、というかそもそもMKLに関するエラーは出ていない
qiita.com