代码之家  ›  专栏  ›  技术社区  ›  Niloufar Zarin

使用py2exe时,获取“tuple”对象没有属性“split”

  •  -1
  • Niloufar Zarin  · 技术社区  · 10 年前

    我正在使用Py2exe为我的GUI创建一个可执行的应用程序,这是我的设置代码:

    import matplotlib
    from distutils.core import setup
    import FileDialog
    import zmq.libzmq
    
    import py2exe
    setup(
     data_files=[matplotlib.get_py2exe_datafiles(),(zmq.libzmq.__file__,)],
     console = [{'script': 'SVS-virtual-lib2.py'}],
     options={
             'py2exe': {
                     'packages': ['FileDialog'],
                     'includes': ['zmq.backend.cython'],
                     'excludes': ['zmq.libzmq'],
                     'dll_excludes': ['libzmq.pyd']
                     }
            }
    )
    

    但我得到以下错误:

      File "C:\Users\nzarinabad\AppData\Local\Continuum\Anaconda\lib\distutils\util.py", line 128, in convert_path
        paths = string.split(pathname, '/')
      File "C:\Users\nzarinabad\AppData\Local\Continuum\Anaconda\lib\string.py", line 294, in split
        return s.split(sep, maxsplit)
    AttributeError: 'tuple' object has no attribute 'split
    

    有谁知道我为什么会得到错误以及如何修复它? 非常感谢。

    1 回复  |  直到 10 年前
        1
  •  1
  •   Burhan Khalid    10 年前

    请参见 the documentation ,如果要合并 matplotlib.get_py2exe_datafiles() 对于其他文件,您必须执行一些手动操作:

    from distutils.core import setup
    import py2exe
    
    from distutils.filelist import findall
    import os
    import matplotlib
    matplotlibdatadir = matplotlib.get_data_path()
    matplotlibdata = findall(matplotlibdatadir)
    matplotlibdata_files = []
    for f in matplotlibdata:
        dirname = os.path.join('matplotlibdata', f[len(matplotlibdatadir)+1:])
        matplotlibdata_files.append((os.path.split(dirname)[0], [f]))
    
    matplotlibdata_files.append(zmq.libzmq.__file__)
    
    # ...
    
    setup(
     data_files=matplotlibdata_files,
    # rest of your code