Не вдається встановити пакунок psycopg2 через pip install ... Це через Сьєрру?


80

Я працюю над проектом однієї зі своїх лекцій, і мені потрібно завантажити пакет psycopg2, щоб працювати з базою даних postgresql, яка використовується. На жаль, коли я намагаюся встановити pycopg2, з’являється така помилка:

ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang' failed with exit status 1
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command '/usr/bin/clang' failed with exit status 1

Хтось знає, чому це відбувається? Це тому, що Сьєрра не підтримувала деякі пакети? Спасибі заздалегідь!

Відповіді:


306

Я виправив це, встановивши Інструменти командного рядка

xcode-select --install

потім встановіть openssl через Homebrew і вручну зв’яжіть мій встановлений homebrew openssl з pip:

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

на macOS Sierra 10.12.1


4
Мені було достатньо встановити xcode, щоб він запрацював. Хороший вигляд.
Адам Старр,

Я також отримав його після встановлення dev-tools
BBischof

Працював і у мене. Дуже дякую!
Микола Марінов

для мене теж працював, дякую, і яке буде постійне рішення?
Аджай Кумар,

52

Спробуйте встановити його за допомогою:

pip install psycopg2-binary

Це взаємозамінне з psycopg2?
pkaramol

@pkaramol так, це так
Dheeraj Pande

Переконайтеся, що ваш піп також pip install -U pipvcvarsall.bat not found
Ендрю Аллен

4
pypi.org/project/psycopg2-binary "Бінарний пакет є практичним вибором для розробки та тестування, але у виробництві рекомендується використовувати пакет, побудований із джерел."
Микола Марінов

22
brew install postgresql

Якщо postgresql існує, то запустіть:

brew upgrade postgresql
sudo pip install psycopg2

У ВЕНВ:

env LDFLAGS='-L/usr/local/lib -L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib' pip install psycopg2==2.8.4

Якщо вам потрібно використовувати лише команду pip install psycopg2експортувати шлях у macOSX:

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

2
Це ідеально для мене працювало, використовуючи brew install, а потім введіть "env =" у моєму терміналі. Однак це повна темна магія, хтось може пояснити, чому це було потрібно і що це насправді зробило? Дякую! Для інформації, у травні 2020 року версія Mac - Catalina.
Себ

12

Натрапляючи на подібну проблему, використовуючи pipenv install psycopg2:

ld: бібліотека не знайдена для -lssl ',' clang: помилка: помилка команди компонувача з кодом виходу 1 (використовуйте -v, щоб побачити виклик) ', "помилка: команда' clang 'не вдалася зі статусом виходу 1",'
--- ------------------------------------ ',

Я спробував усі наведені вище рекомендації, і жодна з них не спрацювала. Кілька місяців тому я зіткнувся з цією проблемою в іншому virtualenv і згадав, як прочитав щось про це, як випуск версії psycopg2 . Тож я спробував встановити з 2.7.1 та 2.8.3, і обидва все одно не вдалося. Якось працювала версія 2.7.7:

pipenv install psycopg2==2.7.7

Як би хотілося, щоб я встиг зазирнути далі, щоб зрозуміти, що насправді відбувається. Але наразі я цього не роблю, і це спрацювало.


12

Я виправив це за допомогою:

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

2
Це спрацювало і на мене, на Каталіну. Я використовую версію Python 3.8.2, де я pyenvкерую середовищами та інсталяціями Python. Ваше рішення спрацювало від мене, але я виконав: $ python -m pip install psycopg2замість того, як використовували інші $ pip install psycopg2, а ми могли б не знати, який інтерпретатор ми використовуємо та встановлюємо. Це забезпечить pip, який ми будемо використовувати та встановлювати з моїм інтерпретатором python за замовчуванням, який для мене є версією 3.8.2.
Angelito

1
Працював і у мене
Грег Єремеєв

Цей експорт потрібно буде назавжди додати до мого .bashrc?
Рафаель Гомес, Франциско,

6
  1. Встановіть / оновіть інструменти розробника Xcode

    xcode-select --install
    
  2. Запит шляху postgres

    find / -name pg_config  2>/dev/null
    
  3. Встановіть psycopg2, використовуйте шлях, який ви отримали на кроці 2 . Шахта була '/usr/local/Cellar/postgresql/9.5.0/bin/pg_config'

    PATH=$PATH:/usr/local/Cellar/postgresql/9.5.0/bin/ pip install psycopg2
    

2

Це працює для мене (на терміналі):

find / -name pg_config  2>/dev/null

потім додайте шлях:

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.5/bin/

версія ОС: MacOs Sierra

Сподіваюся, це допоможе.


2
Це передбачає, що ви встановили Postgres.app на своєму mac і не використовуєте порти mac, домашню заварку, інсталятор EnterpriseDB або інший спосіб упаковки / інсталяції сервера postgresql на вашому mac, так?
скот

Окрім того, початкове запитання стосувалося відсутності бібліотеки -lssl, а потім "clang", але не інструмента pg_config. Clang знаходиться в Xcode, інша справа - у бібліотеці openssl. користувач @zganger має правильну відповідь на це запитання. (Я прийшов сюди, шукаючи проблему pg_config, тож ваша відповідь мені допомогла, але це не те, що було задане питання).
скот

1

Схоже, пакет openssl не встановлений. Спробуйте встановити його pip installще раз. Я не користувач macos, але я вважаю, що це brewспрощує управління пакетами на цій платформі.

Можливо, вам також доведеться встановити пакети розробки Python та postgresql.


1

Старий, але для людей, які використовують pipenv, я вирішив цю проблему, переглянувши мій графік залежностей pipenv graph --reverseі помітивши, що це потрібно psycopg2-binary==2.8.2. Запуск pipenv install psycopg2-binaryвирішив проблему.


1
env LDFLAGS="-I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib" \
brew upgrade openssl

Тоді я міг би встановити psycopg2


0

Якщо ви не хочете фартувати brew, ось "рішення лише для MacOS":

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

Після цього pipіз задоволенням встановить psycopg2з джерела. Працює з "Mojave" (macOS 10.14).



-4

Відповідно до поточної / todey умови - єдиним рішенням для цього є - видалити ваш python 3.8 або 3.9 або так далі і встановити ptyhon 3.7.4


Враховуючи це запитання, яке було задано у 2016 році, я дуже сумніваюся, що «видалити Python 3.8 / 3.9 та встановити Python 3.7» є рішенням проблеми OP
Девід Бак,

Це так неправильно. Я побіг відповідь @ Apurva, і це спрацювало для мене. Я використовую Каталіну і маю кілька версій Python. stackoverflow.com/a/58722268/3255762
Анджеліто
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.