Pythonプログラムの* .exeファイルを作成するために過去に何回かpy2exeを使用しました。しかし、今回はエラーが出ます。問題の内容を知っていると思いますが、解決方法はわかりません。Pythonとpy2exe - Implicitely importing modules
私はサブフォルダ内にいくつかのwx.Panelsを持っていて、可変量になる可能性があるので、フォルダ内の* .pyファイルを検索して関数を呼び出して、実際に各パネル。
通常のPythonでは、これはうまくいきます。ただし、py2exeはこれらのファイルを出力しません。私は彼らが明示的にインポートされていないので、py2exeは彼らが必要と考えていないと仮定します。これには解決策がありますか?私が気付いていないpy2exeのいくつかのオプション?
ありがとうございます!
# module = Module to be imported (string)
# folder = Folder containing the module (string)
def import_module(module, folder=None):
if folder is None:
return __import__(module)
return getattr(__import__('%s.%s' % (folder.replace(os.path.sep, '.'),
module)), module)
...within some other function...
modules = [import_module(os.path.basename(os.path.splitext(filename)[0]), 'Panels') for filename in glob.glob('Panels//*.py')]
EDIT
私は私が使用したサンプルのsetup.pyスクリプトを追加しています。しかし、私はおそらく20種類のバリエーションといくつかの全く異なるスクリプト(私はインターネット上で見つけることができます)を使用しました。 1つの要件は、1つの実行可能ファイルに完全に自己完結していることです。
from distutils.core import setup
import py2exe
import wxversion
wxversion.select("2.8.12.1")
import wx
import wx.lib.pubsub
includes = []
excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger',
'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
'Tkconstants', 'Tkinter']
packages = ['wx.lib.pubsub']
dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
'tk84.dll']
import glob
my_data_files = [('Panels', glob.glob('Panels/*.py'))]
setup(
options = {"py2exe": {"compressed": 2,
"optimize": 2,
"includes": includes,
"excludes": excludes,
"packages": packages,
"dll_excludes": dll_excludes,
"bundle_files": 2,
"dist_dir": "dist",
"xref": False,
"skip_archive": False,
"ascii": False,
"custom_boot_script": '',
}
},
zipfile = None,
#data_files = my_data_files,
windows=['Main.py']
)