在fedora 27上无法从python3导入psycopg2

时间:2017-12-03 02:34:32

标签: python postgresql fedora psycopg

我刚刚升级到Fedora 27,并且无法让psycopg2正常工作。

我非常感谢任何人都可以提供帮助。

作为一个简单的测试案例,我一直在执行 >>> import psycopg2
在交互式shell中。这适用于Python 2.7,但对于Python 3.x失败。

使用Python 3.4和3.5,我收到消息:

Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'psycopg2'

使用Python 3.6,我看到:

Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/jazcap53/.local/lib/python3.6/site-packages/psycopg2/__init__.py", line 50, in <module> from psycopg2._psycopg import ( # noqa ImportError: /home/jazcap53/.local/lib/python3.6/site-packages/psycopg2/.libs/libresolv-2-c4c53def.5.so: symbol __res_maybe_init, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference

我从DVD-ROM安装了Fedora 27。我发现psycopg2包位于 /usr/lib64/python2.7/site-packages

/home/jazcap53/.local/lib/python3.6/site-packages

我的Python软件包都包含在Fedora中,或者通过dnf安装。它们是:
python3-3.6.3-2.fc27.x86_64 python35-3.5.4-1.fc27.x86_64 python34-3.4.7-1.fc27.x86_64 python2-2.7.14-2.fc27.x86_64

我安装的一些可能相关的套餐是:
python2-devel-2.7.14-2.fc27.x86_64 python3-devel-3.6.3-2.fc27.x86_64 libpqxx-1:5.0.1-2.f27.x86_64 libpqxx-devel-1:5.0.1-2.f27.x86_64 libgcc-7.2.1-2.fc27.x86_64 postgresql-devel-9.6.6-1.fc27.x86_64

P.S。:如果我在错误的地方提出这个问题,请指引我到正确的地方。

修改 我注意到了:

/usr/lib64/python2.7/site-packages/
包含子目录
psycopg2
psycopg2-2.7.3-py2.7.egg-info

/usr/lib64/python3.4/site-packages/
/usr/lib64/python3.5/site-packages/
包含与psycopg2

无关的任何内容

/usr/lib64/python3.6/site-packages/
包含子目录
psycopg2-2.7.3-py3.6.egg-info
但不是psycopg2本身

2 个答案:

答案 0 :(得分:2)

您可能已经注意到,每个版本的Python都有自己的包层次结构。因此,Python 3.6上的安装将无法访问3.4和3.5。

话虽如此,系统的标准库与Python 3.6似乎存在一些问题。一个解决方案可能是安装没有二进制文件,如下所示:

python3.6 -m pip uninstall psycopg2
python3.6 -m pip install --no-binary :all: psycopg2

要在3.4和3.5上安装psycopg2,您可以使用或不使用--no-binary选项运行这些:

python3.4 -m pip install psycopg2
python3.5 -m pip install psycopg2

答案 1 :(得分:1)

如果您具有自动安装/ docker安装功能,则需要确保将以下行添加到requirements.txt中,以确保psycopg2从源代码进行安装,而不是使用二进制文件进行安装,否则部署时将继续遇到上述问题。

psycopg2>=2.7,<2.8 --no-binary psycopg2