2012-03-13 41 views
19

Tôi đang theo hướng dẫn của Heroku để triển khai ứng dụng Django: http://devcenter.heroku.com/articles/django#prerequisites.Không thể cài đặt psycopg2 bằng pip trong virtualenv trên Mac OS X 10.7

Tất cả mọi thứ đang làm việc tốt cho đến khi tôi nhận được cho phần này:

$ pip install Django psycopg2 

Tôi có thể cài đặt Django bởi chính nó, nhưng probelm là với psycopg2.

tôi tiếp tục nhận được lỗi này:

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 

Tôi đã cài đặt PostgreSQL 9.1 trên máy tính của tôi.

Ngoài ra, trong đầu ra, có những bó dòng như thế này:

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 

Tôi không thực sự chắc chắn những gì nó có nghĩa là, nhưng tôi nhận thấy rằng nó có "macosx-10,6" trong đó nên Tôi tự hỏi nếu đó có thể là vấn đề? Tôi đang trên 10,7.

Cảm ơn trước sự giúp đỡ của bạn.

Trả lời

4

Tham khảo official installation guide của 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

Ok, tôi vừa cài đặt psycopg2 bằng macports trong virtualenv. Tôi đoán điều này cũng giống như việc cài đặt pip trong hướng dẫn này? Như trong, tôi sẽ chỉ thay thế bước này? Lý do tôi hỏi là vì ứng dụng vẫn không thành công khi tôi khởi chạy ứng dụng. Khi tôi gõ Heroku Logs, đây là một trong những dòng tôi nhận được: 'raise ImproperlyConfigured (" Lỗi tải mô-đun psycopg2:% s "% e)' – WarAndPiece

+0

Sử dụng MacPorts để cài đặt sẽ không hoạt động bên trong môi trường virtualenv. Để ứng dụng của bạn hoạt động, bạn nên xem các bài viết về xây dựng từ nguồn :) –

+0

Ok, tôi đã làm theo hướng dẫn trong một trong các bài viết sau: http://blog.timc3.com/2010/08/20/psycopg2-os -x-_pqbackendpid /, và tôi đã cài đặt psycopg2 trên máy tính của mình. Tuy nhiên, tôi vẫn nhận được cùng một lỗi trong môi trường virtualenv. Tôi không chắc chắn làm thế nào tôi sẽ xây dựng từ nguồn trong một virtualenv. – WarAndPiece

0

Tập trung vào dòng này: ld: thư viện không tìm thấy cho -lpq

psycopg2, giống như hầu hết postgres của bên thứ 3 thư viện, muốn 'pg_config' có sẵn trong con đường của bạn. Tôi đang đoán đó là vấn đề của bạn.

Nhập 'pg_config' tại dấu nhắc lệnh. Tôi hy vọng bạn thấy rằng nó không được tìm thấy. Nếu không, làm một:

sudo find/-name pg_config

để tìm nơi nó ở, và sau đó thêm vị trí đó để đường dẫn của bạn, hãy chạy 'pg_config' và nhìn thấy nó thành công, và cuối cùng, lại chạy pip.

lệnh tìm đang tìm kiếm bắt đầu từ thư mục gốc của bạn; nó sẽ mất một vài phút.

+0

này, cảm ơn bạn đã phản hồi. tuy nhiên, khi tôi gõ 'pg_config', nó được tìm thấy và không có vấn đề gì. – WarAndPiece

0

Các bài sau đây đã giúp tôi có được nó làm việc:

https://stackoverflow.com/a/10326004/1361851

Đã phải cài đặt "các công cụ dòng lệnh" cho Xcode và sau đó tôi đã có thể để cài đặt pip với virtualenv giống như hướng dẫn của heroku.

24

Trước tiên, tải xuống Postgres.app.

Sau đó, trước khi chạy pip install psycopg2, đặt nhị phân trong đường dẫn của bạn:

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

THÔNG BÁO:

9.3 đứng cho phiên bản và sẽ khác nhau theo thời gian.

+0

Cảm ơn, tôi thấy câu trả lời này hữu ích nhất, vì nó không yêu cầu MacPorts hoặc bất kỳ công cụ nào khác. – goetz

+0

Điều này không hiệu quả đối với tôi. – Konrad

5

Install postgres với brew:

brew install postgres 

Sau đó, trong virtualenv bạn cài đặt psycopg2 với lệnh này:

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

Chỉ muốn chia sẻ. Mã sau đã làm việc cho tôi:

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

Tôi đang sử dụng macOS Sierra và psql 9.6.1.

Tôi có đường dẫn lib từ lệnh pg_config.

+0

đây là câu trả lời đầu tiên của bạn cho SO, và nó hoạt động rất tốt. Cảm ơn bạn đã dành thời gian để đặt nó ở đây. Giải pháp này hoạt động để cài đặt psycopg2 trong một 'virtualenv' với postgres và các phụ thuộc được cài đặt với' brew'. –

0

Tôi đã thử tất cả các giải pháp trên nhưng điều duy nhất giải quyết được vấn đề cho tôi đơn giản là cập nhật tiện ích Xcode CLI thông qua App Store chính thức.

Các vấn đề liên quan