kesalahan menginstal psycopg2, pustaka tidak ditemukan untuk -lssl


127

saya berlari

sudo pip install psycopg2

dan saya mendapatkan banyak keluaran yang terlihat seperti:

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

Dan pada akhirnya tertulis:

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

Menjalankan easy_install atau melakukannya dari sumber keduanya memberi saya kesalahan yang sama di bagian akhir (bagian tentang perpustakaan tidak ditemukan untuk -lssl).


Menjalankan brew install (atau mengupgrade) openssl menghasilkan hal di bawah ini

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

Adakah yang bisa membantu saya?


Jawaban:


285

Untuk siapa pun yang mencari solusi untuk ini di macOS Sierra 10.12 (atau lebih baru, kemungkinan besar): Saya memperbaikinya dengan menginstal alat baris perintah:

xcode-select --install

Setelah itu, pip install psycopg2harus bekerja.

Jika tidak, Anda juga dapat mencoba menautkan ke brew's openssl:

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

dengan openssl diinstal melalui brew. Perhatikan bahwa brew link openssl --forcetidak berfungsi lagi:

$ 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

Seperti yang ditunjukkan @macho di bawah jika ini masih tidak berhasil, Anda mungkin perlu menggunakan --no-cacheopsi pip, mis

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

5
Sebenarnya xcode-select --installmungkin cukup, ini harus menggunakan sistem yang sudah disediakan ssl. Saya akan memperbarui komentar saya di atas.
sas

13
xcode-select install cukup baik untuk sistem python. Tapi itu tidak berfungsi untuk lingkungan virtual.
Andrew Martin

3
Baru saja mendapatkan macOS Sierra 10.12, baru saja melakukannya pip install psycopg2dan baru saja menerima pesan kesalahan yang sama: 'ld: library not found for -lssl'. xcode-select --installmemperbaiki masalah.
webtweaker

4
xcode-select --installmemperbaiki masalah di Sierra untuk saya, juga untuk lingkungan virtual
Danra

5
Anda mungkin perlu menggunakan opsi --no-cache dari pip. misalnyaenv LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip --no-cache install psycopg2
machow

59

Saya telah menginstal OpenSSL dari brew ( brew install openssl)

Yang berikut berhasil untuk saya:

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

26

Saat menjalankan brew link opensslsaya mendapatkan pesan berikut:

$ 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

Mengikuti saran ini, inilah pipperintah yang perlu Anda gunakan:

$ 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"

10

Dengan MacOS Catalina 10.15.4, berikut ini satu-satunya perintah yang berfungsi untuk saya:

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

Bekerja di Mojave juga. Terima kasih!
sb9

Anda menghemat waktu saya.
sinwoobang

9

Apa yang berhasil bagi saya adalah petunjuk yang diberikan dalam perintah untuk menautkan 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

kebanyakan orang mungkin tidak menggunakan zsh tetapi bagaimanapun, saya hanya menjalankan echo 'export PATH = "/ usr / local / opt / openssl / bin: $ PATH"' >> ~ / .zshrc dan itu sudah cukup untuk memperbaiki masalah tanpa mengubah lingkungan vars LDFLAGS dan CPPFLAGS
Mark Aquino

9

Di mojave saya menambahkan ini ke .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"

kemudian dapat menginstal psycopg 2.8.3 di virtualenv python 3.7.4.

Ini setelah menginstal ulang xcode dan alat baris perintah.

Semua jawaban di atas membantu!


4

Ini adalah masalah versi macO baru, di mana pip tidak dapat diinstal cryptography. Apa yang memperbaiki masalah saya adalah memberikan env ke perintah install:

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

Anda bisa mengganti <YOUR COMMAND HERE>dengan pip install cryptography, atau pip install <SOMETHING THAT REQUIRES cryptography>misalnya.

Kredit untuk artikel ini: Memperbaiki kesalahan fatal macOS Sierra: file 'openssl / opensslv.h' atau 'openssl / aes.h' tidak ditemukan


4

Menggunakan Fish, dua perintah berikut memecahkan masalah ini untuk saya setelah menginstal OpenSSL dengan Homebrew.

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

Gunakan brew info openssluntuk mendapatkan info terbaru.


1

Baru-baru ini mengalami masalah ini di High Sierra, baru saja menginstal Python 3.7 di virtualenv.

Solusinya adalah menggunakan versi psycopg2 yang lebih baru. Versi 2.7.7 berfungsi, sedangkan 2.7.1 tidak.


0

Daripada menginstal psycopg2, instal psycopg2-binary, dari penulis yang sama:

pip install psycopg2-binary

Inilah yang dikatakan dokumentasi tentang paket PyPI ini:

Anda dapat [...] mendapatkan paket yang berdiri sendiri, tidak memerlukan kompiler atau pustaka eksternal, dengan menginstal paket psycopg2-binary dari PyPI:

$ pip install psycopg2-binary

Paket biner adalah pilihan praktis untuk pengembangan dan pengujian, tetapi dalam produksi disarankan untuk menggunakan paket yang dibangun dari sumber.


0

Saya mengalami masalah ini di Mojave. Mojave tidak membuat direktori / usr / include, yang perlu diinstal oleh psycopg2. Ini tidak jelas. Saya menemukan solusinya di sini: Cara memperbarui Xcode dari baris perintah , yang mereferensikan: https://forums.developer.apple.com/thread/104296


Beberapa catatan lebih lanjut: Saya telah menginstal Xcode dan alat baris perintah. Perintah xcode-select --install menunjukkan bahwa saya sudah menginstalnya, begitu pula xcode-select -p, dan echo $? mengembalikan 0, yang juga menunjukkan bahwa mereka dipasang. Saya menggunakan pyenv dan pyenv-virtualenv, jadi saya menginstal psycopg2 ke dalam lingkungan virtual.
ProfX

0

Saya mengalami kesalahan yang sama dan berhasil menyelesaikannya setelah saya memasang pip cython


0

Menjalankan PyCharm dari lingkungan conda, menyelesaikan masalah saya menggunakan:

--> 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

Saya menginstal OpenSSL menggunakan MacPorts sehingga direktori tidak seperti yang ada di Brew.

sudo port install openssl

Saya menemukan direktori dengan melakukan:

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

Kemudian saya mengekspor variabel:

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

Anda mungkin juga harus:

xcode-select --install


-4

Saya telah berhasil memperbaikinya dengan menggunakan:

brew unlink openssl && brew link openssl --force

Saya tidak yakin bagaimana ini berbeda dari pencopotan / peningkatan minuman yang saya lakukan di OpenSSL dalam upaya sebelumnya yang saya lakukan. Asumsi saya adalah bahwa operasi ini meninggalkan beberapa perpustakaan bersama yang "rusak" yang mencegahnya bekerja. Perhatikan bahwa ini juga memperbaiki masalah dengan memasang modul kriptografi python.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.