[英]problems building python distribion containing netcdf4
我正在尝试使用pyinstaller创建python发行版,但没有成功。 使用的命令行是:
pyinstaller ^
--paths="C:\Python27\Lib\site-packages" ^
--hidden-import="C:\Python27\Lib\site-packages\netCDF4_utils.py" ^
"C:\Users\...\Code\python\NCTSutil\NCTSU.spec"
使用的规格文件为:
# -*- mode: python -*-
a = Analysis(['C:\\Users\\...\\Code\\python\\NCTSutil\\NCTSU.py'],
pathex=['C:\\Users\\...\\Code\\python\\NCTSutil'],
hiddenimports=[],
hookspath=['C:\\Users\\...\\Code\\python\\NCTSutil\\hooks'],
runtime_hooks=None)
pyz = PYZ(a.pure)
exe = EXE(pyz,
a.scripts,
exclude_binaries=True,
name='NCTSU.exe',
debug=False,
strip=None,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=None,
upx=True,
name='NCTSU')
最初,我仅使用为pubsub模块指定的钩子路径(我从网站获得)来构建可安装程序。 当我尝试运行可执行文件时,收到错误消息
"Import error: No module named netCDF4_utils" when executable is run
我认为是由安装程序无法找到某些NetCDF4依赖项引起的。 (原始的包导入是“ import netcdf4”)。
为了解决这个问题,我尝试在运行pyinstaller时在SPEC文件和命令行中指定隐藏的netCDF4_utils文件。 规格文件和命令行的变体以及相关的错误如下:
1)隐藏的路径/文件在SPEC文件中指定,并且was路径也在命令行中给出。 运行可执行文件时,这会导致错误“导入错误:没有名为netCDF4_utils的模块”
2)隐藏的路径/文件是在命令行上指定的,但未在spec文件中指定。 这导致“编译”错误“ AttributeError:'NoneType'对象没有属性'split'”
3)在命令行上指定了隐藏文件(但没有路径),并且在命令行上单独指定了路径(在spec文件中未提供隐藏文件)。 运行可执行文件时,将导致错误“导入错误:没有名为netCDF4_utils的模块”。
4)在命令行(而不是在spec文件中)指定了隐藏文件(没有路径),这导致在运行可执行文件时出现错误“导入错误:没有名为netCDF4_utils的模块”
5)在SPEC文件中指定了隐藏文件,并且在命令行中提供了该文件的路径。 这给出了一个编译错误:“ NameError:未定义名称'netCDF_util'”
我没有尝试写一个钩子文件,因为我不知道如何写它们。
如果有人对如何使pyinstaller查找依赖文件有任何详细建议,那么可以将它们包含在发行版中,将不胜感激。
这是在使用python 2.7和pyinstaller 2.1的win7机器上完成的
尝试:
删除当前的pyinstaller
: pip uninstall pyinstaller
从python3
分支克隆并安装pyinstaller
( https://github.com/pyinstaller/pyinstaller )
将.spec
文件从hiddenimports = []
修改为hiddenimports = ['netCDF4.utils', 'netcdftime']
这对我有用。
hook-netCDF4.py
该文件通常位于python文件夹中(根据您的pyinstaller版本):
C:\\ Python27 \\ LIB \\站点包\\ PyInstaller-3.4.dev0 + 3c87c135a-py2.7.egg \\ PyInstaller \\挂钩
你必须打开一个文本编辑器文件,修改“ netCDF4.utils
在”“ netCDF4_utils
”
文件内的正确行应为:
hiddenimports = ['netCDF4_utils', 'netcdftime']
这个解决方案对我来说解决了同样的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.