lỗi cài đặt psycopg2, không tìm thấy thư viện cho -lssl


127

tôi chạy

sudo pip install psycopg2

và tôi nhận được một loạt các đầu ra trông như:

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 thực hiện nó từ nguồn đều cho tôi cùng một lỗi ở cuối (phần không tìm thấy thư viện cho -lssl).


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

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

Bất cứ ai có thể giúp tôi ra?


Câu trả lời:


285

Đối với bất kỳ ai đang tìm kiếm giải pháp cho vấn đề này trên macOS Sierra 10.12 (hoặc sau này, rất có thể): Tôi đã sửa lỗi này bằng cách cài đặt các công cụ dòng lệnh:

xcode-select --install

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

Nếu không, bạn cũng có thể thử liên kết với openssl của brew:

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

với openssl được cài đặt qua brew. Lưu ý rằng brew link openssl --forcenó 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 sử dụng --no-cachetùy chọn pip, vd

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

5
Trên thực tế, xcode-select --installcó thể là đủ, điều này nên sử dụng hệ thống được cung cấp ssl. Tôi sẽ cập nhật nhận xét của tôi ở trên.
sas

13
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.
Andrew Martin

3
Vừa nhận được macOS Sierra 10.12, vừa làm pip install psycopg2và vừa nhận được thông báo lỗi tương tự: 'ld: thư viện không tìm thấy cho -lssl'. xcode-select --installđã khắc phục sự cố.
webtweaker

4
xcode-select --installđã khắc phục sự cố trên Sierra cho tôi, cũng cho các môi trường ảo
Danra

4
bạn có thể cần sử dụng tùy chọn --no-cache của pip. ví dụenv LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip --no-cache install psycopg2
machow

58

Tôi đã cài đặt OpenSSL từ brew ( brew install openssl)

Sau đây làm việc cho tôi:

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

26

Khi chạy brew link openssltô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

Làm theo lời khuyên này đây là piplệnh 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"

9

Điều làm việc cho tôi là gợi ý được cung cấp trong lệnh để liên kết openssl,

$ brew link openssl
Warning: Refusing to link macOS-provided software: openssl
If you need to have openssl first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.zshrc

For compilers to find openssl you may need to set:
  export LDFLAGS="-L/usr/local/opt/openssl/lib"
  export CPPFLAGS="-I/usr/local/opt/openssl/include"

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"

$ pip install psycopg2
Collecting psycopg2
  Using cached https://files.pythonhosted.org/packages/23/7e/93c325482c328619870b6cd09370f6dbe1148283daca65115cd63642e60f/psycopg2-2.8.2.tar.gz
Installing collected packages: psycopg2
  Running setup.py install for psycopg2 ... done
Successfully installed psycopg2-2.8.2

hầu hết mọi người có thể không sử dụng zsh nhưng dù sao, tôi chỉ chạy echo 'export PATH = "/ usr / local / opt / openssl / bin: $ PATH"' >> ~ / .zshrc và điều đó là đủ để khắc phục sự cố mà không cần thay đổi lọ môi trường LDFLAGS và CPPFLAGS
Mark Aquino

9

Trên mojave tôi đã thêm chúng vào .bash_profile

export PATH="/usr/local/opt/openssl/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/curl/lib -L/usr/local/opt/openssl/lib"
export CPPFLAGS="-I/usr/local/opt/curl/include -I/user/local/opt/openssl/include"

sau đó đã có thể cài đặt psycopg 2.8.3 trong một ảo python 3.7.4.

Điều này sau khi cài đặt lại xcode và các công cụ dòng lệnh.

Tất cả các câu trả lời trên đã giúp!


9

Với MacOS Catalina 10.15.4, đây là lệnh duy nhất phù hợp với tôi:

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

Làm việc trên Mojave là tốt. Cảm ơn bạn!
sb9

Bạn đã tiết kiệm thời gian của tôi.
sinwoobang

4

Đây là vấn đề của phiên bản macO mới, nơi pip không thể cài đặt cryptography. Điều đã khắc phục vấn đề của tôi là cung cấp env cho lệnh install:

