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

Q&A

2回答

1747閲覧

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

saya24

総合スコア263

Python

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

1グッド

1クリップ

投稿2026/03/18 05:07

編集2026/05/04 01:56

1

1

ヘディングのテキスト### 実現したいこと

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

2026/04/29 AM09:51 追記

反応が遅れており大変申し訳ありませんでしたが
3/25にhiroki-oさんからお示し頂いた コードを反映した現況のコード、及び
VisualStudio Professinal2022 びデバッグモードで実行した結果を 以下に貼り付けます。

EXE化したものを WindowsServer2022及びWindows11でコマンドプロンプトから起動しても 以下のエラーが表示されます。

??? <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1002)> ???
ERR
当初 VisualStudio Professinal2022上のデバッグ実行では 無事動作できていた記憶なので、当該Windows11端末での 証明書確認を ご提示方法に従い対応しています。
こちらのパスを EXE化の addfileオプションに指定しました。

今回ご提示のコードを反映する以前のコードで、VisualStudio Professinal2022のデバッグ実行(Windows11)で 本当に無事動作できていたのかを 再確認する必要がありますかね??
エラーメッセージ内容を解読できていないのですが、証明書があやしいのかな?とか思い出してしまって。
とりあえずコードを元に戻して
当初どおり、Windows11(VisualStudio Professinal2022)では 無事動作することを今から再確認します。
証明書確認

2026/05/01 16:19 追記

サンドボックス環境でのEXE実行結果(エラーメッセージに変化なし)
サンドボックス環境での実行

20260503 09:43AM追記

PyInstaller

1C:\Users\XXXXXXXX>py -m PyInstaller --add-data "C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python311\Lib\site-packages\certifi\cacert.pem;." D:\HOLIDAYS\HOLIDAYS.py --icon=D:\HOLIDAYS\images\HOLIDAYS.ico --onefile 2876 INFO: PyInstaller: 6.5.0, contrib hooks: 2024.3 3892 INFO: Python: 3.11.4 4956 INFO: Platform: Windows-10-10.0.26200-SP0 5972 INFO: wrote C:\Users\XXXXXXXX\HOLIDAYS.spec 6981 INFO: Extending PYTHONPATH with paths 7['D:\\HOLIDAYS'] 82902 INFO: Appending 'datas' from .spec 92902 INFO: checking Analysis 102902 INFO: Building Analysis because Analysis-00.toc is non existent 112902 INFO: Initializing module dependency graph... 122902 INFO: Caching module graph hooks... 132955 INFO: Analyzing base_library.zip ... 145819 INFO: Loading module hook 'hook-encodings.py' from 'C:\\Users\\XXXXXXXX\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\PyInstaller\\hooks'... 157617 INFO: Loading module hook 'hook-pickle.py' from 'C:\\Users\\XXXXXXXX\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\PyInstaller\\hooks'... 168384 INFO: Loading module hook 'hook-heapq.py' from 'C:\\Users\\XXXXXXXX\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\PyInstaller\\hooks'... 178687 INFO: Caching module dependency graph... 188793 INFO: Running Analysis Analysis-00.toc 198793 INFO: Looking for Python shared library... 208799 INFO: Using Python shared library: C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python311\python311.dll 218799 INFO: Analyzing D:\HOLIDAYS\HOLIDAYS.py 229023 INFO: Loading module hook 'hook-certifi.py' from 'C:\\Users\\XXXXXXXX\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\_pyinstaller_hooks_contrib\\hooks\\stdhooks'... 239046 INFO: Processing module hooks... 249051 INFO: Performing binary vs. data reclassification (5 entries) 259055 INFO: Looking for ctypes DLLs 269060 INFO: Analyzing run-time hooks ... 279060 INFO: Including run-time hook 'C:\\Users\\XXXXXXXX\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\PyInstaller\\hooks\\rthooks\\pyi_rth_inspect.py' 289060 INFO: Looking for dynamic libraries 299289 INFO: Extra DLL search directories (AddDllDirectory): [] 309289 INFO: Extra DLL search directories (PATH): [] 319442 INFO: Warnings written to C:\Users\XXXXXXXX\build\HOLIDAYS\warn-HOLIDAYS.txt 329453 INFO: Graph cross-reference written to C:\Users\XXXXXXXX\build\HOLIDAYS\xref-HOLIDAYS.html 339485 INFO: checking PYZ 349501 INFO: Building PYZ because PYZ-00.toc is non existent 359501 INFO: Building PYZ (ZlibArchive) C:\Users\XXXXXXXX\build\HOLIDAYS\PYZ-00.pyz 369740 INFO: Building PYZ (ZlibArchive) C:\Users\XXXXXXXX\build\HOLIDAYS\PYZ-00.pyz completed successfully. 379756 INFO: checking PKG 389756 INFO: Building PKG because PKG-00.toc is non existent 399756 INFO: Building PKG (CArchive) HOLIDAYS.pkg 4011185 INFO: Building PKG (CArchive) HOLIDAYS.pkg completed successfully. 4111201 INFO: Bootloader C:\Users\XXXXXXXX\AppData\Local\Programs\Python\Python311\Lib\site-packages\PyInstaller\bootloader\Windows-64bit-intel\run.exe 4211201 INFO: checking EXE 4311201 INFO: Building EXE because EXE-00.toc is non existent 4411201 INFO: Building EXE from EXE-00.toc 4511201 INFO: Copying bootloader EXE to C:\Users\XXXXXXXX\dist\HOLIDAYS.exe 4611217 INFO: Copying icon to EXE 4711233 INFO: Copying 0 resources to EXE 4811233 INFO: Embedding manifest in EXE 4911246 INFO: Appending PKG archive to EXE 5011281 INFO: Fixing EXE headers 5111499 INFO: Building EXE from EXE-00.toc completed successfully. 52 53C:\Users\XXXXXXXXXXX>CD DIST 54 55C:\Users\XXXXXXXX\dist>HOLIDAYS.EXE 56??? <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1002)> ???

