Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用py2exe创建exe和脚本导入xlrd时出现问题_Python_Py2exe_Xlrd - Fatal编程技术网

Python 使用py2exe创建exe和脚本导入xlrd时出现问题

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.... 我遇到的问题是试图使用

我的目标是创建一个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....
我遇到的问题是试图使用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?安装?运行已安装的版本?