如何导入 PyInstaller 规范文件中被冻结的包?

How to import the package being frozen in the PyInstaller spec file?

我有这个目录结构:

mypackage/
|___ installer.spec
|___ package/
    |___ __init__.py

package.__init__.py 包含一些我想在我的 installer.spec 文件中使用的变量。 所以这个文件包含 import package 行。 但是,mypackage/ 中的 运行 pyinstaller installer.spec 失败并显示 ModuleNotFoundError.

如何在使用 PyInstaller 冻结时从要冻结的包中检索变量?

在规范文件中,更改

import package

foobar = package.foobar

import importlib.util

spec = importlib.util.spec_from_file_location(
    "package", "/full/path/to/package/__init__.py"
)
package = importlib.util.module_from_spec(spec)
spec.loader.exec_module(package)
foobar = package.foobar

参考:How to import a module given the full path?