Ich kann einige Python-Bibliotheken (PIL, psycopg2), die ich gerade mit MacPorts installiert habe, nicht importieren. Ich habe diese Foren durchsucht und versucht, meine PATH
Variable anzupassen, um ~/.bash_profile
das Problem zu beheben, aber es hat nicht funktioniert.
Ich habe den Speicherort von PIL und psycopg2 zu hinzugefügt PATH
.
Ich weiß, dass Terminal eine Python-Version in verwendet /usr/local/bin
und nicht die von MacPorts unter installierte /opt/local/bin
.
Muss ich die MacPorts-Version von Python verwenden, um sicherzustellen, dass sich PIL und psycopg2 auf sys.path befinden, wenn ich Python im Terminal verwende? Sollte ich zur MacPorts-Version von Python wechseln oder verursacht das mehr Probleme?
Falls es hilfreich ist, hier noch weitere Fakten:
PIl und psycopg2 sind installiert in/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
which python
kehrt zurück/usr/bin/python
$ echo $PATH
gibt zurück (ich habe jeden Pfad zur leichteren Lesbarkeit getrennt):
:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/
:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
:/opt/local/bin
:/opt/local/sbin
:/usr/local/git/bin
:/usr/bin
:/bin
:/usr/sbin
:/sbin
:/usr/local/bin
:/usr/local/git/bin
:/usr/X11/bin
:/opt/local/bin
gibt in Python >>> sys.path
Folgendes zurück:
/Library/Frameworks/SQLite3.framework/Versions/3/Python
/Library/Python/2.6/site-packages/numpy-override
/Library/Frameworks/GDAL.framework/Versions/1.7/Python/site-packages
/Library/Frameworks/cairo.framework/Versions/1/Python
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload
/Library/Python/2.6/site-packages
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode
Ich freue mich über jede Kritik und jeden Kommentar, falls mir einer der oben genannten Punkte dumm oder schlecht durchdacht vorkommt. Ich bin neu in diesem Bereich. Danke!
Ausführen von OSX 10.6.5 auf einem MacBook Pro, Aufrufen von Python 2.6.1 vom Terminal
Antwort1
Verwenden Sie nach der Installation von Python den Befehl „Notes“ (ändern Sie python26 in die von Ihnen installierte Version):
$ port notes python26
Sie werden einige Variationen der Empfehlungen nach der Installation sehen:
python26 has the following notes:
To fully complete your installation and make python 2.6 the default, please
run:
sudo port install python_select
sudo port select python python26
Sie sollten Python installieren python_select
und dann python26
als Standard auswählen. Wenn Sie PIL und pyscopg2 tatsächlich über MacPorts installiert haben (also so etwas wie port install py26-psycopg2 py26-pil
), müssen Sie nicht angebenirgendetwasin PYTHONPATH
. Sie müssen die /opt/local/Library/Frameworks/…
Verzeichnisse auch nicht zu Ihrem hinzufügen PATH
. Nachdem Sie dies getan haben, which python
sollte zurückgeben /opt/local/bin/python
. Von MacPorts in installierte Python-Ports /opt/local/Library/Frameworks/Python.framework
befinden sich bereits in sys.path
für MacPorts Python. Sie haben sie vorher nicht gefunden, weil Sie das System Python (also ) verwendet haben /usr/bin/python
, das keine Kenntnis von MacPorts Python-Paketen hat.
Antwort2
ICHdenkenIch habe die Antwort auf meine Frage gefunden. Ich habe meine Datei ~/.bash_profile bearbeitet, um sie einzuschließen
export PYTHONPATH=
und dann habe ich alle vorhandenen Pfade hinzugefügt in sys.path
:
export PYTHONPATH=/Library/Frameworks/SQLite3.framework/Versions/3/Python:/Library/Python/2.6/site-packages/numpy-override:/Library/Frameworks/GDAL.framework/Versions/1.7/Python/site-packages:/Library/Frameworks/cairo.framework/Versions/1/Python:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages:/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old:/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload:/Library/Python/2.6/site-packages:/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC:/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages:
und dann habe ich die Pfade zu den Verzeichnissen angehängt, in denen MacPorts Sachen installiert hat:
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages:
Wenn ich jetzt sys.path drucke, sind die Pfade zu den MacPorts-Installationsverzeichnissen enthalten:
/Library/Frameworks/SQLite3.framework/Versions/3/Python
/Library/Python/2.6/site-packages/numpy-override
/Library/Frameworks/GDAL.framework/Versions/1.7/Python/site-packages
/Library/Frameworks/cairo.framework/Versions/1/Python
/Library/Frameworks/SQLite3.framework/Versions/3/Python
/Library/Python/2.6/site-packages/numpy-override
/Library/Frameworks/GDAL.framework/Versions/1.7/Python/site-packages
/Library/Frameworks/cairo.framework/Versions/1/Python
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload
/Library/Python/2.6/site-packages
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/PyObjC
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/wx-2.8-mac-unicode
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages
Jetzt
>>> import PIL
Und
>>> import psycopg2
funktionieren einwandfrei.