强制 PyInstaller 包含所有内置模块



我们正在构建一个动态导入其他Python并运行它的应用程序。 我们事先不知道其他 Python 文件可能需要哪些模块,但这些其他 Python 文件应该能够依赖于所有内置模块都可用。

由于 PyInstaller 的分析工作方式,如果我们的主应用程序不使用它们,我们将丢失许多内置模块。

有没有办法强制 PyInstaller 将所有内容包含在 Lib(而不是站点包(中?

注意:我们已考虑建立隐藏导入列表,但是:

  1. 这需要以编程方式完成,这样如果我们更改 Python 版本(从而更改内置模块列表(,我们就不需要手动重建它。
  2. 这只是"感觉"像是围绕分析步骤而不是删除它,我有点担心可能会产生什么副作用。

有第三方模块stdlib_list包含 lib 中的所有模块。它还包括内置模块。从 PyInstaller 的钩子中使用它来获取应用程序的主/任何模块:

import stdlib_list
hiddenimports = list(stdlib_list.stdlib_list())

我的研究表明,没有内置的方法可以列出污染环境中的标准模块。我想这就是 PyInstaller 没有一个简单的选项来包含标准库的原因。

相关内容

  • 没有找到相关文章

最新更新