NameError:运行使用Pyinstaller转换的.exe时未定义名称'defaultParams'

问题描述

我使用pyinstaller成功转换了main.py脚本。但是,对于同一文件执行.exe文件时,将引发以下错误

MatplotlibDeprecationWarning: Matplotlib installs where the data is not in the mpl-data subdirectory of the package are deprecated since 3.2 and support for them will be removed two minor releases later.
  exec(bytecode,module.__dict__)
Traceback (most recent call last):
  File "main.py",line 8,in <module>
  File "<frozen importlib._bootstrap>",line 983,in _find_and_load
  File "<frozen importlib._bootstrap>",line 967,in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>",line 677,in _load_unlocked
  File "c:\users\XXXX\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py",line 493,in exec_module
    exec(bytecode,module.__dict__)
  File "matplotlib\__init__.py",line 898,in <module>
  File "matplotlib\cbook\__init__.py",line 480,in _get_data_path
  File "matplotlib\__init__.py",line 239,in wrapper
  File "matplotlib\__init__.py",line 534,in get_data_path
  File "matplotlib\__init__.py",line 563,in _get_data_path
NameError: name 'defaultParams' is not defined

解决方法

应该解决的所有办法是将matplotlib降级到以下版本:

pip install matplotlib==3.2.2

显然,最新版本的matplotlib在Windows路径中插入了环境变量。