20260503 10:55AM追記

sandbox

kamiyui_bidan👍を押しています

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

クリップした質問は、後からいつでも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かコマンドプロンプトで実行してみてください。 そうすれば、黒い画面は閉じません。
saya24

2026/03/20 23:17 編集

hiroki-oさん 貴重なご見解をありがとうございます。 ご提案の実行方法で 黒い画面が閉じないことを初めて知りました。 これは 今後の自分の作業の上で 非常に役立つ情報と実感しています! 何やら 出ましたね、 やはり当初TRY CATCHを仕掛けていなかった部分で エラーをはいたようですから 改修に価値はあったのかな PyInstallerで --noconsoleのオプションを指定して生成したEXEでは ご提案の実行方法であっても 今回のようにエラーが画面に現れることはないようですね(質問の主旨がズレたコメントで申し訳ないですが) こういう状況からして、 ・運用環境で動作が達成されるまで コンソール非表示でEXEを生成すべきでない  (コンソール非表示でEXE化しないと、運用実行時 完了するとPRESS ANYKEYが現われると思っている) ・コマンドプロンプトなりPowershellから 仕上げたEXEを実行することで、PRINT文の内容を把握できる この2点 習得しました。 本筋のエラーはこれからぐぐってみます
saya24

2026/03/22 22:32 編集

経過報告になります。 urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1002) をキーワードにネットに検索をかけると 対策が提示された記事を発見しました。 まだ読み解けていない・結局自分が何をすべきなのか 確認中ですhttps://kondeneenen.com/python_certificate_failed/ >urllib.request.urlopen ではなく requests.get を使用する。 これが対策かな??? でも Windows11の端末では 従来のソースで動作していたしなぁ...
matukeso

2026/03/23 22:59

メッセージがexpiredなので、サーバの時間がすごいズレてるとか、間にMITM型プロキシが挟まっていて、そいつの設定がおかしいとかを考える必要があるんじゃないでしょうか. caoの証明書をcurlでしらべると curl -sv https://www8.cao.go.jp/chosei/shukujitsu/ * start date: Sep 10 03:42:12 2025 GMT * expire date: Oct 12 03:42:11 2026 GMT * issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign RSA OV SSL CA 2018 ですが。
saya24

2026/03/23 23:36 編集

matukesoさん ご見解ありがとうございます。 とりあえず話題にしているEXEの想定の運用サーバの時刻確認しましたが ずれていないようでした。 またご提示のCURLコマンドを貼りつけて実行したところ 本文に貼りつけたような返答をえました。 受信した証明書の期限が切れています。
dodox86

2026/03/24 00:28

