Pythonスタンドアロン実行可能ファイルのプラグインを作成する
-
08-07-2019 - |
質問
pyInstaller、py2exe、または同様のツールで作成されたスタンドアロンの実行可能ファイル用の優れたプラグインエンジンを作成する方法
py2exeの経験はありませんが、pyInstallerはインポートフックを使用して、圧縮リポジトリからパッケージをインポートします。もちろん、pyInstallerで作成された別の圧縮リポジトリを動的にインポートし、コードを実行することができます-これは単純なプラグインエンジンかもしれません。
プラグイン(動的にインポートされるもの)が元のリポジトリに存在しない(インポートされていない)ライブラリを使用すると、問題が発生します。これは、インポートフックが元のアプリケーション用であり、後でインポートされるプラグイン(プラグインパッケージリポジトリ)ではなく、元のリポジトリでパッケージを検索するためです。
この問題を解決する簡単な方法はありますか?たぶんそのようなエンジンが存在しますか?
解決
exeにコンパイルすると、この問題が発生します。
ユーザーがプラグインを使用してPythonライブラリを使用できるようにする唯一のオプションは、exeパッケージにすべてのライブラリを含めることです。
サポートされているライブラリをサブセットに限定し、ドキュメントにリストすることをお勧めします。あなた次第。
py2exeのみを使用しました。
py2exeでは、検索で見つからなかったライブラリを setup.py ファイルで指定できます。
サンプルは次のとおりです。
from distutils.core import setup
import py2exe
setup (name = "script2compile",
console=['script2compile.pyw'],
version = "1.4",
author = "me",
author_email="somemail@me.com",
url="myurl.com",
windows = [{
"script":"script2compile.pyw",
"icon_resources":[(1,"./ICONS/app.ico")] # Icon file to use for display
}],
# put packages/libraries to include in the "packages" list
options = {"py2exe":{"packages": [ "pickle",
"csv",
"Tkconstants",
"Tkinter",
"tkFileDialog",
"pyexpat",
"xml.dom.minidom",
"win32pdh",
"win32pdhutil",
"win32api",
"win32con",
"subprocess",
]}}
)
import win32pdh
import win32pdhutil
import win32api
他のヒント
PyInstallerは、隠されたインポートを処理するためのプラグインシステムを持っています。すでにいくつかのインポートが含まれています。ウェブページ( http://www.pyinstaller.org )は次のように述べています:
PyInstallerの主な目標は、サードパーティのパッケージとすぐに互換性を持つことです。つまり、PyInstallerを使用すると、外部パッケージを機能させるために必要なすべてのトリックが既にPyInstaller自体に統合されているため、ユーザーの介入は不要です。ウィキでトリックを探したり、ファイルやセットアップスクリプトにカスタム変更を適用する必要はありません。 SupportedPackagesの互換性リストを確認してください。