我的可执行脚本使用的包很少依赖于 xlrd 模块。因此,我尝试使用如图所示的 include 选项将这个模块包含在安装脚本中。但是当 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。那么现在,即使它通过 spwaning 新进程运行,我是否有可能以某种方式使 xlrd 模块可用于来自 zip 文件的包?
问候,
最佳答案
下载 xlrd 包时,有两种选择:
xlrd-0.7.1\xlrd\
。 python xlrd-0.7.1\setup.py install
完成后(其中之一)。验证您是否可以导入它。打开 python 并输入
import xlrd
。如果您没有看到任何错误,则说明它已成功安装。关于python - 无法导入 xlrd 模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5190025/