brew install openssl
env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" <YOUR COMMAND HERE>

Bạn có thể thay thế <YOUR COMMAND HERE>bằng pip install cryptography, hoặc pip install <SOMETHING THAT REQUIRES cryptography>ví dụ.

Tín dụng cho bài viết này: Sửa lỗi macOS Sierra nghiêm trọng: không tìm thấy tệp 'openssl / opensslv.h' hoặc 'openssl / aes.h'


4

Sử dụng Fish, hai lệnh sau đã giải quyết vấn đề này cho tôi sau khi cài đặt OpenSSL với Homebrew.

set -gx LDFLAGS "-L/usr/local/opt/openssl/lib"
set -gx CPPFLAGS "-I/usr/local/opt/openssl/include"

Sử dụng brew info opensslđể có được thông tin cập nhật.


1

Gần đây có vấn đề ở High Sierra, khi vừa cài đặt Python 3.7 trong virtualenv.

Giải pháp là sử dụng phiên bản mới hơn của psycopg2. Phiên bản 2.7.7 hoạt động, trong đó 2.7.1 không hoạt động.


0

Thay vì cài đặt psycopg2, cài đặt psycopg2-binary, từ cùng các tác giả:

pip install psycopg2-binary

Đây là những gì tài liệu nói về gói PyPI này:

Bạn có thể [...] có được gói độc lập, không yêu cầu trình biên dịch hoặc thư viện bên ngoài, bằng cách cài đặt gói nhị phân psycopg2 từ PyPI:

$ pip install psycopg2-binary

Gói nhị phân là một lựa chọn thực tế để phát triển và thử nghiệm, nhưng trong sản xuất, nên sử dụng gói được xây dựng từ các nguồn.


0

Tôi đã có vấn đề này trên Mojave. Mojave không tạo thư mục / usr / include, mà psycopg2 cần cài đặt. Điều này không rõ ràng. Tôi đã tìm thấy giải pháp ở đây: Cách cập nhật Xcode từ dòng lệnh , tham chiếu: https://forums.developer.apple.com/thread/104296


Một vài lưu ý nữa: Tôi đã cài đặt Xcode và các công cụ dòng lệnh. Lệnh xcode-select --install cho thấy tôi đã cài đặt chúng, cũng như xcode-select -p và echo $? trả về 0, cũng cho biết chúng đã được cài đặt. Tôi đang sử dụng pyenv và pyenv-virtualenv, vì vậy tôi đã cài đặt psycopg2 vào một môi trường ảo.
ProfX

0

Tôi đã có lỗi tương tự và đã khắc phục nó sau khi tôi cài đặt cython


0

Chạy PyCharm từ môi trường conda, giải quyết vấn đề của tôi bằng cách sử dụng:

--> conda install psycopg2
The following packages will be UPDATED: ...

...
Proceed ([y]/n)? 
--> y
--> pip3 install psycopg2
Installing collected packages: psycopg2
Running setup.py install for psycopg2 ... done
Successfully installed psycopg2-2.8.4

'''


0

Tôi đã cài đặt OpenSSL bằng MacPorts do đó các thư mục không giống như của Brew.

sudo port install openssl

Tôi tìm thấy các thư mục bằng cách làm:

port contents openssl | grep lib
port contents openssl | grep include

Sau đó, tôi xuất các biến:

export LDFLAGS="-L/opt/local/lib"
export CPPFLAGS="-I/opt/local/include/openssl"

Bạn cũng có thể phải:

xcode-select --install


-4

Tôi đã cố gắng khắc phục bằng cách sử dụng:

brew unlink openssl && brew link openssl --force

Tôi không chắc điều này khác với việc gỡ cài đặt / nâng cấp bia mà tôi đã làm trên OpenSSL như thế nào trong những lần thử trước tôi đã thực hiện. Giả định của tôi là các hoạt động này đã khiến một số thư viện chia sẻ "bị lỗi" ngăn không cho hoạt động này. Lưu ý rằng điều này cũng đã khắc phục các sự cố khi cài đặt mô-đun mật mã python.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.