Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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
Python 如何从PyInstaller一个文件夹构建中删除混乱?_Python_Build_Pygame_Pyinstaller - Fatal编程技术网

Python 如何从PyInstaller一个文件夹构建中删除混乱?

Python 如何从PyInstaller一个文件夹构建中删除混乱?,python,build,pygame,pyinstaller,Python,Build,Pygame,Pyinstaller,好的,所以我设法使用PyInstaller来构建我用Pygame做的家庭作业。酷。可执行文件运行良好,一切正常 问题是,除了可执行文件之外,还有太多的混乱。如此多的文件,如pyds和DLL,伴随着同一目录中的exe,使它看起来如此丑陋 现在,我知道这些文件很重要;我使用的模块,比如Pygame,需要它们才能工作。不过,我如何让PyInstaller构建我的游戏,让它把杂乱的东西放到自己的文件夹中呢?我可以手动创建一个文件夹并将文件移动到其中,但这会使exe停止工作 如果这些信息有帮助的话,我在W

好的,所以我设法使用PyInstaller来构建我用Pygame做的家庭作业。酷。可执行文件运行良好,一切正常

问题是,除了可执行文件之外,还有太多的混乱。如此多的文件,如pyds和DLL,伴随着同一目录中的exe,使它看起来如此丑陋

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

如果这些信息有帮助的话,我在Windows上使用了Python 3.4.3和am。

显然这是一个错误,但在过去两年中没有发生过

我的解决方法是创建一个快捷方式文件夹,该文件夹高于包含所有文件的
.exe
文件夹

这里困难的部分是设置在所有PC中工作的快捷方式

  • 删除“开始于:”路径
  • 设置为“目标”:
    %windir%\system32\cmd.exe”/c start”“%CD%\YourFolder\YourEXE.exe”
  • 第二个调用命令行,并以相对路径启动exe。我只在Windows7上测试过它。缺点是,这会成为命令行的快捷方式,并且会出现一个控制台窗口

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

    @echo off
    setlocal enabledelayedexpansion enableextensions
    set CDir=%~dp0
    set EXEF=%CDir%MyEXEFolder\
    cd %EXEF%
    start "MyCode" "MyCode.exe"
    exit
    
    只需打开记事本,添加代码并将其保存为
    .bat
    文件

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


    还有,但我不想使用另一个程序。

    我不久前遇到了同样的问题,并通过创建一个更高级别的
    .exe
    快捷方式来“解决”它。@Repiklis您是如何做到的,这样最终用户就不必做任何花哨的事情了?当我设置快捷方式时,它只适用于我计算机上的特定路径;如果我将程序发送给其他人,它将不起作用,因为他们在不同的计算机上。问题是快捷方式中声明的程序文件夹。我现在不在windows电脑前,我的记忆有点模糊。如果我没记错的话,你必须进入快捷方式属性并删除“开始于”文件夹。我明天试试看。如果你抢先一步,让我知道。你考虑过用一个文件模式而不是一个目录进行打包吗?这将使所有“丑陋”的文件依赖关系相对看不见(而是在执行期间位于临时目录中)。老师/教授是否希望或需要在积极运行exe时直接查看源代码?我有。而且,作业是从一本书上写的,所以我没有一个老师想要交些东西。单文件模式的问题在于它如何保持故障。对我来说,在exe旁边放一些文件和文件夹会更好,只要不太多(pyinstaller的杂乱程度太高)。关于第2步,“%CD”部分应该是什么?。如果双击包含快捷方式的文件夹,则该文件夹将被选中。尝试后,该文件夹将正常工作。但是,难道没有另一种方法不显示命令窗口吗?不幸的是,我尝试过的任何选项都不会显示控制台,哪怕是很短的时间。也许亲戚会做你想做的事。我用我所知道的所有方法扩展了答案。您给出的批处理文件示例中的CDir是什么?