最近,我尝试使用pyinstaller从Python脚本创建一个可执行文件,一切都和预期的一样,我测试了两个选项:--onefile,启动需要很长时间(比如20- 30秒),因为它会将所有内容解包到一个临时目录中。--onedir选项启动起来要快得多(4秒),但使用起来不是很舒服。当我将exe文件移到这个目录之外时,程序不再工作。我的问题是:是否有可能使exe文件指向这个目录位置?2我想把所有的pyinstaller文件保存在一个地方并允许用户在任何他们想要的位置保存exe文件。3谢谢帮助。
最近,我尝试使用pyinstaller从Python脚本创建一个可执行文件,一切都和预期的一样,我测试了两个选项:--onefile,启动需要很长时间(比如20- 30秒),因为它会将所有内容解包到一个临时目录中。--onedir选项启动起来要快得多(4秒),但使用起来不是很舒服。当我将exe文件移到这个目录之外时,程序不再工作。我的问题是:是否有可能使exe文件指向这个目录位置?2我想把所有的pyinstaller文件保存在一个地方并允许用户在任何他们想要的位置保存exe文件。3谢谢帮助。
4条答案
按热度按时间mepcadol1#
让我们来看一个现实的生产案例。无论何时你下载盗版游戏或软件的原始副本,它们通常都是压缩在一起的。当你解压它们时,一个新的文件夹被解压出来,在这个文件夹里有很多其他的文件夹。你要运行这个软件只需双击
.exe
文件。你的情况是一样的。如果你把exe文件移出原来解压的文件夹,那么它就不能工作了。所以,变通的方法是创建一个exe文件的快捷方式。
希望这能澄清你的疑问:)
6ss1mwsb2#
快捷方式。创建.exe快捷方式。这样原始的.exe将仍然在父目录中,但快捷方式可以放在任何地方
beq87vna3#
大多数的答案都是关于创建快捷方式,但这不是真正的解决方案。我们想要的是一个干净的文件夹,有一个目录和该目录外的exe。
遗憾的是,目前无法实现。此问题自2010年以来一直存在,至今尚未修复。以下是该问题的链接:
https://github.com/pyinstaller/pyinstaller/issues/1048
所有他们说的是创建自己的引导加载程序。没有人能够给予公关这一点。
我还在separating the exe from onedir上找到了一个带有钩子文件的博客,我试过这个,但是在最新版本的Pyinstaller上没有成功。
最后你必须做一些滑稽的事情。我找到了一个方法:
1.在可执行文件所在的同一目录中创建一个文件夹
Modules
。1.复制并粘贴该文件夹中的所有重模块。
1.在程序中添加该模块文件夹的搜索路径:
1.在pyinstaller选项
--exclude-module
下,写入您排除的所有模块的名称。1.使用一个文件选项,但不要打包任何其他资产,如图像。添加所有这些外部资产/文件夹外。
1.添加此选项:
--runtime-tmpdir "Temp"
。这样,可执行文件将在新文件夹“Temp”下的同一目录中解压缩所需的文件。就是这样,现在你会得到一个非常小的exe文件,主要有两个必需的文件夹“模块”和“临时”。启动时间也会增加,它会看起来干净得多。
p5cysglq4#
我认为你应该有一些其他的文件,这是所需的exe文件&因此,当你移动exe文件目录外,它给你错误。其中一个例子可以是exe程序需要 chrome 驱动程序&你已经把它放在该目录内。如果你移动exe程序外,那么你需要把 chrome 驱动程序也在新的位置。我希望这将有助于你检测,否则,我们可以使用exe程序的任何地方,如果它不需要任何其他文件的依赖性。