質問するログイン新規登録

Q&A

0回答

420閲覧

Python開発プログラム(EXE化済)、Windows11では無事動作するもWindowsServer2022で非動作

saya24

総合スコア263

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2026/03/18 05:07

編集2026/03/20 01:09

0

0

実現したいこと

EXE化した自分開発のプログラムは 内閣府から国民の祝祭日のCSVファイルをhttpsアクセスで取得しにいく内容になっています。UIなしの仕様、コンソール画面非表示でEXE化してしまいました。

以下全容、ロクなもんじゃないです...

Python

1import sys 2import os 3import configparser 4import urllib.request 5 6def get_Config(): 7 try: 8 # -------------------------------------------------- 9 # configparserの宣言とiniファイルの読み込み 10 # -------------------------------------------------- 11 curpath = os.path.dirname(os.path.realpath(sys.argv[0])) 12 cfgpath = os.path.join(curpath, "config.ini") 13 14 config_ini = configparser.ConfigParser() 15 config_ini.read(cfgpath, encoding='utf-8') 16 17 # -------------------------------------------------- 18 # config,iniから値取得 19 # -------------------------------------------------- 20 var1 = config_ini['ZIPP_TYPEA']['URL'] 21 var2 = config_ini['ZIPP_TYPEA']['OUTPUT'] 22 23 return var1, var2 24 except Exception: 25 raise 26 27 28 29def download_file(url, dst_path): 30 with urllib.request.urlopen(url) as web_file, open(dst_path, 'wb') as local_file: 31 local_file.write(web_file.read()) 32 33 34 35def req_URL(): 36 try: 37 lst_config = get_Config() 38 download_file(lst_config[0], lst_config[1]) 39 40 41 except Exception as e: 42 print ('??? ' + str(e) + ' ???') 43 44 45 46if __name__ == '__main__': 47 req_URL()

こちらはサーバで運用していくことを目的に開発しました。WindowsServer2022でEXE化したこちらを 正常動作させていくことが実現したいことです。

発生している問題・分からないこと

WindowsServer2016とWindowsServer2022では 途中でこけているのか、結果を得られません。

同じEXEをWindows11に配置して実行すると 無事動作しているとみえ 目的のCSVファイルを取得できます。
動作上必要になる情報を 決まった名前のファイルから取得する仕様ですが サーバでの動作時にこれを獲得できていない とか起きているのでしょうか
それとも、ファイアウォールとかを疑うべきでしょうか?

それとも.NETランタイプみたいなものが 運用予定のサーバに必要なのにセットアップされていないことが 非動作の要因になっているのでしょうか

エラーメッセージ

error

1コンソール非表示タイプのEXEで、ログ出力していない仕様のため、我ながらブラックボックスなんです!

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

自分のこちらでの過去記事を照会。
PyIntallerを利用したEXE化の際、オプション指定の追加で無事解決にいたっているようでした。

追記 2026/03/19 AM07:56

PowerShellでの URLアクセスの結果=現れたメッセージを画像と共に貼付けます
SSL/TLS セキュリティで保護されたチャネルの信頼関係を確立できませんでした
イメージ説明

追記 2026/03/19 PM02:03

TLS1.2

追記 2026/03/20 AM10:03

★異常を検知するための Try Catchが入っていない ファンクションは 全て修正、
例外時にprint文で 相応のメッセージが画面に現れるよう期待。

Python

1import sys 2import os 3import configparser 4import urllib.request 5 6def get_Config(): 7 try: 8 # -------------------------------------------------- 9 # configparserの宣言とiniファイルの読み込み 10 # -------------------------------------------------- 11 curpath = os.path.dirname(os.path.realpath(sys.argv[0])) 12 cfgpath = os.path.join(curpath, "config.ini") 13 14 config_ini = configparser.ConfigParser() 15 config_ini.read(cfgpath, encoding='utf-8') 16 17 # -------------------------------------------------- 18 # config,iniから値取得 19 # -------------------------------------------------- 20 var1 = config_ini['ZIPP_TYPEA']['URL'] 21 var2 = config_ini['ZIPP_TYPEA']['OUTPUT'] 22 23 return var1, var2 24 except Exception as e: 25 print ('??? ' + str(e) + ' ???') 26 raise 27 28 29 30def download_file(url, dst_path): 31 try: 32 with urllib.request.urlopen(url) as web_file, open(dst_path, 'wb') as local_file: 33 local_file.write(web_file.read()) 34 35 except Exception as e: 36 print ('??? ' + str(e) + ' ???') 37 38 39def req_URL(): 40 try: 41 lst_config = get_Config() 42 download_file(lst_config[0], lst_config[1]) 43 44 45 except Exception as e: 46 print ('??? ' + str(e) + ' ???') 47 48 49 50if __name__ == '__main__': 51 req_URL()

