使用 pyinstaller 将 .py 转换为 .exe 后出现错误 "No module named 'pyproj._datadir'"

I get error "No module named 'pyproj._datadir'" after I made .py to .exe with pyinstaller

我的代码在 .py 时运行良好 但是当我用 pyinstaller 制作 .exe 文件时,它显示 ModuleNotFoundError.

我做.exe的时候写的

pyinstaller -F MyCode.py

我该如何解决这个问题?

我读过

Issues with pyinstaller and pyproj

我打算尝试在 Pyinstaller 的 "hooks" 文件夹中创建并找到 hook-pyproj.py。但是 hook-pyproj.py 已经有了相同的代码。

之后,我安装了 "basemap" 并尝试从中使用 pyproj。但是它向我显示了同样的错误。

这是我执行.exe文件时显示的错误。 (我用*****覆盖了一些信息)

Traceback (most recent call last):
  File "collect\MyCode.py", line 8, in <module>
  File "c:\users\*****\appdata\local\programs\python\python36-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\mpl_toolkits\basemap\__init__.py", line 41, in <module>
  File "c:\users\*****\appdata\local\programs\python\python36-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\pyproj\__init__.py", line 62, in <module>
  File "c:\users\*****\appdata\local\programs\python\python36-32\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "site-packages\pyproj\crs.py", line 26, in <module>
  File "pyproj\_crs.pyx", line 1, in init pyproj._crs
ModuleNotFoundError: No module named 'pyproj._datadir'
[25936] Failed to execute script MyCode

这是我的代码。

from mpl_toolkits.basemap import pyproj as pyproj

我一开始试过这个。

import pyproj

但我得到了同样的“ModuleNotFoundError: No module named 'pyproj._datadir'”错误。

这有点奇怪,我不完全明白为什么,但我找到了一个快速的脏修复。 您可以添加此导入

from pyproj import _datadir, datadir

到您现有的。

我注意到这个 pyproj import dll error 错误发生在一些 Windows 机器上而不是其他机器上。

原来是对Visual C Runtime 2015+的依赖

https://support.microsoft.com/en-au/help/2977003/the-latest-supported-visual-c-downloads