下面的问题没有出现在安装plyvel的过程中,但依旧分析一下,以后方便找到。
这个好像是在安装py-leveldb时遇到的问题:
Python ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。
Python ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。
github/mhammond/pywin32
安装pywin32 错误提示3.6找不到注册表信息python version 3.6 required,which was not fount in the registry
依照要求完成了更新,但是仍然不行。
OSError: [WinError 193] %1 不是有效的 Win32 应用程序
可能level.dll不是你python对应版本(当时是32位)的,我dll是64位的?我想应该就是这个问题。修改成对应版本的包即可。
如果你使用leveldb-py,这是一个leveldb的portable版的py库,可能会遇到下面问题(读取ethdb的时候,安装是没问题的,但是如果和我一样要求使用到ethereum上,那么还要去装plyvel(虽然最后还是没什么用就是了(苦笑))):
OpenError: Corruption: many missing files; e.g.: XX.sst
这是因为leveldb-py封装的leveldb的库太老了,因为历史原因leveldb的数据文件由.sst
变为了.ldb
.这个问题正如下面链接所说,其实将.ldb
改为.sst
即可。
LevelDB Corruption in npmd
但是这样对新的leveldb库来说,只能读取,不能写入。如果考虑使用leveldb-py,你需要考虑上面那些问题。
下面讲一讲plyvel的坑。
如果你使用pip install plyvel
,恐怕会遇到下面问题(时间太久了,记不太清):
Failed building wheel for plyvel
这个意思是,pip能找到所有的版本都与你的系统不适应,所以你就无法安装了。如果你能找到一个plyvel.whl
当然更好,但是plyvel的作者并没有提供windows版本的whl,所以不行呢…只能另寻他路了。
考虑将源包下载下来,自己使用下面的命令:
python setup.py install
会出现下面的问题:
LINK : fatal error LNK1181: 无法打开输入文件"leveldb.lib"
这个问题很显然,就是python.exe
找不到leveldb.lib
,自己编译一个即可(这个即可蕴含巨大工作量…)
省略一万字…(走了弯路)
这里有几个可能的获得leveldb.lib
的方法:
1.其他人编译好的lib文件,比如