matukesoさんがコメントされているように、サーバー側の証明書の問題ではなくて、クライアント側(本件ではWindows Server側)の問題だと思います。 質問者 saya24さんが検索して得たサイト様の記事 https://kondeneenen.com/python_certificate_failed/ で クライアント側, OpenSSLを使っているpythonのプログラムが参照しているcert.pemが見付からないからエラーを出している、って書かれていますよね。 例えば私の古いWindows10マシンでCygwinのcurlコマンドで実行すると、(curlもOpenSSLを使っているはず) $ curl -sv https://www8.cao.go.jp/chosei/shukujitsu/ * Host www8.cao.go.jp:443 was resolved. * IPv6: 2001:240:1d4:1::33 * IPv4: 210.148.118.33 * Trying [2001:240:1d4:1::33]:443... * ALPN: curl offers h2,http/1.1 * TLSv1.3 (OUT), TLS handshake, Client hello (1): * SSL Trust Anchors: * CAfile: /etc/pki/tls/certs/ca-bundle.crt * TLSv1.3 (IN), TLS handshake, Server hello (2): * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): * TLSv1.3 (IN), TLS handshake, Certificate (11): * TLSv1.3 (IN), TLS handshake, CERT verify (15): * TLSv1.3 (IN), TLS handshake, Finished (20): * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): * TLSv1.3 (OUT), TLS handshake, Finished (20): * SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256 / X25519 / RSASSA-PSS * ALPN: server accepted h2 * Server certificate: * subject: C=JP; ST=Tokyo; L=Chiyoda-ku; O=Cabinet Office; CN=*.cao.go.jp * start date: Sep 10 03:42:12 2025 GMT * expire date: Oct 12 03:42:11 2026 GMT * issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign RSA OV SSL CA 2018 * Certificate level 0: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption * Certificate level 1: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption * Certificate level 2: Public key type RSA (2048/112 Bits/secBits), signed using sha256WithRSAEncryption * subjectAltName: "www8.cao.go.jp" matches cert's "*.cao.go.jp" * SSL certificate verified via OpenSSL. * Established connection to www8.cao.go.jp (2001:240:1d4:1::33 port 443) from 240d:f:bbc:7100:2482:4a6b:ca4b:3cf9 port 50576 ... となり、エラー無くレスポンスを得られます。
saya24

2026/03/24 22:50

dodox86さん コメントをありがとうございます。 i18nAgent.aiさん提示の対処法2で進めることとしました。開発端末が手元に戻り次第作業着手予定です。 経過報告になります。
bsdfan

2026/05/02 03:05

Win11とServer2022の違いについて、エラーになっている原因が、 1. 持っているCA証明書が違う 2. 送られてきている証明書が違う のどっちかだろうとなりますが、ここまで1の確認ばかりやられていて、2については何も調査・確認できていないと思います。 上でcortex xdrについて言及されていますが、SSL/TLS インスペクションが有効になっていたら、それ用の証明書の設定がいると思います。
saya24

2026/05/04 00:18

bsdfanさん、ご見解ありがとうございます。 Win11で仕上がったEXEの起動さえうまくいかないので、一先ずこちらの達成を目下のゴールに見据え 対応を進めますね。 VisualStudioのデバッグ実行だけでうまく実行できる状況なのが 現況とみています。
guest

回答2

0

(既に質問者さんのほうで解決しているかもしれませんが、i18nAgent.aiさんの対処法2を実際に試した結果を回答します。)

Windows 11、Python 3.13.12で確認しました。
証明書が無い環境は、Windows 11のWindows Sandboxで確認しました。

提示されたソースが動く環境(証明書がある環境)で、証明書のパスを取得します。

Python

1import certifi 2print(certifi.where())

提示されたソース(追記版)に以下を追加します。

Python

1import certifi 2import ssl

download_file関数のtrywithの間に以下を追加します。
もしVisual Studio Codeを使用している場合、Pylanceがsys._MEIPASSをエラーにするかもしれませんが無視してください。

Python

1 # デフォルトの証明書のパス 2 ca_path = certifi.where() 3 4 if getattr(sys, 'frozen', False): 5 # PyInstallerで生成したexe実行時の証明書のパス 6 ca_path = os.path.join(sys._MEIPASS, 'cacert.pem') 7 8 context = ssl.create_default_context(cafile = ca_path)

urllib.request.urlopenの引数にcontextを追加します。

Python

1 with urllib.request.urlopen(url, context = context) as web_file, open(dst_path, 'wb') as local_file:

PyInstaller実行時、--onefileとともに以下のオプションを追加します。
パスは最初に取得したものに変更してください。
これで実行ファイルと証明書が一体化されます。

--add-data "C:\test\venv\Lib\site-packages\certifi\cacert.pem;."

以上で、証明書が無い環境を汚さずに実行できます。

(追記)
Visual Studioとコマンドプロンプトで同じPython環境を見ているかどうか不明なので、今回の件からVisual Studioは除外してください。
もちろんVisual Studioをエディター&デバッガーとして使うのはいいのですが、今回の件は既に正解を提示しています。
あとは、そちらの環境で再現するだけです。

目標
PyInstallerで生成したHOLIDAYS.exeと、config.iniの2本だけで、開発環境以外でもsyukujitsu.csvをネットから取得する。

