py2exe打包pyside项目时出错

使用py2exe打包pyside时发现如下错误:

Traceback (most recent call last):
  File "Main.py", line 4, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "PySide\__init__.pyo", line 41, in <module>
  File "PySide\__init__.pyo", line 11, in _setupQtDirectories
  File "PySide\_utils.pyo", line 97, in get_pyside_dir
  File "PySide\_utils.pyo", line 88, in _get_win32_case_sensitive_name
  File "PySide\_utils.pyo", line 63, in _get_win32_short_name
WindowsError: [Error 3] 系统找不到指定的路径。

查源代码_utils.py源码如下:

    def get_pyside_dir():
        try:
            from . import QtCore
        except ImportError:
            return os.path.abspath(os.path.dirname(__file__))
        else:
            return os.path.abspath(os.path.dirname(QtCore.__file__))

可知主要问题在于这里打包成exe zip后,__file__表示的路径找不到了,作如下修改即可解决问题

    def get_pyside_dir():
        is_frozen = hasattr(sys, 'frozen')
        try:
            from . import QtCore
        except ImportError: 
            s1 = sys.argv[0] if is_frozen else __file__
            return _get_win32_case_sensitive_name(os.path.abspath(os.path.dirname(s1)))
        else:
            s2 = sys.argv[0] if is_frozen else QtCore.__file__
            return _get_win32_case_sensitive_name(os.path.abspath(os.path.dirname(s2)))

参考这里 https://stackoverflow.com/questions/17509088/system-path-error-with-pyqt-and-py2exe

原创,转载请注明来自http://blog.csdn.net/wenzhou1219

猜你喜欢

转载自blog.csdn.net/wenzhou1219/article/details/78039874