4 Stimmen

Wie behebt man die fehlerhafte BSDDB-Installation im Standard-Python-Paket unter Mac OS X 10.5 Leopard?

Führen Sie die folgenden Schritte bei der Standard-Python-Installation unter Mac OS X 10.5 (Leopard) mit Developer Tools aus:

noel ~ : python

Python 2.5.1 (r251:54863, Jan 13 2009, 10:26:13) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import bsddb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/bsddb/__init__.py", line 51, in <module>
import _bsddb
ImportError: No module named _bsddb

schön, nicht wahr? Wie kann ich das beheben, ohne aufzugeben und mein eigenes Python-Paket zu installieren/konfigurieren/verwalten, wie es in Der Vorschlag von TMNC oder MacPorts usw. verwenden?

Editar

Ich habe das Problem umgangen, indem ich Python2.4 und BSDDB über MacPorts installiert habe.

Meine Frage ist immer noch: Warum ist die Standardinstallation kaputt und ist es möglich, sie zu reparieren.

0 Stimmen

Da die Version des Anbieters kaputt ist, ist das eine extrem gute Erklärung dafür, warum Sie eine separate Version behalten wollen, die Sie selbst pflegen und nicht der Anbieter. Benutzen Sie MacPorts.

6voto

Alex Martelli Punkte 805329

1 Stimmen

Ja, das ist mir auch schon aufgefallen. Es ist nicht die Antwort, nach der ich suche, da man eine andere Version von bsddb selbst installieren/verwalten muss. Ich suche nach einer Möglichkeit, die Standardinstallation von bsddb zu reparieren.

0 Stimmen

Das ist ein guter Vorschlag... es ist nicht so, dass Sie eine andere Version von bsddb installieren/verwalten, Sie installieren die erste, die funktioniert :-) Es gibt nirgendwo auf dem System _bsddb, also werden Sie etwas tun müssen, um die fehlende Funktionalität zu erzeugen, die benötigt wird.

0 Stimmen

Sie haben Recht, dass es kein _bsddb-Modul gibt, aber es gibt ein bsddb-Modul. Ich bitte um eine technische Erklärung, warum es _bsddb gibt, und ob es möglich ist, das Verhalten zu ändern, um diese bsddb zu verwenden.

2voto

rafaelvalle Punkte 6083

Der Patch hat bei mir nicht funktioniert, und ich musste den Ordner bsddb in /System/Library/Frameworks/Python.framework/Versionen/2.7/lib/python2.7

mit dem bsddb3 in:

/usr/local/lib/python2.7/site-packages/bsddb3

Sichern Sie vorsichtshalber den Ordner bsddb.

2voto

rhoerbe Punkte 433

Dieses Problem besteht auch unter OSX 10.8. Ich konnte bsddb3 nicht mit macports py-bsddb3 in eine Virtualenv installieren. Was sehr einfach war und funktionierte, ist:

  • db53 von macports installieren
  • bsddb3-Quellcode herunterladen und entpacken ( https://pypi.python.org/pypi/bsddb3/6.1.0 )
  • sudo python setup.py -berkeley-db-incdir=/opt/local/include/db53 -berkeley-db-libdir=/opt/local/lib/db53 installieren

2 Stimmen

Für alle, die Gebräu verwenden, lautet die entsprechende Formel berkeley-db

0voto

lef Punkte 9

Eine Lösung, die ich gefunden habe, besteht darin, ActivePython zu installieren, in die Bibliothek zu gehen (zu finden in /Library/Frameworks/Python.framework/Versions/....Ihre Version hier..../lib) und die folgende Datei zu kopieren und einzufügen _bsddb.so Datei in mein OS X 10.6 natives Python 2.6 Installationsverzeichnis (/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/).

Damit war das Problem der fehlenden _bsddb behoben und ich hatte eine funktionierende Version von bsddb in meiner nativen Python-Installation. Dann habe ich einfach ActivePython deinstalliert ( Anweisungen hier )

0voto

Teddy Punkte 1

Die Fehlermeldung lautete "Kein Modul namens _bsddb". Es stellte sich heraus, dass ich meine bsddb nicht aktualisieren musste. Ich habe die in Windows erstellte .pkl-Datei verwendet. Nachdem ich die pkl-Datei umbenannt hatte, um sie aus dem Weg zu räumen, erstellte Mac OSX Python eine neue .pkl.db-Datei, und jetzt funktioniert sie perfekt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X