デスクトップPCの無線化とルーター(AP)設置による速度向上
はじめに
パソコンは有線LAN派ですでした。ただ、先日、有線と無線の速度をいろいろと測定していた時に、
「無線でもacなら十分に速度出てるよね、そんなに速度必要な場面ないよね(windows やvisual 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 | ネットワークカード 通販
ついでに、マンションに備え付けの無料wifi(GIGAPRIZEのRentAgentネット)を使っているのですが、これにルーターかましたらアンテナの向きとか調整できる関係で少し早くなるんじゃね?ということでルーターをアクセスポイントモード(APモード)で設置して速度を測ってみました。使ったルーターはこちら
WN-DX1167R | Wi-Fi(無線LAN)ルーター | IODATA アイ・オー・データ機器
結果
こちらになります。無線で378Mbpsも出てれば十分ですね。
有線LAN | マンションの2.4GHz | マンションの5GHz | ルーターの2.4GHz | ルーターの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) |
---|---|
これなら全く不満はないです。マンションのほかの住人の使用量、測定する時間帯など、環境に大きく依存するはずですが、今住んでいるところは当たりだったのかもしれないです。(昼間に測った時は、ノートでも300Mbps近く出してました。)
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.
私はエラーが出たのは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実行ファイルがあるフォルダが開いたら開きっぱなしにしておきます。
step3. Qt Platform Pluginをコピー
環境変数で設定していたフォルダを開います。
C:\Users\user\.julia\conda\3\Library\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)になっていました。
解決: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も入ってる…?あ、でもクリックしたらちゃんと起動しなかった。
とポップアップ。
とりあえず気を取り直して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というウィンドウが出て、(反応なし)の状態、落ちる
ただ、落ちるまでの時間が短くなった。なぜ。
つぎ、とりあえず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
これも違う、というかそもそもMKLに関するエラーは出ていない
qiita.com