psycopg2 yükleme hatası, -lssl için kitaplık bulunamadı


127

koşarım

sudo pip install psycopg2

ve şöyle görünen bir grup çıktı alıyorum:

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

Ve sonunda diyor ki:

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

Easy_install çalıştırmak veya bunu kaynaktan yapmak, sonunda bana aynı hatayı veriyor (kütüphane ile ilgili kısım -lssl için bulunamadı).


Demleme kurulumunu (veya yükseltmeyi) çalıştırmak openssl aşağıdakileri verir

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

Biri bana yardım edebilir mi?


Yanıtlar:


285

MacOS Sierra 10.12'de (veya daha sonra, büyük olasılıkla) bunun için bir çözüm arayanlar için: Bunu komut satırı araçlarını yükleyerek düzelttim:

xcode-select --install

Daha sonra, pip install psycopg2 çalışmalı.

Aksi takdirde, brew's openssl ile bağlantı kurmayı deneyebilirsiniz:

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

brew aracılığıyla openssl ile kurulur. brew link openssl --forceArtık çalışmadığını unutmayın :

$ 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

@Macho aşağıda belirtildiği gibi, bu hala işe yaramazsa, --no-cachepip seçeneğini kullanmanız gerekebilir , örn.

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

5
Aslında xcode-select --installyeterli olabilir, bu sağlanan sistemi kullanmalıdır ssl. Yorumumu yukarıda güncelleyeceğim.
sas

13
xcode-select kurulumu sistem python'u için yeterince iyidir. Ancak sanal ortamlar için çalışmaz.
Andrew Martin

3
MacOS Sierra 10.12'yi yeni aldım pip install psycopg2ve aynı hata mesajını aldım : 'ld: -lssl için kitaplık bulunamadı'. xcode-select --installsorunu çözdü.
webtweakers

4
xcode-select --installbenim için Sierra'daki sorunu çözdü, sanal ortamlar için de
Danra

5
pip'in --no-cache seçeneğini kullanmanız gerekebilir. egenv LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip --no-cache install psycopg2
machow

59

Brew'den OpenSSL kurdum ( brew install openssl)

Aşağıdakiler benim için çalıştı:

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

26

Koşarken brew link opensslaşağıdaki mesajı alıyorum:

$ 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

Bu tavsiyeye uyarak pip, kullanmanız gereken komut şu şekildedir:

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

11

MacOS Catalina 10.15.4 ile benim için çalışan tek komut şuydu:

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

Mojave üzerinde de çalıştı. Teşekkür ederim!
sb9

Zamanımı kurtardın.
sinwoobang

9

Benim için işe yarayan şey, openssl'yi bağlama komutunda sağlanan ipucuydu,

$ 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

çoğu insan muhtemelen zsh kullanmıyor ama neyse, ben sadece echo 'export PATH = "/ usr / local / opt / openssl / bin: $ PATH"' >> ~ / .zshrc komutunu çalıştırdım ve bu sorunu çözmek için yeterliydi LDFLAGS ve CPPFLAGS ortam değişkenlerini değiştirme
Mark Aquino

9

Mojave'de bunları .bash_profile dosyasına ekledim

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"

daha sonra bir python 3.7.4 virtualenv'de psycopg 2.8.3'ü kurabildi.

Bu, xcode ve komut satırı araçlarını yeniden yükledikten sonra.

Yukarıdaki tüm cevaplar yardımcı oldu!


4

Bu, pip'in yüklenemediği yeni macOs sürümünün sorunudur cryptography. Sorunumu çözen şey, env'i yükleme komutuna sağlamak:

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

Örneğin , <YOUR COMMAND HERE>ile değiştirebilirsiniz .pip install cryptographypip install <SOMETHING THAT REQUIRES cryptography>

Bu makaleye atıfta bulunun: macOS Sierra önemli hatayı düzeltme: 'openssl / opensslv.h' veya 'openssl / aes.h' dosyası bulunamadı


4

Fish'i kullanarak, aşağıdaki iki komut, OpenSSL'yi Homebrew ile kurduktan sonra bu sorunu benim için çözdü.

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

brew info opensslGüncel bilgileri almak için kullanın .


1

Son zamanlarda High Sierra'da bu sorunu yaşadım, Python 3.7'yi bir virtualenv'e yeni yükledikten sonra.

Çözüm, psycopg2'nin daha sonraki bir sürümünü kullanmaktır. 2.7.7 sürümü çalıştı, 2.7.1 çalışmadı.


0

Aynı yazarlardan psycopg2kurmak yerine kurun psycopg2-binary:

pip install psycopg2-binary

Bu PyPI paketi hakkında belgelerin söylediği şey şudur:

PyPI'den psycopg2-binary paketini kurarak [...] bir derleyici veya harici kitaplık gerektirmeyen bağımsız bir paket elde edebilirsiniz:

$ pip install psycopg2-binary

İkili paket, geliştirme ve test etme için pratik bir seçimdir, ancak üretimde kaynaklardan oluşturulan paketin kullanılması tavsiye edilir.


0

Mojave'de bu sorunu yaşıyordum. Mojave, psycopg2'nin yüklenmesi gereken bir / usr / include dizini oluşturmaz. Bu açık değildi. Çözümü burada buldum: Xcode komut satırından nasıl güncellenir , hangi referanslar: https://forums.developer.apple.com/thread/104296


Birkaç not daha: Xcode ve komut satırı araçlarını kurdum. Xcode-select --install komutu, xcode-select -p ve echo $ gibi bunların zaten yüklü olduğunu gösterdi? 0 döndürdü, bu da yüklendiklerini gösterir. Pyenv ve pyenv-virtualenv kullanıyorum, bu yüzden psycopg2'yi sanal bir ortama kurdum.
ProfX

0

Aynı hatayı aldım ve cython'u kurduktan sonra çözülmesini sağladım


0

PyCharm'ı conda ortamından çalıştırmak, sorunumu kullanarak çözdü:

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

OpenSSL'yi MacPorts kullanarak kurdum, bu nedenle dizinler Brew'deki dizinler gibi değil.

sudo port install openssl

Dizinleri şu şekilde buldum:

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

Sonra değişkenleri dışa aktardım:

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

Ayrıca şunları da yapmanız gerekebilir:

xcode-select --install


-4

Bunu kullanarak düzeltmeyi başardım:

brew unlink openssl && brew link openssl --force

Bunun, daha önce yaptığım girişimlerde OpenSSL'de yaptığım brew kaldırma / yükseltmelerden ne kadar farklı olduğundan emin değilim. Benim varsayımım, bu işlemlerin, bunun çalışmasını engelleyen bazı "hatalı" paylaşılan kitaplıkları bıraktığıdır. Bunun ayrıca python şifreleme modülünün yüklenmesiyle ilgili sorunları da çözdüğünü unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.