我的可执行脚本使用的软件包很少依赖 xlrd 模块。因此,我尝试使用如图所示的包含选项将此模块包含在设置脚本中。但是当 runnery.py 调用包模块时,尽管 library.zip 文件中存在 xlrd 文件,但模块无法导入 xlrd。
from cx_Freeze import setup, Executable
import xlrd
buildOptions = dict(
compressed = True,
optimize=2,
path=sys.path+[".\\uitls", “.\\supported”],
include_files=[“Doc"],
includes=[“xlrd”, "win32com"],
packages=["utils", ”supported"],
append_script_to_exe=True,
copy_dependent_files=True,
)
setup(
name = "TestExecutable",
version = "0.1",
options = dict(build_exe = buildOptions),
executables = [Executable(
script=r".\\codebase\\ runner.py",
icon=".\\icon.ico",
base="Win32GUI")]
)
而如果我尝试在 runner.py 中导入 xlrd,它可以导入它。我不确定在这种情况下出了什么问题,因为依赖包无法导入 xlrd。是否有一些我遗漏的选项或我做错了什么?
更新:我发现依赖包是通过产生一个进程来调用的,所以它创建了一个新环境,其中没有 xlrd 模块,也不知道包含它的 library.zip。所以现在,我是否有可能让 xlrd 模块从 zip 文件中对包可用,即使它是通过生成新进程来运行的?问候,