私は2つのパッケージ(たとえば、dataread
とdatainspector
)を持っていますが、これらはPyInstallerによって検出されませんでした。このため、実行中のアプリケーションがそれらのパッケージからモジュールをインポートする必要があるポイントに到達すると、アプリケーションは終了します。
最も簡単な解決策は、dataread
とdatainspector
をパッケージ化されたアプリにコピーすることです。しかし、これはアプリケーションのバイナリバージョンをパッケージ化する意図を壊します。
非表示のインポートとフックについて読みましたが、どちらも問題を解決できると思いますが、どちらを使用するかわかりません。
助言がありますか? PS:これらのパッケージは両方ともネストされたディレクトリを含む場合があります。
フックは、pyinstallerがインポート文を見つけたときに追加のアクションを指定するファイルです。したがって、pyinstallerがhiddenimports = ['_proxy', 'utils', 'defs']
を見つけた場合にimport data
を含む「hook-data.py」ファイルを追加すると、hook-data.py
ファイル内の追加のコマンドがチェックされます。フックへのパスを--additional-hooks-dir
で指定する必要があります(コンパイル専用ファイルとソースを混在させるよりもクリーンなワークスペースを維持することをお勧めします)
http://pythonhosted.org/PyInstaller/hooks.html
より簡単な解決策は、pyinstallerスクリプトと共に--hidden-import=modulename
を使用することです。静かにimportステートメントとしてモジュールを追加します。
どのファイルにどのモジュールが必要かを指定したい場合は、フックの方が適しています。 「--hidden-import」は、ワンショットとして、またはデバッグのために単純です。