2012-03-13 131 views
19

我在使用Heroku的教程來部署Django應用程序:http://devcenter.heroku.com/articles/django#prerequisites無法在Mac OS X上使用pip在virtualenv中安裝psycopg2 10.7

一切工作正常,直到我到了這個部分:

$ pip install Django psycopg2 

我可以自己安裝Django,但萬阿英,蔣達清是psycopg2。

我不斷收到此錯誤:

ld: library not found for -lpq 

collect2: ld returned 1 exit status 

ld: library not found for -lpq 

collect2: ld returned 1 exit status 

lipo: can't open input file: /var/folders/_4/p6l0y0t51hd4xbq7llbyshmw0000gn/T//cc0L10mI.out (No such file or directory) 

error: command 'gcc-4.2' failed with exit status 1 

我已經在我的機器上安裝的PostgreSQL 9.1。

此外,在輸出中,有一堆線是這樣的:

gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.6.sdk -arch i386 -arch x86_64 -g -O2 -DNDEBUG -g -O3 -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.4.4 (dt dec pq3 ext)" -DPG_VERSION_HEX=0x090004 -DPSYCOPG_EXTENSIONS=1 -DPSYCOPG_NEW_BOOLEAN=1 -DHAVE_PQFREEMEM=1 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I. -I/usr/include -I/usr/include/postgresql/server -c psycopg/typecast.c -o build/temp.macosx-10.6-intel-2.7/psycopg/typecast.o 

我真的不知道這意味着什麼,但我注意到,它有「MacOSX的,10.6」在這麼我想知道這是否會成爲問題?我在10.7。

在此先感謝您的幫助。

回答

4

參考official installation guide psycopg的:

Installing on Mac OS X As a first option, please consider using a packaged version of Psycopg from Fink or MacPorts.

If you still want to build Psycopg from source, take a look at these articles.

+0

好的,我剛剛在virtualenv中使用macports安裝了psycopg2。我猜這與pip安裝在教程中做的是一樣的嗎?如在,我只是取代這一步?我問的原因是因爲該應用在我啓動時仍然失敗。當我輸入Heroku Logs時,這是我得到的一行:'raise improperlyconfigured(「Error加載psycopg2模塊:%s」%e)' – WarAndPiece 2012-03-13 06:08:33

+0

使用MacPorts安裝在virtualenv環境中不起作用。爲了讓你的應用程序工作,你應該看看那些關於從源代碼構建的文章:) – 2012-03-13 06:11:18

+0

好吧,我按照其中一篇文章中的說明操作:http://blog.timc3.com/2010/08/20/psycopg2-os -x-_pqbackendpid /,並且我的psycopg2安裝在我的機器上。但是,我仍然在virtualenv環境中遇到同樣的錯誤。我不太確定在virtualenv中如何從源代碼構建。 – WarAndPiece 2012-03-13 07:04:27

0

關注這一行:LD:庫找不到-lpq

psycopg2,最喜歡的第三方的Postgres庫,希望「pg_config」可在你的路徑。我是猜測這就是你的問題。

在命令提示符處鍵入'pg_config'。我希望你看到它沒有被發現。如果沒有,做了:

須藤查找/ -name pg_config

找到那裏的AT,然後添加位置到您的路徑,運行「pg_config」,看看它成功,最後,再運行點子。

find命令正在從您的根目錄開始搜索;這將需要幾分鐘的時間

+0

嘿,謝謝你的迴應。然而,當我輸入'pg_config'時,發現它並沒有問題。 – WarAndPiece 2012-03-13 05:43:21

24

首先,下載Postgres.app

然後,運行pip install psycopg2前,把二進制在你的路徑:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin 

注意

9.3代表版本,並會隨着時間的推移有所不同。

+0

謝謝,我發現這個回覆最有用,因爲它不需要MacPorts或任何其他工具。 – goetz 2016-02-14 10:07:58

+0

這對我不起作用。 – Konrad 2016-11-05 13:37:24

5

安裝postgresbrew

brew install postgres 

然後,在你的virtualenv安裝psycopg2用這個命令:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install psycopg2 
7

只是想與大家分享。以下代碼適用於我:

env LDFLAGS='-L/usr/local/lib -L/usr/local/opt/openssl/lib 
-L/usr/local/opt/readline/lib' pip install psycopg2==2.5.2 

我正在使用macOS Sierra和psql 9.6.1。

我得到了從pg_config命令的lib路徑。

+0

這是你的第一個答案,它很好。感謝您花時間把它放在這裏。這個解決方案可以將psycopg2安裝在'virtualenv'中,並通過'brew'安裝postgres和dependencies。 – 2017-02-17 14:44:36

0

我嘗試了所有上述解決方案,但唯一解決問題的方法是通過官方App Store更新Xcode CLI實用程序。