Installation von psycopg2 in virtualenv, wenn PostgreSQL nicht auf dem Entwicklungssystem installiert ist


74

Ist die Installation psycopg2in einem virtualenvMacBook Pro mit OS X 10.6 möglich, wenn PostgreSQL nicht auf meinem Entwicklungssystem installiert ist?

Wenn ich pip install psycopg2aus meinem heraus laufe virtualenv, habe ich den unten gezeigten Fehler erhalten.

Ich versuche, mit Django eine Verbindung zu einer Legacy-Datenbank auf einem Server herzustellen, und ich würde es vorziehen, PostgreSQL nach Möglichkeit nicht auf meinem Entwicklungssystem zu installieren.

Warum nicht PostgreSQL installieren?

Bei der Installation von PostgreSQL mit Homebrew ist ein Fehler aufgetreten. Ich habe Xcode4 - und nur Xcode4 - auf meinem MacBook Pro installiert und denke, dass dies mit dem Fehlen von gcc 4.0 zusammenhängt. Dies ist jedoch ein Problem für eine andere StackOverflow-Frage.

Update 8:37 Uhr am 12. April 2011: Ich möchte immer noch wissen, ob dies möglich ist, ohne PostgreSQL auf meinem MacBook Pro zu installieren. Ich lief jedoch brew updateund erzwang eine Neuinstallation von ossp-uuid mit brew install --force ossp-uuidund brew install postgresqlfunktioniert jetzt . pip install psycopg2Nachdem PostgreSQL erfolgreich installiert wurde, konnte ich es aus meiner virtuellen Umgebung heraus tun.

Fehler von pip install psycopg2

$ pip install psycopg2
Downloading/unpacking psycopg2
  Running setup.py egg_info for package psycopg2

    Error: pg_config executable not found.

    Please add the directory containing pg_config to the PATH
    or specify the full executable path with the option:

        python setup.py build_ext --pg-config /path/to/pg_config build ...

    or with the pg_config option in 'setup.cfg'.
    Complete output from command python setup.py egg_info:
    running egg_info

writing pip-egg-info/psycopg2.egg-info/PKG-INFO
writing top-level names to pip-egg-info/psycopg2.egg-info/top_level.txt
writing dependency_links to pip-egg-info/psycopg2.egg-info/dependency_links.txt
warning: manifest_maker: standard file '-c' not found

Error: pg_config executable not found.

Please add the directory containing pg_config to the PATH
or specify the full executable path with the option:

    python setup.py build_ext --pg-config /path/to/pg_config build ...

or with the pg_config option in 'setup.cfg'.

----------------------------------------
Command python setup.py egg_info failed with error code 1
Storing complete log in /Users/matthew/.pip/pip.log

Vorläufige Nachforschung

Nachfolgend sind die Artikel aufgeführt, die ich als vorläufige Recherche gelesen habe:


1
Die richtige Antwort finden Sie hier: stackoverflow.com/questions/5420789/…
Osmose

Die Antwort dieser Frage ist für debian / ubuntu, hilft also nicht, wenn Sie osx verwenden.
Tim

Stellen Sie auf Centos 6 und Postgres 9.1 den richtigen Pfad zu pg_config in Ihrer virtuellen Umgebung ein:export PATH=/usr/pgsql-9.1/bin:"$PATH"
elim

2
Die Installation von PostgreSQL sollte keine Voraussetzung für die Entwicklung von Django sein. Wir müssen dies tun, da in unserer Datei "resources.txt" für den Server psycopg aufgelistet ist, ohne dass wir es jemals lokal verwenden. Es ist alles etwas zu eng gekoppelt und verursacht viel Konfigurationskummer.
Alper

Wow, keine einzige Antwort auf diesen Beitrag bezüglich der Besonderheiten einer virtuellen Umgebung auf einem Mac-Setup. Korrigiere mich, wenn ich falsch liege.
John Heights

Antworten:


50

psycopg hängt vom pg_configBefehl ab, und wenn Sie ihn nicht haben, können Sie psycopg nicht installieren.

Wenn die Systeminstallation für Sie ein Problem darstellt, warum versuchen Sie nicht, PostgreSQL zu kompilieren und generierte bin-Dateien in Ihren $ PATH aufzunehmen? Mögen:

export PATH=/path/to/compiled/postgresql/bin:"$PATH"
pip install psycopg2

4
"pip install psycopg" funktioniert nicht mehr (Fehler 404), verwenden Sie stattdessen "pip install psycopg2" .
Juande Carrion

