So erhalten Sie PATH für Python richtig, nachdem Sie MacPorts installiert haben

So erhalten Sie PATH für Python richtig, nachdem Sie MacPorts installiert haben

Ich kann einige Python-Bibliotheken (PIL, psycopg2), die ich gerade mit MacPorts installiert habe, nicht importieren. Ich habe diese Foren durchsucht und versucht, meine PATHVariable anzupassen, um ~/.bash_profiledas 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/binund 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 pythonkehrt zurück/usr/bin/python

$ echo $PATHgibt 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.pathFolgendes 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_selectund dann python26als 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 pythonsollte zurückgeben /opt/local/bin/python. Von MacPorts in installierte Python-Ports /opt/local/Library/Frameworks/Python.frameworkbefinden sich bereits in sys.pathfü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.

verwandte Informationen