如何使PyInstaller的.spec文件真正便携?('pathex'参数的问题绝对路径)

2022-03-24 00:00:00 python pyinstaller

问题描述

PyInstaller.spec文件可以跨其支持的三个平台移植:Windows、Mac OS X和Linux。

我发现只生成一次.spec文件,然后在从它生成可执行文件之前随意修改它要容易得多。

在Internet上的每个示例中(例如,this one),.spec文件总是为分析部分中的pathex参数定义一个绝对路径。这使得生成不可移植,因为绝对路径不仅特定于生成在其上运行的计算机,而且还特定于平台。

这是否必须始终是绝对路径,或者是否有方法使其完全可移植?


解决方案

如果将.spec文件放在其默认位置,则只需从规范中删除pathex,因为'current directory''your-configured-pathex-here'是相同的。

说明

pathexsys.path之前要搜索的路径的可选列表

来源:https://github.com/pyinstaller/pyinstaller/blob/develop/PyInstaller/building/build_main.py#L123

规范文件实际上是可执行的Python代码。PyInstaller通过执行规范文件的内容来构建应用程序。

来源:https://github.com/pyinstaller/pyinstaller/blob/develop/doc/spec-files.rst#using-spec-files

这会得出这样的结论:您应该能够为如下三种环境硬编码每条路径

pathex=["/Users/fatuhoku/Python/myapp", "C:\Python\myapp", "/home/fatuhoku/Python/myapp"],

或调用手工编织的Python函数,该函数仅返回一个列表,该列表包含当前工作目录的单个元素。

如果您运行PyInstaller,它会告诉您类似以下内容:

46 INFO: Extending PYTHONPATH with paths
['current directory', 'your-configured-pathex-here']

相关文章