4
Wenn Sie auf dem Mac sind. Verwenden Sie dann den Befehl "find pg_config", um den Pfad zu finden. In meinen OSX Mavericks mit dem von Port installierten Postgresql lautet der Pfad / opt / local / lib / postgresql92 / bin
Fernando Silva

Funktioniert auch unter Windows! +1
Eduard Luca

locate postgreskann helfen, den Pfad zu Ihrem kompilierten postgreSQL-Bin zu finden
user2761030

Ich habe pg_config nicht und bin schon immer mit psycopg2 unterwegs. Dies ist veraltet.
std''OrgnlDave


19
brew install postgresql

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

export CPPFLAGS="-I/usr/local/opt/openssl/include"

pip3 install psycopg2

5
Aus irgendeinem Grund funktionierte dies für mich unter Mac OS X, als einige andere Lösungen dies nicht taten. Ich hatte bereits postgresql und pg_config auf meinem PATH installiert, bekam aber immer noch den gleichen Fehler bei der Installation von psycopg2. Die beiden exportZeilen haben es für mich gelöst.
George Bezerra

2
Nach mehreren Stunden des Kampfes mit diesem Fehler löste diese Lösung mein Problem. Vielen Dank.
BobyCloud

Arbeitete unter MacOS für mich, danke!
DjangoBlockchain

Kann jemand erklären, warum das funktioniert? Was hat openssl hier zu tun?
Ananta K Roy

11
apt-get install libpq-dev

hat mir auch beim Debian Squeeze geholfen. Danach installieren Sie psycopg2. Ich hatte das Problem, dass pg_config kein Problem gefunden hat, als ich meine Umgebung auf Heroku eingerichtet habe. Jetzt funktioniert es einwandfrei.


5

Sie müssen das python-devPaket installieren , um Python-Erweiterungen wie z psycopg2. Ich weiß nicht, wie man Pakete auf einem Mac installiert, aber ich führe die folgenden Befehle aus, um ein Python-Paket auf meinem Ubuntu-Computer zu installieren.

sudo apt-get install python-dev 

Oder

sudo apt-get install python3-dev

wenn Sie Python3.x verwenden.

Führen Sie nach Abschluss der Installation den folgenden Befehl in Ihrer virtuellen Umgebung aus.

pip install psycopg2

4

Sie müssen nicht das vollständige PostgreSQL installieren: Sie benötigen nur die clientseitigen Bibliotheken.


1
Haben Sie eine Empfehlung zur Installation der clientseitigen PostgreSQL-Bibliotheken unter OS X?
Matthew Rankin

Ich habe keine Empfehlung, ich bin kein OS X-Benutzer. Der Fink-Build verwendet postgresql90-dev zum Erstellen (wahrscheinlich für die .h) und postgresql90-shlibs (wahrscheinlich für die libpq), aber ich weiß nicht, wie ich diese Option für andere Pakete einstufen soll (von denen ich nichts weiß). oder erstellen Sie die libpq aus dem Quellcode. Ref. fink.cvs.sourceforge.net/fink/dists/10.4/unstable/main/finkinfo/…
Piro

2

Ich habe es in MAC OSX gelöst mit:

$ wget https://ftp.postgresql.org/pub/source/v9.5.3/postgresql-9.5.3.tar.bz2
$ tar xfv postgresql-9.5.3.tar.bz2
$ cd postgresql-9.5.3
$ ./configure
$ make
$ cd src/bin/pg_config
$ export PATH=`pwd`:"$PATH"
$ pip install psycopg2

Dies scheint die ursprüngliche Frage richtig zu beantworten.
rwenz3l

Wird pip libpq statisch in psycopg2 kompilieren, mit anderen Worten, kann die postgresql-Installation danach entfernt werden?
Raarts

als Alternative einfach tunpip install psycopg2-binary
Vladimir S.

1

Mit der Methode, die Sie in Ihrem Update vom 12. April beschrieben haben, konnte ich PostgreSQL (+1) installieren. Beachten Sie, dass ich ursprünglich Python 2.7.1 (32 Bit) ausgeführt habe und Homebrew mehrere Fehler und Warnungen bezüglich der Verwendung einer 32-Bit-Version von Python ausgegeben hat. Ich habe seitdem die 64/32 Bit Version von 2.7.1 gewechselt und es funktioniert wie ein Champion.

