我的可执行脚本使用的包很少依赖于 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 包时,有两种选择:

  • 在您的 Python 路径中包含 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/

    10-14 00:20