如何从PyInstaller单文件夹构建中删除混乱?

时间:2016-09-09 20:15:59

标签: python build pygame pyinstaller

好吧,所以我设法使用PyInstaller来构建我用Pygame制作的作业。凉。可执行文件正常工作。

问题是,除了可执行文件之外,还有很多混乱。许多文件,比如pyds和dll都会在同一个目录中附带exe,让它看起来很难看。

现在,我知道这些文件很重要;我使用的模块,比如Pygame,需要它们才能工作。不过,我如何让PyInstaller构建我的游戏,以便将混乱放入自己的文件夹中?我可以手动创建一个文件夹并在那里移动文件,但它会阻止exe工作。

如果这个信息可以帮助我,我使用的是Python 3.4.3,而且是在Windows上。

2 个答案:

答案 0 :(得分:2)

不是想挖掘这个老问题,但这是我谷歌搜索的顶部,所以它可能也适用于其他人。

如果您打算将程序分发到某种文件夹中,您始终可以在 Windows 中将所有不需要的内容标记为隐藏,即使您压缩或解压缩它也会保持隐藏状态。

对于我设计的非常用户友好的程序,我只是选择了用户不需要的每个文件和文件夹并将其隐藏。如果用户显示隐藏文件(很少是默认的),他们就不会被 pyinstaller 创建的混乱文件吓倒。

答案 1 :(得分:0)

显然这是open request for pyinstaller,但过去两年没有发生过。

我的解决方法是使用所有文件创建一个高于.exe文件夹的快捷方式文件夹。

这里的困难部分是设置在所有PC中工作的快捷方式。 I did two things in the shortcut properties

  1. 删除“开始于:”路径
  2. 设为“目标”:"%windir%\system32\cmd.exe" /c start "" "%CD%\YourFolder\YourEXE.exe"
  3. 第二个调用命令行并使用相对路径启动exe。我只用Windows 7测试过它。缺点是它成为了命令行的快捷方式,你得到了一个控制台窗口。

    另一种选择是在高于.exe的文件夹中创建批处理文件并调用它。这仅显示控制台窗口,但不允许您设置自己的图标。启动代码的示例代码:

    @echo off
    setlocal enabledelayedexpansion enableextensions
    set CDir=%~dp0
    set EXEF=%CDir%MyEXEFolder\
    cd %EXEF%
    start "MyCode" "MyCode.exe"
    exit
    

    只需打开记事本,添加代码并将其另存为.bat文件。

    This answer还介绍了py2exe的解决方法,但pyinstaller中可以使用类似的方法。但是,我发现这非常“丑陋”,我不确定在一个文件夹中收集所有依赖项是否容易。

    还有Relative,但我不想使用其他程序。