In Bezug auf das pyscopg2 konnte ich es von der Quelle aus in meine virtuelle Umgebung installieren, indem ich setup.cfg bearbeitete. Ich habe pg_config so eingestellt, dass der Pfad im Keller von Homebrew korrigiert wird (pg_config = / usr / local / Cellar / postgresql / 9.0.4 / bin / pg_config). Nachdem ich die Änderungen gespeichert hatte, führte ich python setup.py install ohne Probleme aus. Es ist erwähnenswert, dass ich die Standard-Python-Einstellung des Mac nicht auf 32 Bit eingestellt habe. Ich habe das neue 64-Bit von Anfang bis Ende verwendet.

Nachdem ich mir einige Dokumentationen angesehen habe, denke ich, wenn ich den postgresql-Pfad von homebrew zum Systempfad hinzugefügt hätte, hätte ich pip verwenden können, um ihn zu installieren.

Referenz:
http://favosdream.blogspot.com/2009/09/make-psycopg2-and-readline-work-in-snow.html

Update 6-8-2011:
Beim Portieren eines unter OS X geschriebenen Projekts nach Windows 7 stellte ich fest, dass ich PostgreSQL auch unter Windows installieren musste. Dies führte dazu, dass ein anderer Benutzer auf meinem Startbildschirm erstellt wurde und andere Dinge, die mir einfach nicht gefallen haben. Beim Graben habe ich hier Windows-Treiber für PostgreSQL gefunden . Ich habe seitdem das vollständige PostgreSQL deinstalliert und die ODBC-Treiber installiert, die bisher hervorragend funktionieren.

Um die ursprüngliche Frage zu beantworten, habe ich nach einigem Graben hier den entsprechenden ODBC für OS X gefunden . Ich hatte noch keine Gelegenheit, sie auszuprobieren, aber das Konzept funktioniert unter Windows 7 sehr gut. Ich werde es aktualisieren, wenn ich die Möglichkeit habe, sie auszuprobieren. Bis dahin hoffe ich, dass dies hilft.


Unter Windows müssen Sie Postgresql nicht installieren, sondern haben lediglich die Binärdateien in Ihrem Pfad. Dies kann erreicht werden, indem Sie eine Zip-Datei der Binärdateien enterprisedb.com/products-services-training/pgbindownload herunterladen und dieses Verzeichnis Ihrem Pfad hinzufügen (dh die Umgebungsvariable PATH ändern). Kopieren Sie sie an einen sicheren Ort, bevor Sie den Pfad hinzufügen, um das Leben zu erleichtern!
Cory Dolphin

@wcdolphin Danke für die Eingabe. Das hätte das Leben sicher leichter gemacht.
Adam Lewis

0

Da ich die postgresql-Datenbank nie auf diesem Server installieren musste, habe ich die folgenden Bibliotheken unter Ubuntu 14_04 installiert, bevor pip install psycopg2 auf demselben Server ausgeführt wurde

apt-get installiert libpq-dev python-dev und führt dann pip install psycopg2 in der virtuellen Umgebung aus.

Ausgabe Sammeln von psycopg2 Verwenden von zwischengespeichertem psycopg2-2.6.1.tar.gz Erstellen von Rädern für gesammelte Pakete: psycopg2 Ausführen von setup.py bdist_wheel für psycopg2 Gespeichert im Verzeichnis: /root/.cache/pip/wheels/e2/9a/5e/7b620848bbc7f2cfcafc Psycopg2 erstellt Gesammelte Pakete installieren: Psycopg2 Psycopg2-2.6.1 erfolgreich installiert


0

Verwenden Sie pip install psycopg2-binary, es hat bei mir funktioniert, wenn pip install psycopg2es nicht funktioniert hat.


0

Alles von oben funktioniert bei mir nicht (OS Catalina 10.15.1)

Es gab einen Konflikt mit Klassik postgresund homebrewVersion. Bitte löschen Sie die Homebrew-Version per Befehl

$ brew uninstall postgresql

und installieren Sie es dann von der offiziellen Website :

$ sudo mkdir -p /etc/paths.d && echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

Es ist aktuell für eine einfache psycopg2Installation oder ein django-herokuPaket.


0

Ich weiß, dass Sie nach einer Entwicklungsumgebung fragen, aber wenn Sie auf einem Server bereitstellen, sagen Sie Heroku. Fügen Sie einfach die folgende Zeile in die Anforderung.txt Ihres Projekts ein.

django-heroku == 0.3.1

Da dieses Paket selbst die erforderlichen Pakete wie psycopg2 bei der Serverbereitstellung installiert .


0

Ich habe dieses Problem zufällig gelöst mit:

brew install psycopg2

anstatt

pip install psycopg2

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.