web-dev-qa-db-ja.com

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

「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(またはアップグレード)opensslを実行すると、以下が生成されます

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

誰も私を助けることができますか?

77
tscizzle

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

brew経由でopensslをインストールします。 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
198
sas

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"
19
André Borie

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

次は私のために働いた:

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

私のために働いたのは、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
2
Isaac Philip

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

その後、psycopg 2.8.3をpython 3.7.4 virtualenv。

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

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

1
pmneve

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

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

1
dixon1e

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

0
ProfX

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最新情報を取得します。

0
Yngve Høiseth

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

pip install psycopg2-binary

これは、ドキュメントがこのPyPIパッケージについて述べていることです:

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

$ pip install psycopg2-binary

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

0
Flimm