我已经使用Scrapy和wxPython创建了一个刮板,它按预期工作,将带有结果的文件以CSV格式导出到桌面。我正尝试使用以下命令提示行将此包装到cx_Freeze的可执行文件中:
cxfreeze ItemStatusChecker.py --target-dir dist
这似乎工作正常,使用ItemStatusChecker.exe构建dist目录
但是,当我打开ItemStatusChecker.exe时,我在命令提示符下出现以下错误,我的GUI无法启动:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
exec code in m.__dict__
File "ItemStatusChecker.py", line 6, in <module>
File "C:\Python27\lib\site-packages\scrapy\__init__.py", line 6, in <module>
__version__ = pkgutil.get_data(__package__, 'VERSION').strip()
File "C:\Python27\lib\pkgutil.py", line 591, in get_data
return loader.get_data(resource_name_)
IOError: [Errno 2] No such file or directory: 'scrapy\\VERSION'
我也试过通过py2exe运行它。这似乎工作正常,创建dist目录,但我在尝试启动exe时遇到一个非常类似的错误:
Traceback (most recent call last):
File "ItemStatusChecker.py", line 6, in <module>
File "scrapy\__init__.pyc", line 6, in <module>
File "pkgutil.pyc", line 591, in get_data
IOError: [Errno 2] No such file or directory: 'scrapy\\VERSION'
我是一个蟒蛇新手,所以如果我遗漏任何必要的细节,请告诉我。如果您有任何建议,请提前感谢您!
答案 0 :(得分:0)
听起来像cxfreeze和py2exe没有自动获取scrapy包。对于cx_freeze,您可能需要查看 - include-modules 指令:
对于py2exe,您需要创建一个 setup.py 脚本,其中指定了 includes 列表。这是一个教程,展示了如何做到这一点:
答案 1 :(得分:0)
看看(http://cx-freeze.readthedocs.org/en/latest/faq.html#using-data-files)
我的解决方案使用cx-freeze:
修改文件 C:\ Python2.7 \ Lib \ site-packages \ scrapy__init __。py
import sys
# Scrapy version
import pkgutil
if getattr(sys, 'frozen', False):
__version__ = 'VERSION'.decode('ascii').strip()
else:
__version__ = pkgutil.get_data(__package__, 'VERSION').decode('ascii').strip()
和文件 C:\ Python2.7 \ Lib \ site-packages \ scrapy \ responsetypes.py
import sys
from mimetypes import MimeTypes
from pkgutil import get_data
...
def __init__(self):
self.classes = {}
self.mimetypes = MimeTypes()
if getattr(sys, 'frozen', False):
mimedata = 'mime.types'
else:
mimedata = get_data('scrapy', 'mime.types')
self.mimetypes.readfp(StringIO(mimedata))
在setup.py中包含此构建exe选项
"include_files": [("C:\\Python27\\Lib\\site-packages\\scrapy\\VERSION","VERSION"),
("C:\\Python27\\Lib\\site-packages\\scrapy\\mime.types","mime.types")]}