用py2exe编译PyQt4 python代码后不会出现SVG图像

时间:2010-08-08 15:19:03

标签: python svg pyqt4 py2exe

我使用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等)

那怎么解决这个问题呢?

感谢, 亚雷克

3 个答案:

答案 0 :(得分:3)

使用的插件(Qt 4.6)是:

  • 插件/
    • iconengines /
      • qsvgicon4.dll

正如Ivo解释的那样,你仍然需要qt.conf。

答案 1 :(得分:2)

您必须在应用程序的主安装目录(实际上是应用程序的工作目录)中添加qt.conf,其中包含:

[Paths]
Plugins = <directory containing the image plugins directory>

所以目录布局是:

  • APP.EXE
  • qt.conf
  • 插件/
    • imageformats /
      • qsvg4.dll

然后在这种情况下,qt.conf中的目录为plugins

答案 2 :(得分:0)

qsvg插件需要QtXml。将"PyQt4.QtXml"添加到您的包含中。

另见library dependencies in Qt