pycharm的环境直接运行一切正常
但是用pycharm的pyinstaller打包生成exe文件时,运行exe显示如下错误
Traceback (most recent call last):
File "main.py", line 5, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
File "MicapsReader.py", line 4, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in load_unlocked
File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
File "metpy\calc_init.py", line 7, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
File "metpy\calc\cross_sections.py", line 14, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
File "metpy\calc\tools.py", line 16, in
File "", line 1007, in _find_and_load
File "", line 986, in _find_and_load_unlocked
File "", line 680, in _load_unlocked
File "PyInstaller\loader\pyimod03_importers.py", line 546, in exec_module
File "metpy\cbook.py", line 14, in
File "pooch\core.py", line 396, in create
File "pooch\utils.py", line 142, in check_version
File "packaging\version.py", line 266, in init
packaging.version.InvalidVersion: Invalid version: 'vUnknown'
经检查发现较大可能是metpy的模块pyinstaller无法将其打包成pyd文件的原因,因为生成的main.exe文件目录下没有metpy这个目录(cartopy就有目录,里面也有pyd文件),如图
但无论我怎么使用pyinstaller的-p -hiddenimports参数,以及使用main.spec里面的hiddenimports明确指定导入metpy模块,包括模块名和绝对路径(绝对路径提示hiddenimports not found,模块名如‘metpy’,‘metpy.plots’等终端无提示但是也不生成metpy目录),但是pyinstaller打包后就是没有metpy目录,请教各位该如何解决?感谢!
metpy1.0.1 pooch1.5.2 packaging21.0都是最新的,且在 packaging的version.py设断点查到metpy版本正确
首先,pyinstaller跟pycharm没有什么关系
其次,pyinstaller有两种打包模式,一种是打包文件,一种是打包文件夹
如果你工程本身文件夹套文件夹的,或者文件夹里还有配置文件,那么最好还是选择打包文件夹,而不要只打包一个exe文件
如果某些dll打包时无法识别,那么你找到它的位置,直接复制到跟主文件一个目录下,打包的时候就能把类库文件一起打包进exe里
否则需要你写好相应的环境变量,以便exe执行时能够正确的找到dll所在文件夹
毕竟pyinstaller跟pycharm没关系,你在pycharm里配置好了dll的路径,pyinstaller可不知道啊。