3

我的可执行脚本使用的软件包很少依赖 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 文件中对包可用,即使它是通过生成新进程来运行的?问候,

4

4 回答 4

3

下载 xlrd 包时,有两种选择:

  1. 包含xlrd-0.7.1\xlrd\在您的 Python 路径中。
  2. 安装它python xlrd-0.7.1\setup.py install

一旦你完成(任何一个)。确认您可以导入它。打开 python 并输入import xlrd. 如果您没有看到任何错误,则说明它已成功安装。

于 2011-03-04T05:42:29.053 回答
2

也许应该uitls是。path=sys.path+[".\\uitls", “.\\supported”],utils

xlrd 到底安装在哪里?

xlrd是一个包,而不是一个模块;你试过把它放在包列表而不是包含列表中吗?

始终使用原始字符串。

为什么你有双反斜杠script=r".\\codebase\\ runner.py",?Windows 似乎将多个反斜杠视为一个,但为什么会这样呢?为什么之前有空位runner.py?你确定这个安装文件真的运行了吗?

于 2011-03-05T09:15:15.820 回答
2

找到了解决问题的方法,我从 lib\site-packages 文件夹中复制了 xlrd 文件夹,并将其包含在 include_files 选项下。现在,当我的子进程可执行文件运行时,路径已设置,因此它知道 xlrd 的位置并且可执行文件能够导入 xlrd。

于 2011-03-16T05:18:04.103 回答
0

听起来 xlrd 模块没有正确安装。您可以从 Windows pip install xlrd 中的命令提示符安装,这应该可以解决您的问题。在使用 Pandas 读取扩展名为 xlsx 的文件时,我遇到了同样的问题。

于 2016-12-30T22:44:21.863 回答