繁体   English   中英

GDBM 不适用于 Python 3.6 和 anaconda

[英]GDBM doesn't work with Python 3.6 and anaconda

我在 anaconda 环境中使用 Python 3.6。 我安装了 GDBM

conda install gdbm

安装进行得很顺利,但是我无法使用 Python 中的dbm.gnu

ModuleNotFoundError: No module named '_gdbm'

看起来 Python 不包含_gdbm模块,即使实际安装了 GDBM。

这是一个已知问题吗? 我该如何解决?

谢谢!

我也遇到了这个问题。 这可能不是理想的方式,但它确实有效。 我做了以下来解决这个 -

sudo apt-get install python3-gdbm

这将为 python3 安装 gdbm 库,但是因为 apt-get 和 anaconda 是两个独立的包管理器; 这不会解决你的问题。 我们这样做主要是为了获取 .so 共享库,我们将把它放在 anaconda 安装的正确文件夹中。 接下来我们使用 - 找到 .so 文件的位置

dpkg -L python3-gdbm

这给了我们以下输出 -

/.
/usr
/usr/lib
/usr/lib/python3.5
/usr/lib/python3.5/lib-dynload
/usr/lib/python3.5/lib-dynload/_gdbm.cpython-35m-x86_64-linux-gnu.so
/usr/share
/usr/share/doc
/usr/share/doc/python3-gdbm
/usr/share/doc/python3-gdbm/copyright
/usr/share/doc/python3-gdbm/changelog.Debian.gz
/usr/share/doc/python3-gdbm/README.Debian

我们需要的文件在这里 -

/usr/lib/python3.5/lib-dynload/_gdbm.cpython-35m-x86_64-linux-gnu.so

将此文件复制到 anaconda 安装的 lib-dynload 文件夹中; 对我来说这是-

cp /usr/lib/python3.5/lib-dynload/_gdbm.cpython-35m-x86_64-linux-gnu.so /home/username/anaconda3/lib/python3.5/lib-dynload

请注意,这仅在.so复制到的目录位于 python 的sys.path中时才有效。 要找到要复制到的正确目录,假设您在激活的 conda 环境中,请运行:

python -c 'import sys; [print(x) for x in sys.path if "lib-dynload" in x]'

例如,在我的例子中,该目录位于环境路径中,而不是在 anaconda 主库中。 ~/anaconda3/envs/myenvname/lib/python3.7/lib-dynload

现在尝试在 python 中导入模块 -

from _gdbm import *

或者从命令行测试它:

python -m dbm.gnu

这应该已经解决了您的问题。

请注意,我的是 Ubuntu-16.06 操作系统,我的 python 版本是 3.5.2。 .so 文件也可以与 python3.6 一起使用,如果不能,您可以尝试安装 python3.6-gdbm,尽管快速搜索 ubuntu 16.04 没有给我任何结果。

虽然问题是针对 Python3 的,但我是在尝试在 Python2 上安装gdbm时来到这里的,所以我发布了我的答案,因为它可能对其他人有用。 正确的命令是conda install python-gdbm conda install gdbm虽然通过了,但是模块导入不了。 但是,根据此处,这可能不适用于 Python3。

@stason 的回答对我有用,只是对 .so 文件的目标路由进行了一些修改。 我将文件复制到环境中的 lib-dynload 文件夹以使其工作。

而不是: /home/username/anaconda3/lib/python3.X/lib-dynload

我用过:/home/username/anaconda3/envs/**your_env**/lib/python3.X/ /home/username/anaconda3/envs/**your_env**/lib/python3.X/lib-dynload

做同样的事情但指向这个文件夹对我有用。 我希望这可以帮助任何人解决这个问题。

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM