2014-10-09 136 views
48

tôi chạy "sudo pip cài đặt psycopg2" và tôi nhận được một loạt các đầu ra trông giống nhưlỗi khi cài đặt psycopg2, thư viện không tìm thấy cho -lssl

cc -DNDEBUG -g -fwrapv -Os ..... 
..... 
cc -DNDEBUG -g -fwrapv -Os ..... 
..... 

Và cuối cùng nó nói:

ld: library not found for -lssl 

clang: error: linker command failed with exit code 1 (use -v to see invocation) 

error: command 'cc' failed with exit status 1 

---------------------------------------- 
Cleaning up... 
Command /usr/bin/python -c "import setuptools, tokenize;__file__='/private/var/folders/bz/pvj1g9xj16d10pjjgbrfl3fw0000gn/T/pip_build_root/psycopg2/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/bz/pvj1g9xj16d10pjjgbrfl3fw0000gn/T/pip-uE3thn-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /private/var/folders/bz/pvj1g9xj16d10pjjgbrfl3fw0000gn/T/pip_build_root/psycopg2 
Storing debug log for failure in /Users/Tyler/Library/Logs/pip.log 

Chạy easy_install hoặc làm nó từ nguồn cả cho tôi những lỗi tương tự ở cuối (phần về thư viện không tìm thấy cho -ls sl).


Chạy brew cài đặt (hoặc nâng cấp) openssl mang lại dưới đây

$ brew upgrade openssl 
Error: openssl-1.0.1h already installed 

bất cứ ai có thể giúp tôi không?

Trả lời

-2

tôi đã quản lý để sửa chữa nó bằng cách sử dụng:

brew unlink openssl && brew link openssl --force 

Tôi không chắc chắn cách này khác với uninstall brew/nâng cấp mà tôi đã làm trên OpenSSL trong nỗ lực trước tôi đã thực hiện. Giả định của tôi là các hoạt động này đã để lại một số thư viện chia sẻ "bị lỗi" đang ngăn việc này hoạt động. Lưu ý rằng điều này cũng cố định các vấn đề với cài đặt mô-đun mã hóa python.

+4

tôi nhận được lỗi này: 'Từ chối liên kết : openssl' – Flimm

150

Đối với bất cứ ai tìm kiếm một giải pháp cho điều này trên hệ điều hành MacOS Sierra 10.12: Tôi cố định này bằng cách cài đặt các công cụ dòng lệnh:

xcode-select --install 

Sau đó, pip install psycopg2 nên làm việc.

Nếu không, bạn cũng có thể cố gắng liên kết chống lại openssl brew của:

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip install psycopg2 

với openssl cài đặt qua brew. Lưu ý rằng brew link openssl --force không hoạt động nữa:

$ brew link openssl --force                     17.5s 
Warning: Refusing to link: openssl 
Linking keg-only openssl means you may end up linking against the insecure, 
deprecated system OpenSSL while using the headers from Homebrew's openssl. 
Instead, pass the full include/library paths to your compiler e.g.: 
    -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib 

Như @macho chỉ ra bên dưới nếu điều này vẫn không hoạt động, bạn có thể cần phải sử dụng --no-cache tùy chọn pip, ví dụ

env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip --no-cache install psycopg2 
+0

Tôi đã đấu tranh với điều này tắt và trong một thời gian dài! Cảm ơn bạn rất nhiều!!! –

+5

Trên thực tế, 'xcode-select --install' có thể là đủ, điều này nên sử dụng hệ thống cung cấp' ssl'. Tôi sẽ cập nhật bình luận của mình ở trên. – sas

+6

cài đặt xcode-select là đủ tốt cho hệ thống python. Nhưng nó không hoạt động cho môi trường ảo. –

5

Khi chạy brew link openssl tôi nhận được thông báo sau:

$ brew link openssl 
Warning: Refusing to link: openssl 
Linking keg-only openssl means you may end up linking against the insecure, 
deprecated system OpenSSL while using the headers from Homebrew's openssl. 
Instead, pass the full include/library paths to your compiler e.g.: 
    -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib 

Tiếp theo lời khuyên này đây là lệnh pip bạn cần sử dụng:

$ pip install -r requirements.txt --global-option=build_ext --global-option="-I/usr/local/opt/openssl/include" --global-option="-L/usr/local/opt/openssl/lib" 
Các vấn đề liên quan