

仮想環境の構築後Pythonファイルを `pyinstaller Pythonファイル名 --onefile --noconsole` でEXE化しました。  
その後ためしに実行してみたのですが、下記エラー（添付画像）が発生しました。

[![EXEファイル実行時のエラー](https://i.stack.imgur.com/6JsNf.png)](https://i.stack.imgur.com/6JsNf.png)

どうやらcftimeというモジュールがないというのでpipでインストールしようと思ったのですが、そもそもnetCDF4というパッケージをインストールする段階で下記の通り一緒にインストールされています。

[code]

    (project_env) PS T:\PROJECT_Automation> python -m pip install netCDF4
    Collecting netCDF4
      Using cached netCDF4-1.5.8-cp37-cp37m-win_amd64.whl (3.0 MB)
    Requirement already satisfied: numpy>=1.9 in t:\project_automation\project_env\lib\site-packages (from netCDF4) (1.21.6)
    Collecting cftime
      Using cached cftime-1.6.0-cp37-none-win_amd64.whl (154 kB)
    Installing collected packages: cftime, netCDF4
    Successfully installed cftime-1.6.0 netCDF4-1.5.8
    
[/code]

実際、T:\PROJECT_Automation\project_env\Lib\site-packagesで確認するとインストールされていました。  
なぜモジュールが見つからないというエラーがでるのでしょうか。  
解決方法が分かりません。  
ご存じの方よろしくお願いいたします。


CC BY-SA 4.0
2022-06-13T07:44:39.137
89365
2023-07-04T16:00:20.060
2022-06-13T08:52:01.653
3060
48769
question
python pyinstaller
EXE化したPythonファイルを実行するとエラーが発生する


この記事が丁度同じ問題を扱っているようです。  
回答にはなっていませんが、コメントが付いていてupvoteされており、それで解決したようです。  
[PyInstaller cftime module not
found](https://stackoverflow.com/q/63618695/9014308)

> add the flag --hidden-imports cftime to your command.  
>  Because you don't import the module directly, pyinstaller may not realize
> that it's a needed dependency.

> It works! Thank you very much!

ただし追加するのは`--hidden-imports cftime`となっていますが、実際には最後に`s`の無い`--hidden-
import`の必要があり、`--hidden-import cftime`となるようです。  
もしかしたらPyInstallerの版数によって違いがあるのかもしれません。

上記記事に問題を再現するソースコードと手順が示されており、そのように作業すれば再現しました。  
(pipやsetuptoolsの版数は更新しておきましたが)

そしてコメントにあったように(実際には`s`を外して)オプションを追加するとエラーは無くなって動作するようになりました。

質問の現象も同様と思われますので、試してみてください。


CC BY-SA 4.0
2022-06-13T13:57:56.210
89369
2022-06-13T13:57:56.210
26370
89365
answer