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?

tscizzle
sumber
Kemungkinan duplikat python menginstal lxml di mac os 10.10.1
IamAshay

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
sas
sumber
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
IamAshay
sumber
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"
André Borie
sumber
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
Chris Ford
sumber
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
Isaac Philip
sumber
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!

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

Envil
sumber
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.

Yngve Høiseth
sumber
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.

dixon1e
sumber
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.

Flimm
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

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

Nili Waypa
sumber
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

'''

carl du Plessis
sumber
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
DjAlan
sumber
0

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

bekerja untuk saya

melampaui titik mengambang
sumber
-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.

ecordo
sumber