2014-12-07 100 views
1

我在網上搜索了幾個小時,結果什麼都沒有起作用。任何人都知道如何在CentOS 6.5上安裝python 3.4的psycopg2?

我想在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

可能的重複[如何在Python上使用「pip」安裝psycopg2?](http://stackoverflow.com/questions/5420789/how-to-install-psycopg2-with-pip-on-python) – newguy 2014-12-07 17:36:57

+1

After我在http://stackoverflow.com/questions/5420789/how-to-install-psycopg2-with-pip-on-python?rq=1閱讀了一些較少投票答案我找到了我的問題的答案。在導出$ PATH – newguy 2014-12-07 17:38:51

回答

5

使用以下步驟:

1. yum install postgresql-server 
2. yum install python-devel 
3. service postgresql initdb 
4. service postgresql start 
5. yum install python-psycopg2 
0

我只是處理這個問題在CentOS 7.2,也許我的結果將適用 您的情況。我是大約40臺Centos機器的SysAdmin,但是我對python非常非常新。

在更新Centos軟件時,我的直覺是儘量通過像yum這樣的系統實用程序儘可能地做到 ,並且在yum內儘可能多地使用標準存儲庫。我的經驗是,從其他來源進行安裝和/或從源代碼進行編譯和安裝可能會導致版本/兼容性問題。而當你想使用python3時,你必須小心不要打破CentOS(例如yum)要求的版本二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() 
$ 

要對python34 psycopg2訪問,我必須首先安裝PIP3程序,然後用它來檢索和python34安裝psycopg2。我發現有用的指示在:

http://ask.xmodulo.com/install-python3-centos.html

我做了以下的根:

# curl -O https://bootstrap.pypa.io/get-pip.py 
# /usr/bin/python3.4 get-pip.py 
# /usr/bin/python get-pip.py 

這給了我 '點子' 的以下版本:

# 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的默認版本。這之後,我終於能夠建立並安裝一個版本python3訪問psycopg2的,通過:

# pip3 install psycopg2 

現在,這兩個測試程序工作。

+0

之前,我必須在$ PATH中添加'/ usr/pgsql-9.3/bin'。反思時,如果默認的'pip'是python3版本,可能會更好。我認爲Centos可以通過yum來維護它使用的python(python2)。我的(只是稍微知道)的意思是,大多數活動python開發使用python的第三版,而使用python工具(如pip,virtualenv等)的人更可能使用python3。 同樣,對於python來說,這是一個非常新的東西,我不知道哪個版本對應用程序開發人員來說是最好的默認值;意見歡迎。 – 2016-10-18 15:05:41