使用程序本身更新使用 Pyinstaller 创建的程序依赖项
Updating program's dependencies created with Pyinstaller, with the program itself
我制作了一个依赖于模块 pytube 的 .exe 文件,并想 运行 它在我朋友的电脑上,他们没有 python 安装。但是,pytube 每隔一段时间就会更新一次,我希望我提供给我朋友的 .exe 保持最新状态。
用Pyinstaller输出.exe后,是否可以用创建的.exe更新.exe的依赖关系?
我创建了一个脚本,每次 .exe 为 运行 时,该脚本将从 Github 获取更新的模块文件并将它们保存到给定目录中。我想在 Pyinstaller 创建后使用此脚本更新我的 .exe 的依赖项。
我的第一个想法是我会在 Pyinstaller 的输出中找到依赖项的存储位置,然后让我的程序用新下载的模块文件覆盖它。然而:
A) 我不知道在 Pyinstaller 输出中哪里可以找到这些文件
B) 我希望这些模块相关文件在之后会采用不同的格式
Pyinstaller 已经创建了 .exe 等。比从下载它们时
Github.
有人对如何克服这个问题有任何建议吗?
谢谢。
PyInstaller
创建扩展名为 .exe 的自解压 zip 文件。当你 运行 .exe 然后它创建临时文件夹 _MEI_xxxxxx
(其中 xxxxxx
是一个随机数),解压模块和代码并 运行s 它。但是当你关闭程序时,它会删除这个文件夹。因此,最好将模块下载到保存 .exe 文件的文件夹,并在导入前将此文件夹添加到 sys.path
。
您可以在 How the One-File Program Works
中阅读更多内容
可能您可以获得.exe 使用的文件夹。在主脚本中使用类似这样的东西:
HOME = os.path.abspath(os.path.dirname(sys.argv[0]))
或使用__file__
HOME = os.path.abspath(os.path.dirname(__file__))
PyInstaller 将原始模块保存在 .zip 中——它们没有不同的格式。脚本仍然可以使用以后添加的模块——它们不必重新格式化。它们必须位于 sys.path
中的文件夹中,或者您必须在导入前将此文件夹 append()
到 sys.path
。
编辑: Whosebug 上有一个问题 Determining application path in a Python EXE generated by pyInstaller,它解释了如何查找脚本使用的文件夹。
我制作了一个依赖于模块 pytube 的 .exe 文件,并想 运行 它在我朋友的电脑上,他们没有 python 安装。但是,pytube 每隔一段时间就会更新一次,我希望我提供给我朋友的 .exe 保持最新状态。
用Pyinstaller输出.exe后,是否可以用创建的.exe更新.exe的依赖关系?
我创建了一个脚本,每次 .exe 为 运行 时,该脚本将从 Github 获取更新的模块文件并将它们保存到给定目录中。我想在 Pyinstaller 创建后使用此脚本更新我的 .exe 的依赖项。
我的第一个想法是我会在 Pyinstaller 的输出中找到依赖项的存储位置,然后让我的程序用新下载的模块文件覆盖它。然而:
A) 我不知道在 Pyinstaller 输出中哪里可以找到这些文件
B) 我希望这些模块相关文件在之后会采用不同的格式 Pyinstaller 已经创建了 .exe 等。比从下载它们时 Github.
有人对如何克服这个问题有任何建议吗?
谢谢。
PyInstaller
创建扩展名为 .exe 的自解压 zip 文件。当你 运行 .exe 然后它创建临时文件夹 _MEI_xxxxxx
(其中 xxxxxx
是一个随机数),解压模块和代码并 运行s 它。但是当你关闭程序时,它会删除这个文件夹。因此,最好将模块下载到保存 .exe 文件的文件夹,并在导入前将此文件夹添加到 sys.path
。
您可以在 How the One-File Program Works
中阅读更多内容可能您可以获得.exe 使用的文件夹。在主脚本中使用类似这样的东西:
HOME = os.path.abspath(os.path.dirname(sys.argv[0]))
或使用__file__
HOME = os.path.abspath(os.path.dirname(__file__))
PyInstaller 将原始模块保存在 .zip 中——它们没有不同的格式。脚本仍然可以使用以后添加的模块——它们不必重新格式化。它们必须位于 sys.path
中的文件夹中,或者您必须在导入前将此文件夹 append()
到 sys.path
。
编辑: Whosebug 上有一个问题 Determining application path in a Python EXE generated by pyInstaller,它解释了如何查找脚本使用的文件夹。