Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PyInstaller将wxPython转换为exe?_Python_Wxpython_Exe_Pyinstaller - Fatal编程技术网

使用PyInstaller将wxPython转换为exe?

使用PyInstaller将wxPython转换为exe?,python,wxpython,exe,pyinstaller,Python,Wxpython,Exe,Pyinstaller,我正在尝试让wxPython应用程序作为exe运行。我听说PyInstaller现在优于py2exe。我想包括脚本运行所需的.ico和两个.png文件。这个的规范文件是什么样子的?我似乎在任何地方都找不到一个像样的例子。我已经安装了PyInstaller,但是我在任何地方都找不到这个“makespec”。在我的PyInstaller项目中,我通常只进行运行时检查,并相应地调整位图的路径。因此,要处理PyInstaller和常规Python应用程序,请执行以下操作: def app_path():

我正在尝试让wxPython应用程序作为exe运行。我听说PyInstaller现在优于py2exe。我想包括脚本运行所需的.ico和两个.png文件。这个的规范文件是什么样子的?我似乎在任何地方都找不到一个像样的例子。我已经安装了PyInstaller,但是我在任何地方都找不到这个“makespec”。

在我的PyInstaller项目中,我通常只进行运行时检查,并相应地调整位图的路径。因此,要处理PyInstaller和常规Python应用程序,请执行以下操作:

def app_path():
    """Returns the base application path."""
    if hasattr(sys, 'frozen'):
        # Handles PyInstaller
        return os.path.dirname(sys.executable)
    return os.path.dirname(__file__)

检查
sys.freezed
是一个非常好的方法。您还可以查看
img2py
,这将允许您将图像的二进制数据加载到.py文件中。以后,不必打开文件,就可以导入它们。

但是规范会是什么样子?@tkbx如果这样做,它就不会播放了-你只是告诉Python自己在哪里可以找到位图。因此,您只需在生成后将icons文件夹添加到PyInstaller dist文件夹,而.exe会在它的(dist)目录中查找这些文件?文件夹是否必须安装在系统的某个位置?对,图标文件夹将放在dist文件夹下并安装在系统上。
a = Analysis(['script.py'],
             pathex=['D:\\source-control\\GITHUB\\projectname'],
             hiddenimports=[],
             hookspath=None,)

a.datas += [( 'images', r'C:\Users\igorl\Pictures\hzgJUXi5l4o.jpg', 'DATA')]

pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name=os.path.join('dist', 'script.exe'),
          debug=False,
          strip=None,
          upx=True,
          console=False )