2015-01-14 15 views
11

PyInstallerで何とか検出されないパッケージ(たとえば、datareaddatainspector)が必要です。このため、実行中のアプリケーションがそれらのパッケージからモジュールをインポートする必要がある時点に到達すると、アプリケーションは終了します。pyinstallerフックを正しく作成する方法、または隠れたインポートを作成する方法はありますか?

最も簡単な解決策は、datareaddatainspectorをパッケージアプリにコピーすることです。しかし、これはアプリケーションのバイナリバージョンをパッケージ化する意思を破ります。

私はhidded輸入とフックについて読んだ、と私は両方の問題を解決することができると思います。しかし、私はどちらを使うのかは分かりません。

提案がありますか? PS:これらの両方のパッケージが含まれていてもよいネストされたディレクトリ

+0

まあ、本当にあなたの決定です。あなたは自分の経験を使って選択するべきです。私は彼らのために働く他の人のアイデアはあなたのために働かないかもしれないと思います。最良の結果を得るために自分でテストしてください。 –

+0

現時点では、私の経験は両方の点で非常に限られています。しかし、現在作業しています;)PyInstallerのドキュメントは、彼らの技術に慣れ親しんだ人たちのために適切な基盤概念を構築する必要があると思います。たとえば、私のパッケージはどこに行くのかはわかりません。* .exeの中にありますか?この回答を素敵にまとめたいのですが;) – swdev

答えて

19

フックがpyInstallerのは、import文を見つけたときに追加のアクションを指定するファイルです。したがって、が見つかった場合はhiddenimports = ['_proxy', 'utils', 'defs']のフック - データファイルを追加して、hook-data.pyファイル内の追加コマンドをチェックします。あなたは、簡単な解決策はpyInstallerのスクリプトと一緒に--hidden-import=modulenameを使用することです

http://pythonhosted.org/PyInstaller/hooks.html

(元でコンパイルファイルのみを混合よりクリーンなワークスペースを維持する方が良い) --additional-hooks-dirによってフックへのパスを指定する必要があります。モジュールをimportステートメントとして静かに追加します。

フックは、どのファイルにどのモジュールが必要かを指定する場合に適しています。 "--hidden-import"は、ワンショットとして、またはデバッグのために簡単です。

+0

Phew ..これは今までのところ最も役に立つ答えです。私はまずそれを使って私の問題を解決しようとします。私は別の質問をする前に、最初に試してみます。ありがとう! – swdev

+2

あなたはこのファイルをどこに置くのですか? –

+0

ファイルはどこにでも置くことができますが、ソースファイルとは別のフォルダに置いておくのが最善です。実験しているだけなら--additional-hooks-dirに '.'(ドット)を渡すことができます。特別な 'pyinstaller_hooks'フォルダを使用しました。 – alkuzad

関連する問題