★EXE化の際に、従来コンソール表示なしの オプションを付け加えていたのでこれを外してEXE化対処

py -m PyInstaller D:\HOLIDAYS\HOLIDAYS.py --icon=D:\HOLIDAYS\images\HOLIDAYS.ico --onefile

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

hiroki-o

2026/03/18 10:50

エクスプローラーからダブルクリックか、タスクスケジューラーで起動しているのでしょうか? PowerShellかコマンドプロンプトで、コマンドライン実行した場合、何かエラーは出ますか? 何も出ない場合、Pythonソースのあちこちにprint文を入れて、どこまで動いているか確認しましょう。 あと、現在のpyinstallerの引数を提示すると、何かわかる人がいるかもしれません。
melian

2026/03/18 13:29

プロキシサーバを経由する必要があったり、ファイアウォールによるアクセス制限が行われているのかもしれません。 WindowsServerのPowerShellで以下を実行して、何らかのエラーメッセージが表示されるのかどうかを確認してみてください。 Invoke-WebRequest -Uri https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv -OutFile syukujitsu.csv
saya24

2026/03/18 13:43

ご見解誠にありがとうございます。 只今自宅に帰宅し、実行できる環境にいないので、明朝PowerShell経由の起動を行ってみます。話題のサーバではCotexXDRを運用しているので こちらも若干疑っています。処理を抑制した記述が残っていないので 違うかもですが
meg_

2026/03/18 14:06

何かエラーログは残っていませんか?
saya24

2026/03/18 22:54

melianさん、meg_さん おはようございます。 ご提示のコマンドを 問題のサーバ上のPowerShellで実行した結果を 本文のほうに貼りつけました。 御確認頂けますでしょうか? インフラっぽい?? hiroki-oさん 実行は エクスプローラ上で当該EXEのダブルクリックです。 上記コメントのとおり PowershellでのURLアクセスで 何やら良からずコメントが見受けられたので 一先ず、EXE化のPyInstaller利用時の内容は 一先ず控えますね
katsuko

2026/03/18 22:55

コンソール非表示の実行ファイルだと、エラーメッセージは出ないんじゃないですか。 コンソール表示の実行ファイルを作り直して確認したほうがいいかもしれません。
melian

2026/03/19 01:49

少し調べてみたところ、TLS 1.2 を有効化することで解決できるかもしれません。PowerShell 上で以下を実行してから先程の Invoke-WebRequest を実行してみてください。 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 なお、Net.SecurityProtocolType に関しては以下のページを参照してください。 SecurityProtocolType 列挙型 (System.Net) | Microsoft Learn https://learn.microsoft.com/ja-jp/dotnet/api/system.net.securityprotocoltype
saya24

2026/03/19 05:02

melianさん ご見解・ご確認誠にありがとうございます。 インターネットオプションから TLS1.2が有効になっているかをまず確認したところ、既に有効化されているようでした。本文最後に関係のスクショを収めておきました。 ご提案のPowerShellでの実行は 現況保留させて頂いております。
dodox86

2026/03/19 05:46

コントロールパネルからの「インターネットオプション」はInternet Exlorer とかWinINetを使用した古いアプリ向けの設定で、PowerShellからの.NET関連のコマンドレットからの実行には影響しないもののはずです。
dodox86

2026/03/19 05:53

PowerShellのターミナル上からInvoke-WebRequestで成功するようになったとしても肝心のPyInstallerで作成したEXEで成功するとは限らない・それ以外にも問題があるかもしれないので、他の方も勧めているように適当なステップごとにprintを入れて実行状況を分かるようにして確認するのが早道だと思います。(たくさんコメントがあっても混乱すると思うので、私はこの辺で)
saya24

2026/03/20 01:18 編集

本文最後部分に追記を図りました。 この対応を受けて、サーバ側で 仕上がりのEXEを再実行すると 黒い画面(コンソールと呼ぶ??)現れるようになるも、すぐ閉じてしまう 状況を確認。 自分が期待した PRINT文からの メッセージ表示は なされなかった ことを意味します・ 尚、当該EXEのサーバ上の実行方法は 単にWクリックしたパターンと 右クリックからの「管理者として実行」 両方試すも 両方で処理結果得られず・強制終了の疑い Coretex XDRの 抑制イベントの記録はなしでした。 不慣れですがイベントビューアも確認、らしきコメントは見当たりませんでした。(書くような対処をしていないから当然なのか 正直そういったことも自分は分からないレベルです) 自分が これからとるべきことは PRINT文の出力先を ファイルにする=ログ出力の手立てですかね ちなみに、今回対策を経て仕上がったEXEファイル、Windows11ではやはり無事期待の処理結果を得ています!!  現況のご報告となりますぅ....
hiroki-o

2026/03/20 01:22

エクスプローラーからダブルクリックではなく、PowerShellかコマンドプロンプトで実行してみてください。 そうすれば、黒い画面は閉じません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問