将python脚本转换为使用lxml';s etree模块
在2013年9月,我和此人的问题基本相同 相关问题: (有人通过编辑cx冻结代码找到了修复方法,但没有深入解释),(不知道如何在Linux中打开鸡蛋) 在我有50个名声之前,我是不允许评论的,所以我发布了这个帖子。我正在使用cx_freeze的4.3.1来冻结以下模块:将python脚本转换为使用lxml';s etree模块,python,linux,lxml,portability,cx-freeze,Python,Linux,Lxml,Portability,Cx Freeze,在2013年9月,我和此人的问题基本相同 相关问题: (有人通过编辑cx冻结代码找到了修复方法,但没有深入解释),(不知道如何在Linux中打开鸡蛋) 在我有50个名声之前,我是不允许评论的,所以我发布了这个帖子。我正在使用cx_freeze的4.3.1来冻结以下模块: import sys import getopt from time import gmtime, strftime, time from os.path import exists from lxml import etree
import sys
import getopt
from time import gmtime, strftime, time
from os.path import exists
from lxml import etree
My setup.py脚本:
import sys
from cx_Freeze import setup, Executable
#build_exe_options = {"packages": ["sys","getopt","time","os","lxml"]}
build_exe_options = {"packages": ["sys","getopt","time","os","lxml","BeautifulSoup","lxml.html.soupparser","lxml.html.html5parser","lxml.html.diff","lxml.ElementInclude"]}
setup(
name = "cmpxml",
version = "r13",
description = "",
options = {"build_exe": build_exe_options},
executables = [ Executable("cmpxml.py", base = None) ] )
我跑
python setup.py build_exe
或
python setup.py构建
并接收以下信息:
? cjkcodecs.aliases imported from BeautifulSoup
? html.entities imported from lxml.html.soupparser
? html5lib imported from lxml.html.html5parser
? iconv_codec imported from BeautifulSoup
? lxml.html.escape imported from lxml.html.diff
? urllib.parse imported from lxml.ElementInclude
? urllib.request imported from lxml.ElementInclude
当运行我编译的程序时,它在尝试导入lxml时失败,因此我觉得上面的消息在调试编译时是至关重要的
我是否做错了什么,或者这是cx冻结的问题?我的LXML模块是使用pip安装的(因此不需要PYTHONPATH),我在ubuntu13.10上使用python2.7
Nuitka 0.4.7: 其他问题,但相关的:巧合的是,我也有一个与Nuitka类似的问题
/usr/share/nuitka/bin/nuitka cmpxml.py --exe --recurse-all --execute
将正确编译,但在运行时。/cmpxml将无法找到lxml模块
PyInstaller 2.1: 还尝试将pyinstaller与包含hook-lxml.etree.py、hook-lxml.objectify.py、hook-xml.etree.celementree.py和running的hooks目录一起使用
pyinstaller --additional-hooks-dir=hooks/ cmpxml.py
在dist/cmpxml/cmpxml中运行二进制文件时,它仍然无法检测到lxml。build目录中的警告文件包含这些丢失的模块,从pyinstaller git下载所有钩子并不能解决问题
$ cat build/cmpxml_noetree/warncmpxml_noetree.txt
W: no module named msvcrt (conditional import by subprocess)
W: no module named msvcrt (delayed import by getpass)
W: no module named _dummy_threading (top-level import by dummy_threading)
W: no module named cl (delayed, conditional import by aifc)
W: no module named rourl2path (conditional import by urllib)
W: no module named nt (conditional import by __main__)
W: no module named nt (conditional import by pyi_os_path)
W: no module named _subprocess (conditional import by subprocess)
W: no module named cl (delayed import by aifc)
W: no module named _scproxy (conditional import by urllib)
W: no module named org (top-level import by pickle)
W: no module named EasyDialogs (conditional import by getpass)
W: no module named SOCKS (top-level import by ftplib)
W: no module named _winreg (delayed import by urllib)
W: no module named nt (top-level import by ntpath)
W: no module named msvcrt (conditional import by getpass)
W: no module named _winreg (top-level import by mimetypes)
W: no module named org (top-level import by copy)
W: no module named _emx_link (conditional import by os)
奇怪的是,在这个警告文件中甚至没有提到lxml。由于某些原因,它只是不包括在内
任何帮助都将不胜感激。Nuitka、pyinstaller、freeze、cx freeze,所有这些似乎都是很棒的程序,但似乎对我不起作用 我的一位朋友告诉我,问题是由于缺少inspect模块的导入 cx freeze的正确命令用于编译上述内容:
cxfreeze cmpxml.py --target-dir cmpxml --include-modules=sys,getopt,time,os,inspect,lxml.etree,lxml._elementpath,gzip,encodings.utf_8,encodings.ascii
此外,对于那些在谷歌上搜索这个问题的人来说。
OP使用了Nuitka 4.3.1,但在Nuitka 0.5.1中,问题似乎已经解决了您在cx_Freeze中显示的“错误”是警告,而不是错误-当您尝试运行它生成的程序时,是否会出现错误?我知道它们是警告,但由于在尝试运行它生成的程序时它不起作用,我试图显示尽可能多的输出以调试该情况。您是否也可以显示运行该程序时出现的错误?我相信此问题是由于缺少导入inspect模块造成的。您有更多详细信息吗?在cx_Freeze中很可能修复它,但很难知道问题出在哪里。我使用的是cxFreeze的4.3.1。一定是打字错误。我使用的是0.4.7版。我将试用新版本,看看是否有效。