確認

  1. 私が提示した方法で生成したHOLIDAYS.exeは、開発環境のWindows 11で動きますか?
  2. そのHOLIDAYS.exeとconfig.iniをSandboxにコピペして動きますか?
  3. 同様にWindows Serverで動きますか?

Windows 11のSandboxは、タスクバーの検索欄にsandboxと入力して検索結果に出てくる「Windows Sandbox」を起動してください。
初回は時間がかかるかもしれませんが、素のWindows 11(要するに証明書が無い環境)が起動します。
ちなみにSandboxは毎回まっさらな環境で起動します。
(もしかしたらHome Editionには入っていないかもしれません。Proならあります。)

1,2で動かない場合、手順が間違っています。
手順と言ってもPyInstallerを叩くだけなので、それを提示してください。
1,2で動いて3で動かない場合、Windows Server特有の何かなので、こちらでは調査できません。

不明な点はコメントしてください。

※質問者さん以外でこれを読んでいる人がいたら、私の説明の何が悪いのか指摘していただけると嬉しいです。

(追記2)
会社のネットワークでSandboxを遮断している可能性は高いですが、私には解決できません。
teratailはどこからでも見えるので、個人PCでも試せます。

PyInstallerの実行・及び証明書ありかの確認も 本来sandbox側で対応すべきだったんですかねぇ

Sandboxを勧めた理由は、証明書が無い環境で、証明書付き実行ファイルの動作確認をするためです。
上記のような発言は、それを理解しているか心配になります。ご理解ください。

確認手順を考えましたので、試してください。

1. 質問の3/20版のソース(証明書無し版。仮に0320.pyとする)は、PyInstallerを実行した同じコマンドプロンプトで

py 0320.py

で実行して、syukujitsu.csvを取得できますか?

2. 実行できた場合、0320.pyのimport urllib.requestdef get_Config():の間に

import certifi print(certifi.where())

を入れて、

py 0320.py

で実行して、syukujitsu.csvを取得できますか? その際、表示されたパスはPyInstallerの--add-dataに指定したパスと同じですか?

3. 現状のD:\HOLIDAYS\HOLIDAYS.pyが質問の4/29版のソース(削除したようですが、証明書あり版)であることを確認します。
--add-dataが2のパスであることを確認します。
buildフォルダー、distフォルダー、HOLIDAYS.specを削除して、再度PyInstallerを実行します。
生成された実行ファイルは、その場で実行できますか? syukujitsu.csvを取得できますか?
エラーになる場合、HOLIDAYS.specのdatas=行に出力されているパスは、2のパスと同じですか?

まずは、ここまでですね。
不明な点はコメントしてください。

投稿2026/03/25 09:45

編集2026/05/04 05:50
hiroki-o

総合スコア1829

saya24

2026/04/29 03:36

@hiroki-oさん 本文に経過報告を追記しました。 この中に記載した >当初どおり、Windows11(VisualStudio Professinal2022)では 無事動作することを今から再確認します。 について報告です。無事、VisualStudio Proffesinal2022(Windows11)では動作達成できることを再確認しました。 上記で本文に追記したコードでの実行結果です。2026/03/20 AM10:03の追記した内容のコードです。 この観点からして、証明書に異常はなく ご提示のコードを採用した実行では 証明書の参照が功を奏して無事に実行できるはずだったのでは という推察です。 だが  urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1002) のエラーを招いている()
hiroki-o

2026/04/29 03:43

いいえ、証明書の無い環境に持っていって動作確認したので、問題無いはずです。 こちらでも再確認してみます。
hiroki-o

2026/04/29 04:37

再確認したところ、問題ありませんでした。 念のためですが、 - 修正前に動いていた環境 - 証明書のパスを取得した環境 - 実行ファイルを作成した環境 は、同じWindows 11ですか? そのWindows 11のSandbox側には証明書が無いので、そこで試してみてください。 Sandboxで証明書無し版は動かない、証明書一体版は動くことが確認できたら、手順は正しいです。 Windows Server特有の何かかもしれませんが、こちらにWindows Server環境が無いので確認できません。
hiroki-o

2026/04/29 09:09

よく読んだら、Windows 11でも動かないと書いていますね。 何かの手順が間違っています。 証明書付きの実行ファイルを作る際の、py -m PyInstaller~を提示できますか?
saya24

2026/04/29 14:10

