使用 py2exe 编译 PyQt4 python 代码后,SVG 图像不出现
我使用 svg 图像作为图标编写了 python 应用程序。
QtGui.QIcon(':icons/icon.svg') <- just like this
它可以在我的计算机上运行,但是用 py2exe 编译并在另一台计算机上运行后,没有图标。 如果我尝试例如 bmp 格式,一切正常。所以我认为这可能是一些图书馆的问题。 我不知道 PyQt4 用于 svg 图形的什么。
在我编写的 setup.py 文件中
dllList = ('mfc90.dll','msvcp90.dll','qtnetwork.pyd','qtxmlpatterns4.dll', 'qsvg4.dll', 'qsvgd4.dll')
origIsSystemDLL = py2exe.build_exe.isSystemDLL
def isSystemDLL(pathname):
if os.path.basename(pathname).lower() in dllList:
return 0
return origIsSystemDLL(pathname)
py2exe.build_exe.isSystemDLL = isSystemDLL
setup(windows=[{"script" : "myApp.py"}], options={"py2exe" : {"includes" : ["sip", "PyQt4.QtNetwork", "PyQt4.QtWebKit", "PyQt4.QtSvg" ]}})
,myApp.exe 目录中还包含 imageformats 文件夹(带有 qvg4.dll 等),
那么如何解决这个问题?
谢谢, 贾雷克
I wrote python application using svg images as icons.
QtGui.QIcon(':icons/icon.svg') <- just like this
it works on my comuter but after compiling it with py2exe and running on another computer, theres no icons.
if i try e.g. bmp format, all works fine. so i think it could be some library problem.
I don't know what PyQt4 uses for svg graphics.
in setup.py file i wrote
dllList = ('mfc90.dll','msvcp90.dll','qtnetwork.pyd','qtxmlpatterns4.dll', 'qsvg4.dll', 'qsvgd4.dll')
origIsSystemDLL = py2exe.build_exe.isSystemDLL
def isSystemDLL(pathname):
if os.path.basename(pathname).lower() in dllList:
return 0
return origIsSystemDLL(pathname)
py2exe.build_exe.isSystemDLL = isSystemDLL
setup(windows=[{"script" : "myApp.py"}], options={"py2exe" : {"includes" : ["sip", "PyQt4.QtNetwork", "PyQt4.QtWebKit", "PyQt4.QtSvg" ]}})
and also have imageformats folder (with qvg4.dll etc.) included in myApp.exe directory
so how solve this problem?
thanks,
jarek
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
qsvg
插件需要QtXml
。将"PyQt4.QtXml"
添加到您的包含中。另请参阅Qt 中的库依赖项。
The
qsvg
plugin requiresQtXml
. Add"PyQt4.QtXml"
to your includes.Also see library dependencies in Qt.
你必须在应用程序的主安装目录(实际上是应用程序的工作目录)中添加一个
qt.conf
,其中包含:所以目录布局是:
然后在本例中,
qt.conf
中的目录是plugins
。You have to add a
qt.conf
in your application's main installation directory (actually, the application's working directory), containing:So the directory layout is:
And then in this case, the directory in
qt.conf
isplugins
.使用的插件(Qt 4.6)是:
正如 Ivo 所解释的,您仍然需要 qt.conf。
The plugin used (Qt 4.6) is:
You still need qt.conf as Ivo explained.