我在网上搜了几个小时,结果证明没什么用。
我试图在Django项目上使用PostgreSQL,而我在CentOS 6.5服务器上使用Python3.4。
但是我无法安装psycopg2库以使PostgreSQL正常工作。我发现的几乎所有文章都指出我在CentOS上使用apt-get,但apt-get并不是CentOS 6.5上的标准工具。我没能安装apt-get所以我无法安装psycopg2。我还可以用Python 3.4安装psycopg2吗?
答案 0 :(得分:5)
使用以下步骤:
1. yum install postgresql-server
2. yum install python-devel
3. service postgresql initdb
4. service postgresql start
5. yum install python-psycopg2
答案 1 :(得分:0)
我刚刚在Centos 7.2上处理过这个问题,也许我的结果会是 适用于您的情况。我是大约40 Centos机器的SysAdmin,但是 我对python非常非常新。
更新Centos软件时,我的本能是尝试尽可能多地做 通过像yum这样的系统实用程序,并在yum中尽可能使用标准存储库。我的经验是从其他来源安装和/或从源代码编译和安装可能会导致版本/兼容性问题。当你想使用python3时,你必须小心不要破坏Centos(例如yum)所需要的版本2 python。
但在这种情况下,我无法让psycopg2在两者下正常运行 系统python(python 2.7)和python3.4通过yum。我不得不使用python'pip'安装实用程序,我首先必须在yum之外安装pip本身(pip3,具体而言)。
我有以下yum存储库:
# yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.symnds.com
* epel: mirror.symnds.com
* extras: centos.mirror.nac.net
* updates: centos.mirror.nac.net
repo id repo name status
!base/7/x86_64 CentOS-7 - Base 9,007
!epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 10,681
!extras/7/x86_64 CentOS-7 - Extras 392
!updates/7/x86_64 CentOS-7 - Updates 2,529
repolist: 22,609
#
我安装了以下python3包:
# yum list installed | grep python3
python3-rpm-macros.noarch 3-10.el7 @epel
python34.x86_64 3.4.3-7.el7 @epel
python34-debug.x86_64 3.4.3-7.el7 @epel
python34-devel.x86_64 3.4.3-7.el7 @epel
python34-libs.x86_64 3.4.3-7.el7 @epel
python34-setuptools.noarch 19.2-3.el7 @epel
python34-setuptools_scm.noarch 1.10.1-2.el7 @epel
python34-test.x86_64 3.4.3-7.el7 @epel
python34-tkinter.x86_64 3.4.3-7.el7 @epel
python34-tools.x86_64 3.4.3-7.el7 @epel
#
常规python包的列表要长得多(包括'python-'版本 所有上面的python3包)。它包括三个psycopg2包:
# yum list installed | grep psycopg2
python-psycopg2.x86_64 2.5.1-3.el7 @base
python-psycopg2-debug.x86_64 2.5.1-3.el7 @base
python-psycopg2-doc.x86_64 2.5.1-3.el7 @base
#
没有名为python3-psycopg2的软件包。在这之后,我能够 在python程序中打开psycopg2包,但不在任何python34程序中打开。在那里我总会收到一条错误消息,告诉我没有psycopg2模块。这两个测试程序中的第一个可以工作,但不是第二个:
$ cat tpy1.py
#!/usr/bin/python
import sys
print sys.path
import psycopg2
try:
conn = psycopg2.connect("dbname='dev' user='i2' host='localhost' password='pp'" )
except:
print( "Cannot connect to dev database on localhost" )
conn.close()
$ cat tpy1.py3
#!/usr/bin/python3
import sys
print( sys.path )
import psycopg2
try:
conn = psycopg2.connect("dbname='dev' user='i2' host='localhost' password='pp'" )
except:
print( "Cannot connect to dev database on localhost" )
conn.close()
$
为了使psycopg2可以访问python34,我必须首先安装pip3程序,然后使用它来检索并安装psycopg2 for python34。我在以下网址找到了有用的说明:
http://ask.xmodulo.com/install-python3-centos.html
我以root身份执行了以下操作:
# curl -O https://bootstrap.pypa.io/get-pip.py
# /usr/bin/python3.4 get-pip.py
# /usr/bin/python get-pip.py
这给了我以下版本的'pip':
# ls -l /usr/bin/pip*
-rwxr-xr-x 1 root root 204 Oct 13 15:59 /usr/bin/pip
-rwxr-xr-x 1 root root 204 Oct 13 15:59 /usr/bin/pip2
-rwxr-xr-x 1 root root 204 Oct 13 15:59 /usr/bin/pip2.7
-rwxr-xr-x 1 root root 207 Oct 13 15:33 /usr/bin/pip3
-rwxr-xr-x 1 root root 207 Oct 13 15:33 /usr/bin/pip3.4
#
最好是'pip'的默认版本是系统python的默认版本,python 2.7。在此之后,我终于能够构建并安装pyyc3可访问的psycopg2版本,通过:
# pip3 install psycopg2
现在两个测试程序都有效。