>- 修正前に動いていた環境 - 証明書のパスを取得した環境 - 実行ファイルを作成した環境 >は、同じWindows 11ですか? Yes, 但し、時間が経過した関係で WindowsUpdateがあたっています。 >そのWindows 11のSandbox側には証明書が無いので、そこで試してみてください。 大変申し訳ございません。 Sandbox という言葉が SalesForceの運用上 聞いたことがあるのですが 今回の話題のうえで 自分が解釈できておりません。 開発端末では ない 別Windows端末を用意しての実行をおっしゃられているでしょうか? また、試すべき実行方法は 現在当方がWindows11で直近で 試した VisualStudioからのデバッグじっ項のことではないのでしょうか? EXE化したものの実行をおっしゃられているでしょうか?
hiroki-o

2026/04/29 20:27

長文になったので、回答に追記しました。ご確認ください。
saya24

2026/05/01 04:53

ただ今、サンドボックスのインストールを完了しました。追って報告いたします
saya24

2026/05/01 07:18

hiroki-oさん サンドボックスのご紹介ありがとうございました。 今後の自分の業務活動に役たちそうでノウハウを吸収でき、助かります。 本文に画像貼り付けますが 結果は思わしくありませんでした。 検証対象・検証方法をだいぶ明確に ご指示頂きまして この状況ということは 自分が正しくEXE化を行えていないということでしょうか?
saya24

2026/05/01 12:34

ご提示いただきました確認事項の2しか対応していないですね。本文に最後に貼り付けた内容はサンドボックスでの実行結果だけですから。 1はサンドボックスに貼りつけず、自分のWin11端末でのEXE実行ですよね? これまだ未確認です。 実施のPyInstaller実行文は 既にはりつけていたと思いますが、また改めて明日貼り付けますね。 お付き合い頂きありがとうございます。
hiroki-o

2026/05/02 06:47

PyInstallerの実行方法は問題無いですが、出力が短すぎるように見えます。 buildフォルダー、distフォルダー、HOLIDAYS.specを削除して、再度PyInstallerを実行してみてください。
saya24

2026/05/04 00:48

hiroki-oさん 長期にわたってのご支援・あきらめずにこちらの問題に視野を向き合い続けて頂ける点 大変感謝しております。本文に buildフォルダー、distフォルダー、HOLIDAYS.specを削除して、再度PyInstallerを実施し かつ Windows11で実行した結果を貼り付けました。 ただ、貼り付けた実行結果は サンドボックスではないので 今からサンドボックスの実行を試行致します。結果をえたら報告あらためます
saya24

2026/05/04 02:13

hiroki-oさん 本文に buildフォルダー、distフォルダー、HOLIDAYS.specを削除して、再度PyInstallerを実施し 生成されたEXEの sandbox上の実行結果を貼り付けました。 メッセージは変わったのですが、sandbox環境が インターネットに接続できているか若干心配です。 従業員端末が sandboxの利用・sandbox経由の外部接続をよしとしないのか 検証の本来の目的を達成できているのか  不安な状況です。 PyInstallerの実行・及び証明書ありかの確認も 本来sandbox側で対応すべきだったんですかねぇ 明日は 自宅WiFiとは異なる 会社のLANケーブル接続で 再確認しようと考えています。 (自宅WiFiを利用して 持ちかえっている従業員端末での開発・検証を継続してきています。 sandboxで一度検証して以降 当該従業員端末で 自宅WiFiを利用した外部接続が行えていない状況。なんか遮断されているような・別のWiFi利用ならば 外部接続を復活できた。但しsandboxは外部接続不可)
saya24

2026/05/04 02:36

上記で 自分が 「なんか遮断されているような」 と述べた理由は サンドボックスで、Web閲覧する従業員を 親会社のIT部門が監視できないのでは と思いました。
hiroki-o

2026/05/04 05:51

長文になったので、回答に(追記2)で追記しました。ご確認ください。
guest

0

エラーメッセージ SSL: CERTIFICATE_VERIFY_FAILED certificate has expired から、SSL証明書の検証に失敗していることが原因です。

Windows Server 2022ではルート証明書の自動更新がデフォルトで無効になっている場合があり、古い証明書ストアのままだとhttpsアクセスに失敗します。

対処法1: ルート証明書の更新
サーバーのWindows Updateを実行するか、certutil コマンドでルート証明書を手動更新してください。

対処法2: Pythonコード側での対応
certifi パッケージをインストールし、PyInstallerでバンドルすることで、OS側の証明書ストアに依存しなくなります。

投稿2026/03/23 10:41

i18nagentai

総合スコア16

saya24

2026/03/23 23:16

i18nAgent.aiさん ありがとうございます、ただいま対処法の選択を検討中です。matukesoさんから頂きました見解も考慮に入れて判断致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.25%

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

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

質問する

関連した質問