Python 使用py2exe创建exe和脚本导入xlrd时出现问题
我的目标是创建一个python脚本,在excel文档的单元格上循环。这是我的python脚本,名为Python 使用py2exe创建exe和脚本导入xlrd时出现问题,python,py2exe,xlrd,Python,Py2exe,Xlrd,我的目标是创建一个python脚本,在excel文档的单元格上循环。这是我的python脚本,名为reader.py,运行良好 import xlrd import os exceldoc = raw_input("Enter the path to the doc [C:\\folder\\file.xlsx]: ") wb = xlrd.open_workbook(exceldoc,'rb') .... some code.... 我遇到的问题是试图使用
reader.py
,运行良好
import xlrd
import os
exceldoc = raw_input("Enter the path to the doc [C:\\folder\\file.xlsx]: ")
wb = xlrd.open_workbook(exceldoc,'rb')
.... some code....
我遇到的问题是试图使用py2exe创建一个可执行文件,以便该脚本可以在其他地方使用
这是我的setup.py
文件:
from distutils.core import setup
import py2exe
import sys
from glob import glob
setup(name='Excel Document Checker',console=['reader.py'])
from distutils.core import setup
import py2exe
import sys
from glob import glob
options={
"py2exe":{"unbuffered": True,"optimize": 2,
'includes':['xml.etree.ElementPath', 'xml.etree.ElementTree', 'xml.etree.cElementTree'],
"packages": ["elementtree", "xml"]}}
setup(name='Excel Document Checker',options = options,console=['reader.py'])
我运行以下命令:python setup.py py2exe
它似乎运行良好;它创建了dist
文件夹,其中包含我的reader.exe
文件,但在命令末尾,我得到以下信息:
The following modules appear to be missing
['cElementTree', 'elementtree.ElementTree']
我在网上做了一些搜索,并尝试了这里的建议,这改变了我的setup.py
文件:
from distutils.core import setup
import py2exe
import sys
from glob import glob
setup(name='Excel Document Checker',console=['reader.py'])
from distutils.core import setup
import py2exe
import sys
from glob import glob
options={
"py2exe":{"unbuffered": True,"optimize": 2,
'includes':['xml.etree.ElementPath', 'xml.etree.ElementTree', 'xml.etree.cElementTree'],
"packages": ["elementtree", "xml"]}}
setup(name='Excel Document Checker',options = options,console=['reader.py'])
我现在得到一个错误:
ImportError:没有名为elementtree的模块
我在这里有点陷入僵局。非常感谢您的帮助或指导
只是一些信息-我正在32位系统上运行Python 2.6。您明确告诉
setup.py
依赖名为elementtree
的包,这里:
"packages": ["elementtree", "xml"]}}
stdlib中没有这样的包。有xml.etree
,但显然是同一个名称
您发现的示例显然是为安装了第三方软件包的人设计的,如果您需要在Python2.6版本的xml.etree
之后添加功能,或者如果您需要使用Python1.5-2.4,则必须使用第三方软件包,但如果您只想使用Python2.6版本,则不需要。(无论如何,如果您确实需要第三方软件包,那么您必须安装它,否则它显然无法工作。)
所以,只要不这样做,错误就会消失
此外,如果您的代码或您导入的代码(例如,
xlrd
)使用的是xml.etree.cElementTree
,那么,正如前面所说的,您还必须导入xml.etree.ElementTree
,然后才能使用它来工作。(您可能还需要手动将其指定为依赖项。)
您可能不想更改正在使用的所有第三方模块……但我相信,在导入任何第三方模块之前,请确保
导入xml.etree.ElementTree
。顺便说一句,我在pyinstaller构建windows可执行文件方面运气更好……您安装了etree的第三方版本(通常比stdlib中的版本更新,因此如果可能,某些模块/程序会尝试导入它)?我相信它的名称是elementtree
(当然是),而不是stdlib的xml.etree
。另外,请向我们展示整个回溯,而不仅仅是错误字符串。然后告诉我们你什么时候能建立一个bdist?安装?运行已安装的版本?