使用 pysinstaller 构建 python 项目后找不到模块

Posted

技术标签:

【中文标题】使用 pysinstaller 构建 python 项目后找不到模块【英文标题】:Module not found after building python project by using pysinstaller 【发布时间】:2021-09-20 14:59:18 【问题描述】:

我最近完成了一个我已经从事了一段时间的项目。我应该在课堂上运行在 linux 上的智能板上展示我的工作。考虑到我无法下载它的模块,因为我没有 sudo 权限,也没有互联网。所以为了解决这个问题,我决定使用 pyinstaller 构建它。在我的设备上似乎一切正常,但是当我再次检查虚拟框时,会弹出此错误。

Traceback (most recent call last):
  File "main.py", line 4, in <module>
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "PyInstaller/loader/pyimod03_importers.py", line 540, in exec_module
  File "matplotlib/__init__.py", line 923, in <module>
  File "matplotlib/__init__.py", line 608, in matplotlib_fname
RuntimeError: Could not find matplotlibrc file; your Matplotlib install is broken
[8025] Failed to execute script main

那么我该如何构建它,使其适用于所有设备而无需安装任何模块

【问题讨论】:

大概matplotlib/__init__.py", line 608 正在尝试打开一个未捆绑到您的 exe 中的文件。尝试检查该代码以找出它在哪里寻找?假设你有 matplotlib 的源代码,你可以临时添加一些调试打印输出,以明确它假设哪个文件和哪个文件夹?然后看看您是否可以将此文件显式添加到您的 pyinstaller 构建中,请参阅文档pyinstaller.readthedocs.io/en/stable/… 或者,只要稍微搜索一下 pyinstaller error matplotlibrc 就会找到这个***.com/questions/62701684/…。请注意,您当然可以按照相同的思路进行更多搜索。 如果您使用该答案,请不要忘记投票。 【参考方案1】:

matplotlib 需要在 4 个特定位置之一中找到一个配置文件名 matplotlibrc,第一个是 courant 目录(请参阅https://matplotlib.org/tutorials/introductory/customizing.html#the-matplotlibrc-file)根据需要准备一个此文件,它可以通过添加 - 嵌入到 exe 中-添加数据=matplotlibrc;。到构建命令(对于非 Windows 系统,将 ; 替换为 :)

【讨论】:

以上是关于使用 pysinstaller 构建 python 项目后找不到模块的主要内容,如果未能解决你的问题,请参考以下文章

Teamcity 使用 python 向项目中的所有构建添加新的构建代理

python 如何使用Python动态构建JSON对象?

如何在构建之前使CMake运行python脚本,以便为我的项目生成文件以在构建中使用?

如何使用 autotools 与库同时构建 Python 接口

使用 boost::python 手动构建共享对象

使用 Python 构建排列