psycopg2のインストールエラー、-lsslのライブラリが見つかりません


127

走る

sudo pip install psycopg2

そして、私は次のような出力をたくさん得ます:

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

そして最後にそれは言う:

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を実行したり、ソースから実行したりすると、最後に同じエラーが表示されます(-lsslにはライブラリに関する部分が見つかりません)。


brew install(またはupgrade)を実行すると、opensslは以下を生成します

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

誰かが私を助けてくれますか?


回答:


285

macOS Sierra 10.12(またはそれ以降の可能性が高い)でこれに対する解決策を探している人のために:コマンドラインツールをインストールしてこれを修正しました:

xcode-select --install

その後、動作するpip install psycopg2はずです。

そうでない場合は、brewのopensslとリンクすることもできます。

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

opensslはbrewを介してインストールされます。がbrew link openssl --force機能しないことに注意してください。

$ 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が以下に指摘するように--no-cache、pip のオプションを使用する必要があるかもしれません。例:

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

5
実際にxcode-select --installは、これで十分な場合がありますssl。これは、提供されたシステムを使用する必要があります。上記のコメントを更新します。
SAS

13
xcode-select installはシステムのpythonには十分です。ただし、仮想環境では機能しません。
Andrew Martin

3
macOS Sierra 10.12を入手したpip install psycopg2ばかりで、同じエラーメッセージ「ld:ライブラリが-lsslに見つかりません」を受け取りました。xcode-select --install問題を修正しました。
webtweakers

4
xcode-select --install私とシエラの仮想環境の問題を修正しました
Danra

4
pipの--no-cacheオプションを使用する必要がある場合があります。例env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" pip --no-cache install psycopg2
machow 2017

58

brewからOpenSSLをインストールしました(brew install openssl

以下は私のために働きました:

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

26

実行するbrew link opensslと、次のメッセージが表示されます。

$ 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

このアドバイスに従うと、pip次のコマンドを使用する必要があります。

$ 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

MacOS Catalina 10.15.4では、次のコマンドが私のために機能しました。

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

モハベにも取り組んだ。ありがとうございました!
sb9

あなたは私の時間を節約しました。
シンウバン

9

私にとってうまくいったのは、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

ほとんどの人はおそらくzshを使用しませんが、とにかく、echo 'export PATH = "/ usr / local / opt / openssl / bin:$ PATH"' >>〜/ .zshrcを実行しただけで、問題なく修正できましたLDFLAGSおよびCPPFLAGS環境変数の変更
マークアキノ

9

モハベでは、これらを.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"

その後、python 3.7.4 virtualenvにpsycopg 2.8.3をインストールできました。

これはxcodeとコマンドラインツールを再インストールした後です。

上記のすべての答えが役に立ちました!


4

これは、pipをインストールできない新しいmacOバージョンの問題ですcryptography。私の問題を修正したのは、envをinstallコマンドに提供することです。

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

あなたは置き換えることができ<YOUR COMMAND HERE>pip install cryptography、またはpip install <SOMETHING THAT REQUIRES cryptography>例えば。

この記事のクレジット:macOS Sierraの致命的なエラーの修正:「openssl / opensslv.h」または「openssl / aes.h」ファイルが見つかりません


4

Fishを使用して、HomebrewでOpenSSLをインストールした後、次の2つのコマンドでこの問題を解決しました。

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

brew info openssl最新の情報を取得するために使用します。


1

最近High Sierraでこの問題が発生し、virtualenvにPython 3.7をインストールしたばかりです。

解決策は、psycopg2の新しいバージョンを使用することです。バージョン2.7.7は機能しましたが、2.7.1は機能しませんでした。


0

同じ作者のをpsycopg2インストールする代わりに、をインストールしpsycopg2-binaryます。

pip install psycopg2-binary

これは、このPyPIパッケージに関するドキュメントの説明です。

PyPIからpsycopg2-binaryパッケージをインストールすることで、コンパイラや外部ライブラリを必要としないスタンドアロンパッケージを取得できます。

$ pip install psycopg2-binary

バイナリパッケージは、開発とテストの実用的な選択肢ですが、本番環境では、ソースからビルドされたパッケージを使用することをお勧めします。


0

私はモハベでこの問題を抱えていました。Mojaveは、psycopg2がインストールする必要がある/ usr / includeディレクトリを作成しません。これは明白ではありませんでした。私はここで解決策を見つけました :https : //forums.developer.apple.com/thread/104296を参照する コマンドラインからXcodeを更新する方法


さらにいくつか注意事項:Xcodeとコマンドラインツールをインストールしました。xcode-select --installコマンドは、xcode-select -pと同様に、それらがすでにインストールされていることを示し、$をエコーし​​ましたか?0が返されました。これは、それらがインストールされていることも示しています。私はpyenvとpyenv-virtualenvを使用しているので、psycopg2を仮想環境にインストールしました。
ProfX

0

私はこれと同じエラーがあり、インストールしたcythonをpipした後で解決することができました


0

conda環境からPyCharmを実行して、私の問題を次のように解決しました:

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

MacSSLを使用してOpenSSLをインストールしたため、ディレクトリはBrewのものとは異なります。

sudo port install openssl

私は次のようにしてディレクトリを見つけました:

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

次に、変数をエクスポートしました。

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

次のことも必要になる場合があります。

xcode-select --install


-4

私はそれを使ってそれを修正することができました:

brew unlink openssl && brew link openssl --force

これが、以前に試みたOpenSSLで行ったbrewのアンインストール/アップグレードとどのように異なるのかはわかりません。私の想定では、これらの操作により、「障害のある」共有ライブラリーの一部が残って、これが機能しなくなっていたということです。これにより、Python暗号化モジュールのインストールに関する問題も修正されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.