【问题标题】:How to remove clutter from PyInstaller one-folder build?如何从 PyInstaller 单文件夹构建中消除混乱?
【发布时间】:2017-01-18 01:10:59
【问题描述】:

好的,所以我设法使用 PyInstaller 构建了我用 Pygame 完成的家庭作业。凉爽的。可执行文件运行良好,一切正常。

问题是,除了可执行文件之外,还有很多混乱。这么多的文件,比如pyds和dlls伴随着exe在同一个目录下,让它看起来很丑。

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

如果这些信息有帮助的话,我使用的是 Python 3.4.3 并且在 Windows 上。

【问题讨论】:

  • 我前段时间遇到了同样的问题,并通过创建.exe 更高一级的快捷方式“解决”了它。
  • @Repiklis 你是怎么做到的,所以最终用户不必做任何花哨的事情?当我创建快捷方式时,它仅适用于我计算机上的特定路径;如果我将程序发送给其他人,它将无法正常工作,因为他们在另一台计算机上。
  • 问题是在快捷方式中声明的程序文件夹。我现在不在 Windows 电脑前,我的记忆有点模糊。如果我没记错的话,您必须进入快捷方式属性并删除“开始于”文件夹。我明天试试。如果你打败了我,请告诉我。
  • 您是否考虑过以单文件模式打包而不是单目录?这将使所有“丑陋”的文件依赖关系相对不可见(在执行期间位于临时目录中)。教师/教授是否希望或需要在积极运行 exe 时直接查看源代码?
  • 我有。此外,作业来自一本书,所以我真的没有老师想要上交一些东西。单文件模式的问题是它如何不断出现故障。那,对我来说,在 exe 旁边有一些文件和文件夹看起来更好,只要它不是太多(pyinstaller 混乱太多了)。

标签: python build pygame pyinstaller


【解决方案1】:

显然这是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"

第二个调用命令行并使用相对路径启动您的 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,不过我不想用别的程序了。

【讨论】:

  • 关于第2步,“%CD”部分应该是什么?
  • %CD% is the current working directory。如果你双击它,它就是包含快捷方式的文件夹。
  • 试过了,效果很好。但是,难道没有其他方法不调出命令窗口吗?
  • 不幸的是,我尝试过的任何选项都不会短暂显示控制台。也许Relative会做你想做的。我用我知道的所有方法扩展了答案。
  • 你给出的批处理文件示例中的CDir是什么?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 2014-07-23
    • 2014-10-05
    • 2021-08-27
    相关资源
    最近更新 更多