InternetWatchの「イニシャルB」で紹介されていたnetwork_sketcherを試しました。
https://internet.watch.impress.co.jp/docs/column/shimizu/1591288.html
普段Pythonなんて使わないし、メインPCにPython入れたくなかった上に、配布元の紹介動画でexeを実行していたので、exe化することろから始めました(笑
VirtualBoxでWin10を適当にインストール、pythonをインストールして、pipコマンドでなんとかpyinstaller.exeをインストール完了。
python ./network_sketcher.py
で起動することを確認。
(必要モジュールとかは「python3 -m pip install -r requirements.txt」でインストールしろ、って書いてあったので、pip install -r requirements.txt を実行)
配布元の「How to create the exe file for Windows using pyinstaller」のコマンドをpathをちょっといじって実行、38MiBほどのexeができました(でかいなぁ)。
exeを起動すると、
_tkinter.TclError: couldn't open "ns_logo.png": no such file or directory
っていうエラーが、、、。
Copilotさんに尋ねると、いろいろ回答してくれたけど、コマンドオプションやらspecファイル修正でも解決できなかった。。。
「ns_logo.pngの読み込みに失敗しているだけなのだから、読み込まなければ良い」
と思いつき、ns_logo.pngをBASE64エンコードして、ソースファイル内にべた書きしました。(BASE64エンコード方法と、ソースファイルへの修正はCopilotさんに考えてもらいました)
その後、pyinstaller.exe でexeを作成。
問題なく起動できました。
さて、本題にとりかかろう(笑
$ diff -u ./network_sketcher.py.org ./network_sketcher.py
--- ./network_sketcher.py.org 2025-07-15 08:44:51.000000000 +0900
+++ ./network_sketcher.py 2025-07-21 14:18:40.000000000 +0900
@@ -22,7 +22,9 @@
import ns_def,network_sketcher_dev,ns_sync_between_layers,ns_attribute_table_sync_master, network_sketcher_cli
import ns_extensions
import ns_vpn_diagram_create
-
+import base64
+from io import BytesIO
+from PIL import Image, ImageTk
class ns_front_run():
'''
@@ -44,7 +46,11 @@
self.root = TkinterDnD.Tk()
self.root.title("Network Sketcher ver 2.5.2")
self.root.geometry("510x200+100+100")
- icon = tk.PhotoImage(file='ns_logo.png')
+ img_base64="""iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAA・・・中略・・・BEAAAAASUVORK5CYII="""
+ img_data = base64.b64decode(img_base64)
+ image = Image.open(BytesIO(img_data))
+ icon = ImageTk.PhotoImage(image)
+ #icon = tk.PhotoImage(file='ns_logo.png')
self.root.iconphoto(True, icon)
# Notebook
.Net3.5が要るらしい。 orz 一回目のインストールの際に「.Net3.5が必要」ってダイアログが山ほど出てきた。 .Net3.5が必要な場合のエラーダイアログはどうして「ダウンロードしてインストールせよ」なんだろう? 参考にした http://otndnld.oracle.co.jp/easy/oracle11gr1/windows/pdf/SelfStudy_01_win.pdf だと、LISTNERの追加設定(?)が必要そうに書いてあるけど、やってみたら「すでに作成済み」ってなる。 それを信じて進めてみたらどうにもうまくいかない。。。 OracleDBをGUIで操作しよう、っていうのが間違いのようか気がする (逆にSQLserverをCLIでやるのは狂気の沙汰だと思う)。 一旦、アンインストールすることにして、スタートメニューにある「Universal Installer」 を実行してアンインストールしようとしたら「batファイルを実行せよ」というダイアログが。 ググりかたが悪かったのか、 「アンインストールはUniversal Installerからしかないぜ。その他の方法はどーなっても知らないぜHAHAHA」(意訳) と書いてるOracleさんしか見つからない。 どっちを信じたらとも思ったが、目の前のほうが正しいだろうという考えに従いそのバッチ を実行しました。(Universal Installerさんは何度やっても消そうともしてくれないし) バッチ実行後、しばらく放置したら終わったらしい。 Oracleさんがインストールされていたっぽいディレクトリもだいたい消えていた。 消えたよね?ってことで一度再起動してから、Oracle11gのインストールを再び実行。 エラーは出ずに無事終了。 (.Net3.5がインストール済みだったからかな??) sqlplus / as sysdba は問題ない。でも、別PC(Linux機)からの接続はNG。 lsnrctl status コマンドの実行結果から、やはりlocalhost以外からの接続はLISTENしてない模様。 listener.oraをちょっと修正して、LISTNERサービスを再起動。 lsnrctl status を再度実行すると、IPアドレスの分も表示されたので、外部からも接続できるだろう...
コメント
コメントを投稿