Pydoop:没有名为 _hdfs_* 的模块
Pydoop: No module named _hdfs_*
我能够毫无错误地构建和安装 Pydoop,因此,例如,我可以执行以下操作:
>>> import pydoop
>>> pydoop.__version__
'0.10.0'
但是,当我尝试导入主要的 Pydoop 模块(例如 pipes
或hdfs
)时,我得到ImportError
:
>>> import pydoop.hdfs
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pydoop/hdfs/__init__.py", line 79, in <module>
from fs import hdfs, default_is_local
File "pydoop/hdfs/fs.py", line 28, in <module>
hdfs_ext = pydoop.import_version_specific_module("_hdfs")
File "pydoop/__init__.py", line 111, in import_version_specific_module
return import_module(complete_mod_name(name))
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named _hdfs_2_0_0_cdh_4_3_0
此外,当我尝试使用pydoop script
时,我得到了这样的提示:
...
ImportError: /usr/local/lib/python2.7/dist-packages/pydoop/_pipes_2_0_0_cdh_4_3_0.so: undefined symbol: BIO_s_mem
BIO_s_mem
是来自libssl
(OpenSSL)的符号,所以我猜Pydoop找不到这个共享库。我确保它可用,以 .so
结尾(而不是.so.1
)并且LD_LIBRARY_PATH
.
那么这个错误的原因可能是什么?我该如何修复它(构建选项?环境变量?
任何帮助,不胜感激。
您使用的是哪个操作系统版本?尝试将LD_PRELOAD设置为libssl的路径,例如:
export LD_PRELOAD=/lib/x86_64-linux-gnu/libssl.so.1.0.0
不确定管道错误,但我遇到了您的_hdfs_2_0_0_cdh_4_3_0问题(我的是不同版本的 hadoop,但我相信问题是相似的)。
setup.py 脚本似乎想在 pydoop 的/usr/local/lib/python2.7/dist-packages 中创建一个 egg 文件,但安装程序要求它只是一个文件夹(其中将包含该 _hdfs_2_0_0_cdh_4_3_0.so 文件)。
解决方案非常简单:只需删除/usr/local/lib/python2.7/dist-packages/pydoop-0.11.1.egg-info 或您的版本的等效版本。
相关文章:
- 尝试导入pybind-opencv模块时出现libgtk错误
- 为什么当我解模块化时,这个C++代代码"效率较低"?
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 内联如何影响模块接口中的成员函数
- C++返回 Numpy 数组的 Python 扩展模块
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 如何从线程中的不同模块调用函数?
- 如何使用 soong 命名空间来有条件地编译模块
- asn1c 不会从 asn.1 模块中提取八位字节字符串的默认值
- CMake - 模块 + 库混淆
- 特征 LLT 模块给出不正确的结果?
- 枚举进程模块在有效句柄上返回无效句柄
- 在 python 模块中导入子模块时PyImport_Import失败
- 将 PCL 链接到 Cython C++ 模块
- 即使直接从官方示例中复制,也找不到未知类型名称QML_ELEMENT和 QML 模块
- 电源功能模块化操作
- 如何告诉本机节点模块所需的dll存储在哪里?
- 如何为模块化应用程序实现C++插件系统
- C++ Python 模块在 Blender 中崩溃,但在 Python 控制台中不会崩溃
- Arduino 模块化编程与全局和设置